JP2023509592A - ビデオコーディングのための方法、装置およびコンピュータプログラム - Google Patents

ビデオコーディングのための方法、装置およびコンピュータプログラム Download PDF

Info

Publication number
JP2023509592A
JP2023509592A JP2022538831A JP2022538831A JP2023509592A JP 2023509592 A JP2023509592 A JP 2023509592A JP 2022538831 A JP2022538831 A JP 2022538831A JP 2022538831 A JP2022538831 A JP 2022538831A JP 2023509592 A JP2023509592 A JP 2023509592A
Authority
JP
Japan
Prior art keywords
sample
block
entry
history
current
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2022538831A
Other languages
English (en)
Other versions
JP7342275B2 (ja
Inventor
シャオジョン・シュ
シャン・リュウ
Original Assignee
テンセント・アメリカ・エルエルシー
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by テンセント・アメリカ・エルエルシー filed Critical テンセント・アメリカ・エルエルシー
Publication of JP2023509592A publication Critical patent/JP2023509592A/ja
Application granted granted Critical
Publication of JP7342275B2 publication Critical patent/JP7342275B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/43Hardware specially adapted for motion estimation or compensation
    • H04N19/433Hardware specially adapted for motion estimation or compensation characterised by techniques for memory access
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

Figure 2023509592000001
本開示の態様は、ビデオエンコーディング/デコーディングのための方法および装置を提供する。いくつかの例では、ビデオデコーディングのための装置は処理回路を含む。処理回路は、現在のブロックの再構成に使用するための参照サンプルメモリ内で利用可能なサンプル値を有するエリアを決定する。さらに、処理回路は、単一値ストリングモードの以前に再構成されたサンプルの位置を格納するための履歴ベースのリストを更新する。位置はエリア内に制限される。次いで、処理回路は、履歴ベースのリストに基づいて、現在のブロック内の単一値ストリングモードのストリングを再構成する。

Description

参照による組み込み
本出願は、2020年10月16日に出願された米国仮出願第63/092,718号「STRING MATCHING WITH A SINGLE VALUE FROM REFERENCE LOCATIONS」に基づく優先権の利益を主張する、2021年5月27日に出願された米国特許出願第17/332,903号「METHOD AND APPARATUS FOR VIDEO CODING」に基づく優先権の利益を主張する。先行出願の開示全体は、参照によりその全体が本明細書に組み込まれる。
本開示は、一般的に、ビデオコーディングに関連する実施形態を説明する。
本明細書で提供される背景技術の説明は、本開示の文脈を一般的に提示することを目的としている。この背景技術の欄に記載されている限りにおける、本発明者らの研究、ならびに、さもなければ出願時における先行技術として認められない説明の態様は、いずれも本開示に対する先行技術として明示的にも暗示的にも認められない。
ビデオコーディングおよびビデオデコーディングは、動き補償を伴うインターピクチャ予測を用いて行われうる。非圧縮デジタルビデオは、一連のピクチャを含むことができ、各ピクチャは、例えば1920×1080の輝度サンプルおよび関連する色差サンプルの空間次元を有する。一連のピクチャは、例えば毎秒60ピクチャまたは60Hzの固定または可変のピクチャレート(非公式にはフレームレートとしても知られる)を有することができる。非圧縮ビデオは、具体的なビットレート要件を有する。例えば、サンプルあたり8ビットの1080p60 4:2:0ビデオ(60Hzのフレームレートで1920×1080の輝度サンプル解像度)は、1.5Gbit/sに近い帯域幅を必要とする。1時間分のそのようなビデオは、600ギガバイトを超える記憶空間を必要とする。
ビデオコーディングおよびビデオデコーディングの1つの目的は、圧縮によって入力ビデオ信号の冗長性を低減させることでありうる。圧縮は、前述の帯域幅および/または記憶空間要件を、場合によっては2桁以上低減させるのに役立ちうる。可逆圧縮と非可逆圧縮の両方、およびそれらの組み合わせを使用することができる。可逆圧縮とは、原信号の正確なコピーを圧縮された原信号から再構成することができる技術を指す。非可逆圧縮を使用する場合、再構成された信号は原信号と同一ではない可能性があるが、原信号と再構成された信号との間の歪みは、再構成された信号を意図された用途に役立てるのに十分なほど小さい。ビデオの場合、非可逆圧縮が広く採用されている。耐えられる歪みの量は用途に依存し、例えば、一定の消費者ストリーミング用途のユーザは、テレビ配信用途のユーザよりも高い歪みを容認しうる。達成可能な圧縮比は、許容できる/耐えられる歪みが高いほど高い圧縮比を得ることができること、を反映することができる。
ビデオエンコーダおよびビデオデコーダは、例えば、動き補償、変換、量子化、およびエントロピーコーディングを含む、いくつかの広範なカテゴリからの技術を利用することができる。
ビデオコーデック技術は、イントラコーディングとして知られる技術を含みうる。イントラコーディングでは、サンプル値は、以前に再構成された参照ピクチャからのサンプルまたは他のデータを参照せずに表される。いくつかのビデオコーデックでは、ピクチャはサンプルのブロックに、空間的に細分される。サンプルのすべてのブロックが、イントラモードでコーディングされる場合、そのピクチャは、イントラピクチャでありうる。イントラピクチャおよび独立したデコーダリフレッシュピクチャなどのそれらの派生ピクチャは、デコーダ状態をリセットするために使用されえ、したがって、コーディングされたビデオビットストリームおよびビデオセッション内の最初のピクチャとして、または静止画像として使用されうる。イントラブロックのサンプルは、変換を受けることができ、変換係数は、エントロピーコーディングの前に量子化されうる。イントラ予測は、変換前領域におけるサンプル値を最小化する技術でありうる。場合によっては、変換後のDC値が小さいほど、およびAC係数が小さいほど、エントロピーコーディング後のブロックを表すための所与の量子化ステップサイズで必要とされるビット数が少なくなる。
例えば、MPEG-2生成コーディング技術から知られているような従来のイントラコーディングは、イントラ予測を使用しない。しかしながら、いくつかのより新しいビデオ圧縮技術は、例えば、空間的に隣接し、デコーディング順序で先行する、データブロックのエンコーディングおよび/またはデコーディング中に取得された周囲のサンプルデータおよび/またはメタデータから試行する技術を含む。そのような技術を、これ以降、「イントラ予測」技術と称する。少なくともいくつかの場合において、イントラ予測は、再構成中の現在のピクチャのみからの参照データを使用し、参照ピクチャからの参照データは使用しないことに留意されたい。
イントラ予測には、多くの異なる形態がありうる。そのような技術のうちの2つ以上が所与のビデオコーディング技術において使用されうる場合、使用される技術は、イントラ予測モードでコーディングされうる。いくつかの場合には、モードはサブモードおよび/またはパラメータを有することができ、それらを個別にコーディングするか、またはモードのコードワードに含めることができる。所与のモード、サブモード、および/またはパラメータの組み合わせにどのコードワードを使用するかは、イントラ予測を介したコーディング効率向上に影響を与える可能性があり、そのため、コードワードをビットストリームに変換するために使用されるエントロピーコーディング技術も影響を与える可能性がある。
イントラ予測の或るモードは、H.264で導入され、H.265で改良され、共同探索モデル(JEM)、多用途ビデオコーディング(VVC)、およびベンチマークセット(BMS)などのより新しいコーディング技術でさらに改良された。予測子ブロックは、すでに利用可能なサンプルに属する隣接サンプル値を使用して形成されうる。隣接するサンプルのサンプル値は、方向に従って予測子ブロックにコピーされる。使用される方向への参照は、ビットストリーム内でコーディングされうるか、またはそれ自体が予測されうる。
図1Aを参照すると、右下に示されているのは、(35のイントラモードのうちの33のAngularモードに対応する)H.265の33の可能な予測子方向から知られる9つの予測子方向のサブセットである。矢印が集中する点(101)は、予測されているサンプルを表す。矢印は、サンプルが予測されている方向を表す。例えば、矢印(102)は、サンプル(101)が、1つまたは複数のサンプルから右上へ、水平から45度の角度で予測されることを示している。同様に、矢印(103)は、サンプル(101)が、1つまたは複数のサンプルからサンプル(101)の左下へ、水平から22.5度の角度で予測されることを示している。
さらに図1Aを参照すると、左上に、(破線太線で示された)4×4サンプルの正方形ブロック(104)が示されている。正方形ブロック(104)は16個のサンプルを含み、各々が「S」、そのY次元の位置(例えば、行インデックス)、およびそのX次元の位置(例えば、列インデックス)でラベル付けされている。例えば、サンプルS21は、Y次元で(上から)2番目のサンプルであり、X次元で(左から)1番目のサンプルである。同様に、サンプルS44は、Y次元とX次元の両方でブロック(104)内の4番目のサンプルである。ブロックのサイズは4×4サンプルであるため、S44は右下にある。同様の番号付け方式に従う参照サンプルがさらに示されている。参照サンプルは、R、ブロック(104)に対するそのY位置(例えば、行インデックス)およびX位置(列インデックス)でラベル付けされている。H.264およびH.265の両方において、予測サンプルは、再構成中のブロックに隣接し、したがって、負の値を使用する必要はない。
イントラピクチャ予測は、シグナリングされた予測方向によって割り当てられるように、隣接するサンプルからの参照サンプル値をコピーすることによって機能することができる。例えば、コーディングされたビデオビットストリームは、このブロックについて、矢印(102)と一致する予測方向を示すシグナリングを含む、すなわち、サンプルは1つまたは複数の予測サンプルから右上へ、水平から45度の角度で予測されると仮定する。その場合、サンプルS41、S32、S23、S14が、同じ参照サンプルR05から予測される。次いで、サンプルS44が、参照サンプルR08から予測される。
一定の場合には、特に、方向が45度で均等に割り切れない場合に、参照サンプルを計算するために、例えば補間によって複数の参照サンプル値が組み合わされてもよい。
可能な方向の数は、ビデオコーディング技術が発展するにつれて増加してきた。H.264(2003年)では、9つの異なる方向を表すことができた。これは、H.265(2013年)では33まで増加し、JEM/VVC/BMSは、本開示の時点で、最大65の方向をサポートすることができる。最も可能性の高い方向を特定するための実験が行われており、エントロピーコーディングの一定の技術を使用して、それら可能性の高い方向を少数のビットで表現し、可能性の低い方向についての一定のペナルティを受け入れる。さらに、方向自体を、近傍の、すでに復号されたブロックで使用された近傍の方向から、予測できる場合もある。
図1Bは、経時的に増加する予測方向の数を例示するために、JEMによる65のイントラ予測方向を示す概略図(180)を示す。
方向を表すコーディングされたビデオビットストリーム内のイントラ予測方向ビットのマッピングは、ビデオコーディング技術ごとに異なる可能性があり、例えば、予測方向からイントラ予測モードへの単純な直接マッピング、コードワード、最確モードを含む複雑な適応方式、および同様の技術にまで及びうる。ただし、すべての場合において、一定の他の方向よりもビデオコンテンツで発生する可能性が統計的に低い一定の方向が存在しうる。ビデオ圧縮の目的は冗長性の低減であるため、それらの可能性の低い方向は、うまく機能しているビデオコーディング技術においては、可能性の高い方向よりも多くのビット数で表される。
動き補償は非可逆圧縮技術であり得、以前に再構成されたピクチャまたはその一部(参照ピクチャ)からのサンプルデータのブロックが、動きベクトル(以下、MV)によって示される方向に空間的にシフトされた後、新たに再構成されたピクチャまたはピクチャ部分の予測に使用される技術に関連しうる。場合によっては、参照ピクチャは、現在再構成中のピクチャと同じでありうる。MVは、2つの次元XおよびY、または3つの次元を有することができ、第3の次元は、使用されている参照ピクチャのしるしである(第3の次元は、間接的に、時間次元でありうる)。
いくつかのビデオ圧縮技術では、サンプルデータの或るエリアに適用可能なMVは、他のMVから、例えば再構成中のエリアに空間的に隣接し、デコーディング順序でそのMVに先行する、サンプルデータの他のエリアに関連するMVから予測されうる。そうすることにより、MVのコーディングに必要なデータ量を実質的に削減することができ、それによって冗長性が排除され、圧縮が増加する。MV予測が、効果的に機能することができるのは、例えば、(自然なビデオとして知られている)カメラから導出された入力ビデオ信号をコーディングするとき、単一のMVを適用可能なエリアよりも大きいエリアが同様の方向に移動する統計的尤度があり、したがって、場合によっては、近傍のエリアのMVから導出された同様の動きベクトルを用いて予測することができるからである。これにより、所与のエリアについて見つかったMVが、周囲のMVから予測されたMVと同様または同じになり、エントロピーコーディング後に、MVを直接コーディングする場合に使用されるよりも少ないビット数で表すことができる。場合によっては、MV予測は、原信号(すなわち、サンプルストリーム)から導出された信号(すなわち、MV)の可逆圧縮の一例とすることができる。場合によっては、例えば、いくつかの周囲のMVから予測子を計算するときの丸め誤差のために、MV予測自体が非可逆でありうる。
H.265/HEVC(ITU-T Rec.H.265,"High Efficiency Video Coding",December 2016)には、様々なMV予測機構が記載されている。H.265が提供する多くのMV予測機構のうち、本明細書では、以下「空間マージ」と称される技術について説明する。
図2を参照すると、現在のブロック(201)は、動き探索プロセス中にエンコーダによって、空間的にシフトされた同じサイズの前のブロックから予測可能であると検出されたサンプルを含む。そのMVを直接コーディングする代わりに、MVを、A0、A1、およびB0、B1、B2(それぞれ202~206)で表された5つの周囲サンプルのいずれか1つと関連付けられたMVを使用して、1つまたは複数の参照ピクチャと関連付けられたメタデータから、例えば、(デコーディング順序で)最後の参照ピクチャから導出することができる。H.265では、MV予測は、隣接するブロックが使用しているのと同じ参照ピクチャからの予測子を使用することができる。
本開示の態様は、ビデオエンコーディング/デコーディングのための方法および装置を提供する。いくつかの例では、ビデオデコーディングのための装置は処理回路を含む。処理回路は、現在のブロックの再構成に使用するための参照サンプルメモリ内で利用可能なサンプル値を有するエリアを決定する。さらに、処理回路は、単一値ストリングモードの以前に再構成されたサンプルの位置を格納するための履歴ベースのリストを更新する。位置はエリア内に制限される。次いで、処理回路は、履歴ベースのリストに基づいて、現在のブロック内の単一値ストリングモードのストリングを再構成する。
いくつかの例では、処理回路は、位置がエリア外にあることに応じて、履歴ベースのリスト内のエントリから位置を削除する。
いくつかの例では、処理回路は、ストリングが履歴ベースのリストのエントリに基づいて再構成されていることに応じて、ストリング内のサンプル位置を格納するように履歴ベースのリストのエントリを更新する。一例では、サンプル位置は、ストリング内の最初のサンプル位置、ストリング内の最後のサンプル位置、および最初のサンプル位置と最後のサンプル位置との間の位置のうちの1つである。
本開示の一態様によれば、処理回路は、現在のブロックを含む領域をコーディングするための開始時のエリアを決定する。領域はエリアから除外される。例えば、コーディングツリーユニットは128×128サンプルを有し、参照サンプルメモリは、コーディングツリーユニットのサンプルを格納することができ、領域は64×64サンプルを有する。他の例では、参照サンプルメモリは128×128サンプルを格納することができ、コーディングツリーユニットは64×64サンプルを有し、領域も64×64サンプルを有する。
いくつかの例では、処理回路は、履歴ベースのリスト内の第1のエントリが領域内の位置を格納していることを検出し、参照サンプルメモリからその位置のサンプル値を取得する。次いで、処理回路は、サンプル値をサンプルバッファ(いくつかの例ではセカンダリバッファとも称される)に格納する。例えば、処理回路は、サンプル値を、履歴ベースのリスト内の第1のエントリと関連付けられたサンプルバッファの第2のエントリに格納する。一例では、第1のエントリおよび第2のエントリは同じエントリインデックスを有する。他の例では、第2のエントリはインデックス配列内のエントリによって示され、インデックス配列内のエントリは第1のエントリと関連付けられる(例えば、同じインデックスを有する)。
いくつかの例では、処理回路は、利用不可を示すために第1のエントリと関連付けられた利用可能性ビットを設定し、現在のブロックの再構成中に、ストリングベクトルがその位置を指し示すことに応じて、第2のエントリ内のサンプル値のためにサンプルバッファにアクセスする。
本開示の態様は、コンピュータによってビデオエンコーディング/デコーディングのために実行されると、コンピュータに、ビデオエンコーディング/デコーディングのための方法のいずれかを実行させる命令を格納する非一時的コンピュータ可読媒体も提供する。
開示の主題のさらなる特徴、性質、および様々な利点は、以下の詳細な説明および添付の図面からより明らかになるであろう。
イントラ予測モードの例示的なサブセットの概略図である。 例示的なイントラ予測方向の図である。 一例における現在のブロックおよびその周囲の空間マージ候補の概略図である。 一実施形態による通信システム(300)の簡略化されたブロック図の概略図である。 一実施形態による通信システム(400)の簡略化されたブロック図の概略図である。 一実施形態によるデコーダの簡略化されたブロック図の概略図である。 一実施形態によるエンコーダの簡略化されたブロック図の概略図である。 他の実施形態によるエンコーダを示すブロック図である。 他の実施形態によるデコーダを示すブロック図である。 本開示の一実施形態によるイントラブロックコピーの一例を示す図である。 本開示の一実施形態によるイントラブロックコピーの一例を示す図である。 本開示の一実施形態によるイントラブロックコピーの一例を示す図である。 本開示の実施形態によるイントラブロックコピーの一例を示す図である。 本開示の実施形態によるイントラブロックコピーの他の例を示す図である。 本開示の実施形態によるイントラブロックコピーのさらに他の例を示す図である。 本開示の実施形態によるイントラブロックコピーのさらに他の例を示す図である。 本開示の一実施形態による、現在のブロックのイントラブロックコピーブロックベクトル予測のための空間クラスの一例を示す図である。 本開示の一実施形態によるストリングコピーモードの一例を示す図である。 本開示のいくつかの実施形態による参照サンプルメモリ更新のプロセスを示す図である。 は、本開示の一実施形態によるプロセスの概要を示すフローチャートである。 一実施形態によるコンピュータシステムの概略図である。
図3は、本開示の一実施形態による通信システム(300)の簡略化されたブロック図を示す。通信システム(300)は、例えばネットワーク(350)を介して互いに通信することができる複数の端末装置を含む。例えば、通信システム(300)は、ネットワーク(350)を介して相互接続された第1の対の端末装置(310)および(320)を含む。図3の例では、第1の対の端末装置(310)および(320)は、データの一方向伝送を行う。例えば、端末装置(310)は、ネットワーク(350)を介して他方の端末装置(320)に送信するためのビデオデータ(例えば、端末装置(310)によってキャプチャされたビデオピクチャのストリーム)をコーディングしうる。符号化されたビデオデータは、1つまたは複数のコーディングされたビデオビットストリームの形態で送信することができる。端末装置(320)は、ネットワーク(350)からコーディングされたビデオデータを受信し、コーディングされたビデオデータを復号してビデオピクチャを復元し、復元されたビデオデータに従ってビデオピクチャを表示しうる。一方向データ伝送は、メディアサービング用途などで一般的でありうる。
他の例では、通信システム(300)は、例えばビデオ会議中に発生することがあるコーディングされたビデオデータの双方向伝送を実行する第2の対の端末装置(330)および(340)を含む。データの双方向伝送のために、一例では、端末装置(330)および(340)の各端末装置は、ネットワーク(350)を介して端末装置(330)および(340)の他方の端末装置に送信するためのビデオデータ(例えば、その端末装置によってキャプチャされたビデオピクチャのストリーム)をコーディングしうる。端末装置(330)および(340)の各端末装置はまた、端末装置(330)および(340)の他方の端末装置によって送信されたコーディングされたビデオデータを受信し、コーディングされたビデオデータを復号してビデオピクチャを復元し、復元されたビデオデータに従ってアクセス可能な表示装置でビデオピクチャを表示しうる。
図3の例では、端末装置(310)、(320)、(330)、および(340)は、サーバ、パーソナルコンピュータ、およびスマートフォンとして示されうるが、本開示の原理はそのように限定されない。本開示の実施形態は、ラップトップコンピュータ、タブレットコンピュータ、メディアプレーヤ、および/または専用のビデオ会議機器に適用される。ネットワーク(350)は、例えば、有線(有線接続)および/または無線通信ネットワークを含む、端末装置(310)、(320)、(330)および(340)間でコーディングされたビデオデータを伝達する任意の数のネットワークを表す。通信ネットワーク(350)は、回線交換チャネルおよび/またはパケット交換チャネルでデータを交換しうる。代表的なネットワークには、電気通信ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、および/またはインターネットが含まれる。本開示の目的にとって、ネットワーク(350)のアーキテクチャおよびトポロジーは、本明細書で以下に説明されない限り、本開示の動作にとって重要ではない場合がある。
図4は、開示の主題の用途の一例として、ストリーミング環境におけるビデオエンコーダおよびビデオデコーダの配置を示す。開示の主題は、例えば、ビデオ会議、デジタルテレビ、CD、DVD、メモリスティックなどを含むデジタルメディアへの圧縮ビデオの保存を含む、他のビデオ対応用途に等しく適用することができる。
ストリーミングシステムは、ビデオソース(401)、例えば、圧縮されていないビデオピクチャのストリーム(402)を作成する、例えばデジタルカメラを含みうるキャプチャサブシステム(413)を含みうる。一例では、ビデオピクチャのストリーム(402)は、デジタルカメラによって撮影されたサンプルを含む。ビデオピクチャのストリーム(402)は、符号化されたビデオデータ(404)(またはコーディングされたビデオビットストリーム)と比較した場合の高データ量を強調するために太線で示されており、ビデオソース(401)に結合されたビデオエンコーダ(403)を含む電子装置(420)によって処理することができる。ビデオエンコーダ(403)は、以下でより詳細に説明されるように開示の主題の態様を可能にし、または実装するために、ハードウェア、ソフトウェア、またはそれらの組み合わせを含みうる。符号化されたビデオデータ(404)(または符号化されたビデオビットストリーム(404))は、ビデオピクチャのストリーム(402)と比較した場合の低データ量を強調するために細線で示されており、将来の使用のためにストリーミングサーバ(405)に格納されうる。図4のクライアントサブシステム(406)および(408)などの1つまたは複数のストリーミングクライアントサブシステムは、ストリーミングサーバ(405)にアクセスして、符号化されたビデオデータ(404)のコピー(407)および(409)を取得することができる。クライアントサブシステム(406)は、例えば電子装置(430)内のビデオデコーダ(410)を含みうる。ビデオデコーダ(410)は、符号化されたビデオデータの入力コピー(407)を復号し、ディスプレイ(412)(例えば、表示画面)または他のレンダリング装置(図示せず)上にレンダリングすることができるビデオピクチャの出力ストリーム(411)を作成する。いくつかのストリーミングシステムでは、符号化されたビデオデータ(404)、(407)、および(409)(例えば、ビデオビットストリーム)を、一定のビデオコーディング/圧縮規格に従って符号化することができる。それらの規格の例として、ITU-T勧告H.265が挙げられる。一例では、開発中のビデオコーディング規格は、多用途ビデオコーディング(VVC)として非公式に知られ
ている。開示の主題は、VVCの文脈で使用されうる。
電子装置(420)および(430)は、他の構成要素(図示せず)を含みうることに留意されたい。例えば、電子装置(420)はビデオデコーダ(図示せず)を含むことができ、電子装置(430)はビデオエンコーダ(図示せず)も含みうる。
図5に、本開示の一実施形態によるビデオデコーダ(510)のブロック図を示す。ビデオデコーダ(510)は、電子装置(530)に含めることができる。電子装置(530)は、受信器(531)(例えば、受信回路)を含みうる。ビデオデコーダ(510)は、図4の例のビデオデコーダ(410)の代わりに使用されうる。
受信器(531)は、ビデオデコーダ(510)によって復号されるべき1つまたは複数のコーディングされたビデオシーケンスを受信することができ、同じまたは他の実施形態では、一度に1つのコーディングされたビデオシーケンスを受信し、各コーディングされたビデオシーケンスのデコーディングは、他のコーディングされたビデオシーケンスから独立している。コーディングされたビデオシーケンスは、符号化されたビデオデータを格納する記憶装置へのハードウェア/ソフトウェアリンクでありうるチャネル(501)から受信されうる。受信器(531)は、符号化されたビデオデータを、それぞれの使用エンティティ(図示せず)に転送されうる他のデータ、例えば、コーディングされたオーディオデータおよび/または補助データストリームと共に受信しうる。受信器(531)は、コーディングされたビデオシーケンスを他のデータから分離しうる。ネットワークジッタに対抗するために、バッファメモリ(515)が、受信器(531)とエントロピーデコーダ/パーサ(520)(以下「パーサ(520)」)との間に結合しうる。一定の用途では、バッファメモリ(515)は、ビデオデコーダ(510)の一部である。他の場合には、ビデオデコーダ(510)の外部にありうる(図示せず)。さらに他の場合には、例えばネットワークジッタに対抗するためにビデオデコーダ(510)の外部にバッファメモリ(図示せず)があり、さらに、例えば再生タイミングを処理するためにビデオデコーダ(510)の内部に別のバッファメモリ(515)がありうる。受信器(531)が十分な帯域幅および可制御性の格納/転送装置から、またはアイソシンクロナス(isosynchronous)ネットワークからデータを受信しているときには、バッファメモリ(515)は不要でありうるか、または小さくすることができる。インターネットなどのベストエフォートパケットネットワークで使用する場合、バッファメモリ(515)は、必要とされることがあり、比較的大きくすることもでき、有利には適応サイズのものとすることができ、オペレーティングシステムまたはビデオデコーダ(510)の外部の同様の要素(図示せず)に少なくとも部分的に実装されうる。
ビデオデコーダ(510)は、コーディングされたビデオシーケンスからシンボル(521)を再構成するためのパーサ(520)を含みうる。それらのシンボルのカテゴリは、ビデオデコーダ(510)の動作を管理するために使用される情報と、潜在的に、図5に示すように、電子装置(530)の不可欠な部分ではないが電子装置(530)に結合することができるレンダリング装置(512)(例えば、表示画面)などのレンダリング装置を制御するための情報とを含む。(1つまたは複数の)レンダリング装置のための制御情報は、補足拡張情報(Supplemental Enhancement Information(SEIメッセージ))またはビデオユーザビリティ情報(Video Usability Information(VUI))パラメータセットフラグメント(図示せず)の形式でありうる。パーサ(520)は、受信したコーディングされたビデオシーケンスを解析/エントロピー復号しうる。コーディングされたビデオシーケンスのコーディングは、ビデオコーディング技術または規格に従ったものとすることができ、可変長コーディング、ハフマンコーディング、文脈依存ありまたはなしの算術コーディングなどを含む様々な原理に従うことができる。パーサ(520)は、コーディングされたビデオシーケンスから、グループに対応する少なくとも1つのパラメータに基づいて、ビデオデコーダ内の画素のサブグループの少なくとも1つのサブグループパラメータのセットを抽出しうる。サブグループには、Groups of Pictures(GOP)、ピクチャ、タイル、スライス、マクロブロック、コーディングユニット(CU)、ブロック、変換ユニット(TU)、予測ユニット(PU)などを含めることができる。パーサ(520)はまた、コーディングされたビデオシーケンス情報から、変換係数、量子化パラメータ値、動きベクトルなども抽出しうる。
パーサ(520)は、シンボル(521)を作成するために、バッファメモリ(515)から受信したビデオシーケンスに対してエントロピーデコーディング/パース動作を実行しうる。
シンボル(521)の再構成は、コーディングされたビデオピクチャまたはその一部のタイプ(インターピクチャおよびイントラピクチャ、インターブロックおよびイントラブロックなど)、ならびに他の要因に応じて、複数の異なるユニットを関与させることができる。どのユニットがどのように関与するかは、パーサ(520)によってコーディングされたビデオシーケンスからパースされたサブグループ制御情報によって制御されうる。パーサ(520)と以下の複数のユニットとの間のそのようなサブグループ制御情報の流れは、明確にするために示されていない。
すでに述べた機能ブロックを超えて、ビデオデコーダ(510)を、以下で説明するように、いくつかの機能ユニットに概念的に細分することができる。商業的制約の下で動作する実際の実装形態では、これらのユニットの多くは互いに密接に相互作用し、少なくとも部分的に、互いに統合することができる。しかしながら、開示の主題を説明するためには、以下の機能ユニットへの概念的細分が適切である。
第1のユニットはスケーラ/逆変換ユニット(551)である。スケーラ/逆変換ユニット(551)は、量子化変換係数、ならびにどの変換を使用するか、ブロックサイズ、量子化係数、量子化スケーリング行列などを含む制御情報を、パーサ(520)から(1つまたは複数の)シンボル(521)として受け取る。スケーラ/逆変換ユニット(551)は、アグリゲータ(555)に入力することができるサンプル値を備えるブロックを出力することができる。
場合によっては、スケーラ/逆変換(551)の出力サンプルは、イントラコーディングされたブロック、すなわち、以前に再構成されたピクチャからの予測情報を使用していないが、現在のピクチャの以前に再構成された部分からの予測情報を使用することができるブロックに関係しうる。そのような予測情報は、イントラピクチャ予測ユニット(552)によって提供することができる。場合によっては、イントラピクチャ予測ユニット(552)は、現在のピクチャバッファ(558)からフェッチされた周囲のすでに再構成された情報を使用して、再構成中のブロックと同じサイズおよび形状のブロックを生成する。現在のピクチャバッファ(558)は、例えば、部分的に再構成された現在のピクチャおよび/または完全に再構成された現在のピクチャをバッファする。アグリゲータ(555)は、場合によっては、サンプルごとに、イントラ予測ユニット(552)が生成した予測情報を、スケーラ/逆変換ユニット(551)によって提供される出力サンプル情報に追加する。
他の場合には、スケーラ/逆変換ユニット(551)の出力サンプルは、インターコーディングされ、潜在的に動き補償されたブロックに関係しうる。そのような場合、動き補償予測ユニット(553)は、参照ピクチャメモリ(557)にアクセスして、予測に使用されるサンプルをフェッチすることができる。ブロックに関連するシンボル(521)に従ってフェッチされたサンプルを動き補償した後、これらのサンプルは、出力サンプル情報を生成するために、アグリゲータ(555)によってスケーラ/逆変換ユニット(551)の出力に追加されうる(この場合、残差サンプルまたは残差信号と称される)。動き補償予測ユニット(553)が予測サンプルをフェッチする参照ピクチャメモリ(557)内のアドレスは、例えば、X、Y、および参照ピクチャ成分を有しうるシンボル(521)の形式で動き補償予測ユニット(553)が利用可能な、動きベクトルによって制御されうる。動き補償はまた、サブサンプルの正確な動きベクトルが使用されているときに参照ピクチャメモリ(557)からフェッチされたサンプル値の補間、動きベクトル予測機構なども含みうる。
アグリゲータ(555)の出力サンプルは、ループフィルタユニット(556)において様々なループフィルタリング技術を受けることができる。ビデオ圧縮技術は、コーディングされたビデオシーケンス(コーディングされたビデオビットストリームとも称される)に含まれるパラメータによって制御され、パーサ(520)からのシンボル(521)としてループフィルタユニット(556)が利用可能なインループフィルタ技術を含みうるが、コーディングされたピクチャまたはコーディングされたビデオシーケンスの(デコーディング順序で)前の部分のデコーディング中に取得されたメタ情報に応答することもでき、以前に再構成され、ループフィルタリングされたサンプル値に応答することもできる。
ループフィルタユニット(556)の出力は、レンダリング装置(512)に出力されうるだけでなく、将来のインターピクチャ予測での使用のために参照ピクチャメモリ(557)に格納されうるサンプルストリームでありうる。
一定のコーディングされたピクチャは、完全に再構成されると、将来の予測のための参照ピクチャとして使用されうる。例えば、現在のピクチャに対応するコーディングされたピクチャが完全に再構成され、コーディングされたピクチャが(例えば、パーサ(520)によって)参照ピクチャとして識別されると、現在のピクチャバッファ(558)は、参照ピクチャメモリ(557)の一部になることができ、次のコーディングされたピクチャの再構成を開始する前に、新しい現在のピクチャバッファを再割り振りすることができる。
ビデオデコーダ(510)は、例えばITU-T Rec.H.265などの、規格の所定のビデオ圧縮技術に従ってデコーディング動作を行いうる。コーディングされたビデオシーケンスは、コーディングされたビデオシーケンスがビデオ圧縮技術または規格の構文と、ビデオ圧縮技術または規格に文書化されたプロファイルの両方に準拠するという意味で、使用されているビデオ圧縮技術または規格によって指定された構文に準拠しうる。具体的には、プロファイルは、ビデオ圧縮技術または規格で利用可能なすべてのツールから、そのプロファイルの下で使用に供される唯一のツールとして、一定のツールを選択しうる。また、コンプライアンスに必要なのは、コーディングされたビデオシーケンスの複雑さが、ビデオ圧縮技術または規格のレベルによって定義される範囲内にあることでありうる。場合によっては、レベルは、最大ピクチャサイズ、最大フレームレート、最大再構成サンプルレート(例えば、毎秒のメガサンプル数で測定される)、最大参照ピクチャサイズなどを制限する。レベルによって設定される制限は、場合によっては、仮想参照デコーダ(Hypothetical Reference Decoder(HRD))仕様およびコーディングされたビデオシーケンスでシグナリングされたHRDバッファ管理のためのメタデータによってさらに制限されうる。
一実施形態では、受信器(531)は、符号化されたビデオと共に追加の(冗長な)データを受信しうる。追加のデータは、(1つまたは複数の)コーディングされたビデオシーケンスの一部として含まれうる。追加のデータは、ビデオデコーダ(510)によって、データを適切に復号するため、および/または元のビデオデータをより正確に再構成するために使用されうる。追加のデータは、例えば、時間層、空間層、または信号対雑音比(SNR)強化層、冗長スライス、冗長ピクチャ、前方誤り訂正コードなどの形式でありうる。
図6は、本開示の一実施形態によるビデオエンコーダ(603)のブロック図を示す。ビデオエンコーダ(603)は、電子装置(620)に含まれる。電子装置(620)は、送信器(640)(例えば、送信回路)を含む。ビデオエンコーダ(603)は、図4の例のビデオエンコーダ(403)の代わりに使用されうる。
ビデオエンコーダ(603)は、ビデオエンコーダ(603)によってコーディングされるべき(1つまたは複数の)ビデオ画像をキャプチャしうるビデオソース(601)(図6の例では電子装置(620)の一部ではない)からビデオサンプルを受け取りうる。他の例では、ビデオソース(601)は電子装置(620)の一部である。
ビデオソース(601)は、ビデオエンコーダ(603)によってコーディングされるべきソースビデオシーケンスを、任意の適切なビット深度(例えば、8ビット、10ビット、12ビット、…)、任意の色空間(例えば、BT.601 Y CrCB、RGB、…)、および任意の適切なサンプリング構造(例えば、Y CrCb 4:2:0、Y CrCb 4:4:4)のものとすることができるデジタルビデオサンプルストリームの形態で提供しうる。メディアサービングシステムにおいて、ビデオソース(601)は、以前に準備された映像を格納する記憶装置でありうる。ビデオ会議システムでは、ビデオソース(601)は、ローカル画像情報をビデオシーケンスとしてキャプチャするカメラでありうる。ビデオデータは、順番に見たときに動きを与える複数の個別のピクチャとして提供されうる。ピクチャ自体は、画素の空間配列として編成されてもよく、各画素は、使用中のサンプリング構造、色空間などに応じて、1つまたは複数のサンプルを含みうる。当業者であれば、画素とサンプルとの関係を容易に理解することができる。以下の説明はサンプルに焦点を当てている。
一実施形態によれば、ビデオエンコーダ(603)は、リアルタイムで、または用途によって必要とされる他の任意の時間制約の下で、ソースビデオシーケンスのピクチャをコーディングされたビデオシーケンス(643)にコーディングおよび圧縮しうる。適切なコーディング速度を強制することが、コントローラ(650)の1つの機能である。いくつかの実施形態では、コントローラ(650)は、他の機能ユニットを以下で説明するように制御し、他の機能ユニットに機能的に結合される。明確にするために、結合は図示されていない。コントローラ(650)によって設定されるパラメータには、レート制御関連のパラメータ(ピクチャスキップ、量子化器、レート歪み最適化技術のラムダ値など)、ピクチャサイズ、Group of Pictures(GOP)レイアウト、最大動きベクトル探索範囲などが含まれうる。コントローラ(650)は、或るシステム設計のために最適化されたビデオエンコーダ(603)に関係する他の適切な機能を有するように構成することができる。
いくつかの実施形態では、ビデオエンコーダ(603)は、コーディングループで動作するように構成される。過度に簡略化された説明として、一例では、コーディングループは、ソースコーダ(630)(例えば、コーディングされるべき入力ピクチャと、(1つまたは複数の)参照ピクチャとに基づいて、シンボルストリームなどのシンボルを作成する役割を担う)と、ビデオエンコーダ(603)に組み込まれた(ローカル)デコーダ(633)とを含みうる。デコーダ(633)は、シンボルを再構成して、(リモート)デコーダもまた作成することになるのと同様の方法でサンプルデータを作成する(開示の主題で考慮されるビデオ圧縮技術では、シンボルとコーディングされたビデオビットストリームとの間の任意の圧縮が可逆であるため)。再構成されたサンプルストリーム(サンプルデータ)は、参照ピクチャメモリ(634)に入力される。シンボルストリームのデコーディングにより、デコーダの位置(ローカルまたはリモート)に関係なくビットイグザクト(bit-exact)結果が得られるため、参照ピクチャメモリ(634)内の内容もまたローカルエンコーダとリモートエンコーダとの間でビットイグザクトになる。言い換えると、エンコーダの予測部分は、デコーディング中に予測を使用するときにデコーダが「見る」ことになるのとまったく同じサンプル値を参照ピクチャサンプルとして「見る」。参照ピクチャの同期性(および、例えばチャネル誤差が原因で同期性を維持することができない場合には、結果として生じるドリフト)のこの基本原理は、いくつかの関連技術においても使用される。
「ローカル」デコーダ(633)の動作は、図5に関連して上記で詳細に説明した、ビデオデコーダ(510)などの「リモート」デコーダの動作と同じでありうる。図5も簡単に参照すると、しかしながら、シンボルが利用可能であり、エントロピーコーダ(645)およびパーサ(520)によるコーディングされたビデオシーケンスへのシンボルのエンコーディング/デコーディングが可逆でありうるため、バッファメモリ(515)およびパーサ(520)を含むビデオデコーダ(510)のエントロピーデコーディング部分は、ローカルデコーダ(633)において完全に実装されない場合がある。
この時点で言えることは、デコーダ内に存在するパーシング/エントロピーデコーディングを除く任意のデコーダ技術もまた、対応するエンコーダ内において、実質的に同一の機能形態で存在する必要が必然的にあるということである。このため、開示の主題は、デコーダ動作に焦点を合わせている。エンコーダ技術の説明は、それらが包括的に説明されたデコーダ技術の逆であるので、省略することができる。一定のエリアにおいてのみ、より詳細な説明が必要であり、以下に示す。
動作中、いくつかの例では、ソースコーダ(630)は、「参照ピクチャ」として指定されたビデオシーケンスからの1つまたは複数の以前にコーディングされたピクチャを参照して入力ピクチャを予測的にコーディングする、動き補償予測コーディングを実行する場合がある。このようにして、コーディングエンジン(632)は、入力ピクチャの画素ブロックと、入力ピクチャへの(1つまたは複数の)予測参照として選択されうる(1つまたは複数の)参照ピクチャの画素ブロックとの間の差分をコーディングする。
ローカルビデオデコーダ(633)は、ソースコーダ(630)によって作成されたシンボルに基づいて、参照ピクチャとして指定されうるピクチャのコーディングされたビデオデータを復号しうる。コーディングエンジン(632)の動作は、有利には、非可逆プロセスでありうる。コーディングされたビデオデータがビデオデコーダ(図6には示されていない)で復号されうる場合、再構成されたビデオシーケンスは、通常、多少の誤差を伴うソースビデオシーケンスの複製でありうる。ローカルビデオデコーダ(633)は、参照ピクチャに対してビデオデコーダによって実行されうるデコーディングプロセスを複製し、再構成された参照ピクチャを参照ピクチャキャッシュ(634)に格納させうる。このようにして、ビデオエンコーダ(603)は、(送信誤差なしで)遠端ビデオデコーダによって取得される再構成された参照ピクチャと共通の内容を有する再構成された参照ピクチャのコピーをローカルに格納しうる。
予測器(635)は、コーディングエンジン(632)のための予測探索を実行しうる。すなわち、コーディングされるべき新しいピクチャに対して、予測器(635)は、サンプルデータ(候補参照画素ブロックとして)または新しいピクチャの適切な予測参照として役立ちうる参照ピクチャ動きベクトル、ブロック形状といった或るメタデータを求めて、参照ピクチャメモリ(634)を探索しうる。予測器(635)は、適切な予測参照を見つけるために、画素ブロックごとに1つのサンプルブロックで動作しうる。場合によっては、予測器(635)によって取得された探索結果によって決定されるように、入力ピクチャは、参照ピクチャメモリ(634)に格納された複数の参照ピクチャから引き出された予測参照を有しうる。
コントローラ(650)は、例えば、ビデオデータを符号化するために使用されるパラメータおよびサブグループパラメータの設定を含む、ソースコーダ(630)のコーディング動作を管理しうる。
前述のすべての機能ユニットの出力は、エントロピーコーダ(645)でエントロピーコーディングを受けうる。エントロピーコーダ(645)は、ハフマンコーディング、可変長コーディング、算術コーディングなどといった技術に従ってシンボルを可逆圧縮することにより、様々な機能ユニットによって生成されたシンボルをコーディングされたビデオシーケンスに変換する。
送信器(640)は、エントロピーコーダ(645)によって作成された(1つまたは複数の)コーディングされたビデオシーケンスを、符号化されたビデオデータを格納することになる記憶装置へのハードウェア/ソフトウェアリンクでありうる、通信チャネル(660)を介した送信に備えてバッファすることができる。送信器(640)は、ビデオコーダ(603)からのコーディングされたビデオデータを、送信されるべき他のデータ、例えば、コーディングされたオーディオデータおよび/または補助データストリーム(ソースは図示せず)とマージしうる。
コントローラ(650)は、ビデオエンコーダ(603)の動作を管理しうる。コーディング中に、コントローラ(650)は、コーディングされた各ピクチャに或るコーディングされたピクチャタイプを割り当ててもよく、これは、それぞれのピクチャに適用されうるコーディング技術に影響を及ぼしうる。例えば、ピクチャは多くの場合、以下のピクチャタイプのうちの1つとして割り当てられうる。
イントラピクチャ(Iピクチャ)は、シーケンス内の任意の他のピクチャを予測ソースとして使用せずに、コーディングおよび復号されうるピクチャでありうる。いくつかのビデオコーデックは、例えば、独立デコーダリフレッシュ(Independent Decoder Refresh)(「IDR」)ピクチャを含む異なるタイプのイントラピクチャを可能にする。当業者であれば、Iピクチャのそれらの変形ならびにそれらそれぞれの用途および特徴を認識している。
予測ピクチャ(Pピクチャ)は、最大で1つの動きベクトルおよび参照インデックスを使用して各ブロックのサンプル値を予測するイントラ予測またはインター予測を使用して、コーディングおよび復号されうるピクチャでありうる。
双方向予測ピクチャ(Bピクチャ)は、最大で2つの動きベクトルおよび参照インデックスを使用して各ブロックのサンプル値を予測するイントラ予測またはインター予測を使用して、コーディングおよび復号されうるピクチャでありうる。同様に、複数予測ピクチャは、単一のブロックの再構成のために3つ以上の参照ピクチャおよび関連するメタデータを使用することができる。
ソースピクチャは、一般に、複数のサンプルブロック(例えば、各々4×4、8×8、4×8、または16×16のサンプルのブロック)に空間的に細分され、ブロックごとにコーディングされうる。ブロックは、ブロックそれぞれのピクチャに適用されたコーディング割り当てによって決定されるように、他の(すでにコーディングされた)ブロックを参照して、予測的にコーディングされうる。例えば、Iピクチャのブロックは、非予測的にコーディングされうるか、または、同じピクチャのすでにコーディングされたブロックを参照して、予測的にコーディングされうる(空間予測またはイントラ予測)。Pピクチャの画素ブロックは、1つの以前にコーディングされた参照ピクチャを参照して、空間予測を介して、または時間予測を介して、予測的にコーディングされうる。Bピクチャのブロックは、1つまたは2つの以前にコーディングされた参照ピクチャを参照して、空間予測を介して、または時間予測を介して予測的にコーディングされうる。
ビデオエンコーダ(603)は、ITU-T Rec.H.265などの所定のビデオコーディング技術または規格に従ってコーディング動作を行いうる。その動作において、ビデオエンコーダ(603)は、入力ビデオシーケンスにおける時間的冗長性および空間的冗長性を利用する予測コーディング動作を含む、様々な圧縮動作を行いうる。したがって、コーディングされたビデオデータは、使用されているビデオコーディング技術または規格によって指定された構文に準拠しうる。
一実施形態では、送信器(640)は、符号化されたビデオと共に追加のデータを送信しうる。ソースコーダ(630)は、そのようなデータをコーディングされたビデオシーケンスの一部として含めることができる。追加のデータは、時間層/空間層/SNR強化層、冗長なピクチャやスライスなどの他の形式の冗長データ、SEIメッセージ、VUIパラメータセットフラグメントなどを含みうる。
ビデオは、複数のソースピクチャ(ビデオピクチャ)として時系列でキャプチャされうる。イントラピクチャ予測(しばしばイントラ予測と略される)は、所与のピクチャにおける空間相関を利用し、インターピクチャ予測は、ピクチャ間の(時間的または他の)相関を利用する。一例では、現在のピクチャと称される、エンコーディング/デコーディング中の特定のピクチャがブロックに分割される。現在のピクチャ内のブロックがビデオ内の以前にコーディングされてまだバッファされている参照ピクチャ内の参照ブロックに類似している場合、現在のピクチャ内のブロックを、動きベクトルと称されるベクトルによってコーディングすることができる。動きベクトルは、参照ピクチャ内の参照ブロックを指し示し、複数の参照ピクチャが使用されている場合には、参照ピクチャを識別する第3の次元を有することができる。
いくつかの実施形態では、インターピクチャ予測において双予測技術を使用することができる。双予測技術によれば、両方ともデコーディング順序でビデオ内の現在のピクチャより前にある(ただし、表示順序では、それぞれ過去と未来とにありうる)第1の参照ピクチャおよび第2の参照ピクチャなどの2つの参照ピクチャが使用される。現在のピクチャ内のブロックは、第1の参照ピクチャ内の第1の参照ブロックを指し示す第1の動きベクトルと、第2の参照ピクチャ内の第2の参照ブロックを指し示す第2の動きベクトルとによってコーディングすることができる。ブロックは、第1の参照ブロックと第2の参照ブロックの組み合わせによって予測することができる。
さらに、インターピクチャ予測において、コーディング効率を改善するために、マージモード技術を使用することができる。
本開示のいくつかの実施形態によれば、インターピクチャ予測およびイントラピクチャ予測などの予測は、ブロック単位で行われる。例えば、HEVC規格によれば、ビデオピクチャのシーケンス内のピクチャは、圧縮のためにコーディングツリーユニット(CTU)に分割され、ピクチャ内のCTUは、64×64画素、32×32画素、または16×16画素などの同じサイズを有する。一般に、CTUは、3つのコーディングツリーブロック(CTB)を含み、これらは1つのルマCTBおよび2つのクロマCTBである。各CTUは、1つまたは複数のコーディングユニット(CU)に再帰的に四分木分割することができる。例えば、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画素などの画素の値(例えば、ルマ値)の行列を含む。
図7に、本開示の他の実施形態によるビデオエンコーダ(703)の図を示す。ビデオエンコーダ(703)は、ビデオピクチャのシーケンスにおける現在のビデオピクチャ内のサンプル値の処理ブロック(例えば、予測ブロック)を受け取り、処理ブロックを、コーディングされたビデオシーケンスの一部であるコーディングされたピクチャに符号化するように構成される。一例では、ビデオエンコーダ(703)は、図4の例のビデオエンコーダ(403)の代わりに使用される。
HEVCの例では、ビデオエンコーダ(703)は、8×8サンプルの予測ブロックなどの処理ブロックのサンプル値の行列を受け取る。ビデオエンコーダ(703)は、例えばレート歪み最適化を使用して、処理ブロックがそれを使用して最良にコーディングされるのは、イントラモードか、インターモードか、それとも双予測モードかを決定する。処理ブロックがイントラモードでコーディングされる場合、ビデオエンコーダ(703)は、イントラ予測技術を使用して処理ブロックをコーディングされたピクチャに符号化し、処理ブロックがインターモードまたは双予測モードでコーディングされる場合、ビデオエンコーダ(703)は、それぞれインター予測技術または双予測技術を使用して、処理ブロックをコーディングされたピクチャに符号化しうる。一定のビデオコーディング技術では、マージモードは、予測子の外側のコーディングされた動きベクトル成分の恩恵を受けずに、1つまたは複数の動きベクトル予測子から動きベクトルが導出されるインターピクチャ予測サブモードでありうる。一定の他のビデオコーディング技術では、対象ブロックに適用可能な動きベクトル成分が存在しうる。一例では、ビデオエンコーダ(703)は、処理ブロックのモードを決定するためのモード決定モジュール(図示せず)などの他の構成要素を含む。
図7の例では、ビデオエンコーダ(703)は、図7に示すように互いに結合されたインターエンコーダ(730)、イントラエンコーダ(722)、残差計算器(723)、スイッチ(726)、残差エンコーダ(724)、汎用コントローラ(721)、およびエントロピーエンコーダ(725)を含む。
インターエンコーダ(730)は、現在のブロック(例えば、処理ブロック)のサンプルを受け取り、そのブロックを参照ピクチャ内の1つまたは複数の参照ブロック(例えば、前のピクチャおよび後のピクチャ内のブロック)と比較し、インター予測情報(例えば、インターエンコーディング技術による冗長情報、動きベクトル、マージモード情報の記述)を生成し、任意の適切な技術を使用してインター予測情報に基づいてインター予測結果(例えば、予測ブロック)を計算するように構成される。いくつかの例では、参照ピクチャは、符号化されたビデオ情報に基づいて復号された、復号された参照ピクチャである。
イントラエンコーダ(722)は、現在のブロック(例えば、処理ブロック)のサンプルを受け取り、場合によっては、ブロックを同じピクチャ内のすでにコーディングされたブロックと比較し、変換後に量子化係数を生成し、場合によってはイントラ予測情報(例えば、1つまたは複数のイントラエンコーディング技術によるイントラ予測方向情報)も生成するように構成される。一例では、イントラエンコーダ(722)は、イントラ予測情報と、同じピクチャ内の参照ブロックとに基づいて、イントラ予測結果(例えば、予測ブロック)も計算する。
汎用コントローラ(721)は、汎用制御データを決定し、汎用制御データに基づいてビデオエンコーダ(703)の他の構成要素を制御するように構成される。一例では、汎用コントローラ(721)は、ブロックのモードを決定し、モードに基づいてスイッチ(726)に制御信号を提供する。例えば、モードがイントラモードである場合、汎用コントローラ(721)は、スイッチ(726)を制御して、残差計算器(723)が使用するためのイントラモード結果を選択させ、エントロピーエンコーダ(725)を制御して、イントラ予測情報を選択させてそのイントラ予測情報をビットストリームに含めさせ、モードがインターモードである場合、汎用コントローラ(721)は、スイッチ(726)を制御して、残差計算器(723)が使用するためのインター予測結果を選択させ、エントロピーエンコーダ(725)を制御して、インター予測情報を選択させてそのインター予測情報をビットストリームに含めさせる。
残差計算器(723)は、受け取ったブロックと、イントラエンコーダ(722)またはインターエンコーダ(730)から選択された予測結果との差分(残差データ)を計算するように構成される。残差エンコーダ(724)は、残差データに基づいて動作して、残差データを符号化して変換係数を生成するように構成される。一例では、残差エンコーダ(724)は、残差データを空間領域から周波数領域に変換し、変換係数を生成するように構成される。変換係数は次いで、量子化変換係数を得るために量子化処理を受ける。様々な実施形態において、ビデオエンコーダ(703)はまた、残差デコーダ(728)も含む。残差デコーダ(728)は、逆変換を実行し、復号された残差データを生成するように構成される。復号された残差データは、イントラエンコーダ(722)およびインターエンコーダ(730)によって適切に使用することができる。例えば、インターエンコーダ(730)は、復号された残差データとインター予測情報とに基づいて復号されたブロックを生成することができ、イントラエンコーダ(722)は、復号された残差データとイントラ予測情報とに基づいて復号されたブロックを生成することができる。復号されたブロックは、復号されたピクチャを生成するために適切に処理され、復号されたピクチャは、いくつかの例では、メモリ回路(図示せず)にバッファし、参照ピクチャとして使用することができる。
エントロピーエンコーダ(725)は、符号化されたブロックを含むようビットストリームをフォーマットするように構成される。エントロピーエンコーダ(725)は、HEVC規格などの適切な規格に従って様々な情報を含めるように構成される。一例では、エントロピーエンコーダ(725)は、汎用制御データ、選択された予測情報(例えば、イントラ予測情報やインター予測情報)、残差情報、および他の適切な情報をビットストリームに含めるように構成される。開示の主題によれば、インターモードまたは双予測モードのどちらかのマージサブモードでブロックをコーディングするとき、残差情報は存在しないことに留意されたい。
図8に、本開示の他の実施形態によるビデオデコーダ(810)の図を示す。ビデオデコーダ(810)は、コーディングされたビデオシーケンスの一部であるコーディングされたピクチャを受け取り、コーディングされたピクチャを復号して再構成されたピクチャを生成するように構成される。一例では、ビデオデコーダ(810)は、図4の例のビデオデコーダ(410)の代わりに使用される。
図8の例では、ビデオデコーダ(810)は、図8に示すように互いに結合されたエントロピーデコーダ(871)、インターデコーダ(880)、残差デコーダ(873)、再構成モジュール(874)、およびイントラデコーダ(872)を含む。
エントロピーデコーダ(871)は、コーディングされたピクチャから、コーディングされたピクチャを構成する構文要素を表す一定のシンボルを再構成するように構成することができる。そのようなシンボルは、例えば、ブロックがコーディングされているモード(例えば、イントラモード、インターモード、双予測モード、後の2つは、マージサブモードまたは別のサブモードで)、イントラデコーダ(872)またはインターデコーダ(880)によってそれぞれ予測に使用される或るサンプルまたはメタデータを識別することができる予測情報(例えば、イントラ予測情報やインター予測情報など)、例えば量子化変換係数の形態の残差情報などを含みうる。一例では、予測モードがインターモードまたは双予測モードである場合、インター予測情報はインターデコーダ(880)に提供され、予測タイプがイントラ予測タイプである場合、イントラ予測情報がイントラデコーダ(872)に提供される。残差情報は逆量子化を受けることができ、残差デコーダ(873)に提供される。
インターデコーダ(880)は、インター予測情報を受け取り、インター予測情報に基づいてインター予測結果を生成するように構成される。
イントラデコーダ(872)は、イントラ予測情報を受け取り、イントラ予測情報に基づいて予測結果を生成するように構成される。
残差デコーダ(873)は、逆量子化を行って逆量子化変換係数を抽出し、逆量子化変換係数を処理して残差を周波数領域から空間領域に変換するように構成される。残差デコーダ(873)はまた、(量子化パラメータ(QP)を含めるために)或る制御情報を必要とする場合もあり、その情報はエントロピーデコーダ(871)によって提供されうる(これは少量の制御情報のみでありうるためデータパスは図示されない)。
再構成モジュール(874)は、空間領域において、残差デコーダ(873)による出力としての残差と、(場合によって、インター予測モジュールまたはイントラ予測モジュールによる出力としての)予測結果とを組み合わせて、再構成されたピクチャの一部でありうる再構成されたブロックを形成するように構成され、再構成されたブロックは再構成されたビデオの一部でありうる。視覚的品質を改善するために、デブロッキング動作などの他の適切な動作が行われうることに留意されたい。
ビデオエンコーダ(403)、(603)、および(703)、ならびにビデオデコーダ(410)、(510)、および(810)は、任意の適切な技術を使用して実装されうることに留意されたい。一実施形態では、ビデオエンコーダ(403)、(603)、および(703)、ならびにビデオデコーダ(410)、(510)、および(810)は、1つまたは複数の集積回路を使用して実装されうる。他の実施形態では、ビデオエンコーダ(403)、(603)、および(603)、ならびにビデオデコーダ(410)、(510)、および(810)は、ソフトウェア命令を実行する1つまたは複数のプロセッサを使用して実装されうる。
インター予測およびイントラ予測には、ブロックベースの補償が使用されうる。インター予測の場合、異なるピクチャからのブロックベースの補償が、動き補償として知られている。ブロックベースの補償はまた、イントラ予測など、同じピクチャ内の以前に再構成されたエリアからも行うことができる。同じピクチャ内の再構成されたエリアからのブロックベースの補償は、イントラピクチャブロック補償、現在のピクチャ参照(CPR)、またはイントラブロックコピー(IBC)と称される。現在のブロックと、同じピクチャ内の参照ブロック(予測ブロックとも称される)との間のオフセットを示す変位ベクトルは、ブロックベクトル(BV)と称され、現在のブロックは、参照ブロックに基づいて符号化/復号することができる。任意の値(正または負、x方向またはy方向)をとれる動き補償の動きベクトルとは異なり、BVには、参照ブロックが使用可能であり、すでに再構成されていることを保証するためのいくつかの制約がある。また、いくつかの例では、並列処理を考慮するために、タイル境界、スライス境界、またはウェーブフロントラダー(wavefront ladder)形状の境界である、いくつかの参照エリアが除外される。
ブロックベクトルのコーディングは、明示的または暗黙的とすることができる。明示的モードでは、ブロックベクトルとその予測子との間のBV差分がシグナリングされる。暗黙的モードでは、ブロックベクトルは、マージモードの動きベクトルと同様の方法で、BV差分を用いずに予測子(ブロックベクトル予測子と称される)から復元される。明示的モードは、非マージBV予測モードと称されうる。暗黙的モードは、マージBV予測モードと称されうる。
ブロックベクトルの分解能は、いくつかの実装形態では、整数位置に制限される。他のシステムでは、ブロックベクトルは分数位置を指し示すことができる。
いくつかの例では、ブロックレベルでのイントラブロックコピーの使用は、IBCフラグなどのブロックレベルフラグを使用してシグナリングされうる。一実施形態では、現在のブロックが明示的にコーディングされる場合、ブロックレベルフラグがシグナリングされる。いくつかの例では、ブロックレベルでのイントラブロックコピーの使用を、参照インデックスの手法を使用してシグナリングすることができる。復号中の現在のピクチャは、その場合、参照ピクチャまたは特殊な参照ピクチャとして扱われる。一例では、そのような参照ピクチャは、参照ピクチャのリストの最後の位置に置かれる。特殊な参照ピクチャは、復号されたピクチャのバッファ(DPB)などのバッファ内で他の時間的な参照ピクチャと一緒に管理される。
IBCモードにはバリエーションがありうる。一例では、IBCモードは、イントラ予測モードおよびインター予測モードとは異なる第3のモードとして扱われる。したがって、暗黙的モード(またはマージモード)および明示的モードのBV予測は、通常のインターモードから分離される。IBCモードには別個のマージ候補リストを定義することができ、別個のマージ候補リスト内のエントリはBVである。同様に、一例では、IBC明示的モードのBV予測候補リストはBVのみを含む。これら2つのリスト(すなわち、別個のマージ候補リストおよびBV予測候補リスト)に適用される一般的な規則は、これら2つのリストは、候補導出プロセスに関して、通常のマージモードで使用されるマージ候補リストまたは通常のAMVPモードで使用されるAMVP予測子リストと同じ論理に従いうるということである。例えば、IBCモードの別個のマージ候補リストを導出するために、5つの空間的に隣接する位置(例えば、図2のA0、A1、およびB0、B1、B2)、例えば、HEVCまたはVVC相互マージモードがIBCモードのためにアクセスされる。
前述したように、ピクチャ内の再構成中の現在のブロックのBVには一定の制約がありうるので、現在のブロックの参照ブロックは探索範囲内にある。探索範囲とは、参照ブロックを選択することができるピクチャの一部を指す。例えば、探索範囲は、ピクチャ内の再構成されたエリアの一定の部分内にありうる。探索範囲のサイズ、位置、形状などを制約することができる。あるいは、BVを制約することもできる。一例では、BVは、x成分およびy成分を含む二次元ベクトルであり、x成分およびy成分のうちの少なくとも一方を制約することができる。制約は、BV、探索範囲、またはBVと探索範囲との組み合わせに対して指定することができる。様々な例において、BVに対して一定の制約が指定されると、探索範囲がそれに応じて制約される。同様に、探索範囲に対して一定の制約が指定されると、BVがそれに応じて制約される。
図9に、本開示の一実施形態によるイントラブロックコピーの一例を示す。現在のピクチャ(900)は、復号中に再構成されることとなる。現在のピクチャ(900)は、再構成されたエリア(910)(灰色のエリア)と、復号されるべきエリア(920)(白色のエリア)とを含む。現在のブロック(930)は、デコーダによって再構成中である。現在のブロック(930)は、再構成されたエリア(910)にある参照ブロック(940)から再構成されうる。参照ブロック(940)と現在のブロック(930)との間の位置オフセットは、ブロックベクトル(950)(またはBV(950))と称される。図9の例では、探索範囲(960)は、再構成されたエリア(910)内にあり、参照ブロック(940)は、探索範囲(960)内にあり、ブロックベクトル(950)は、探索範囲(960)内にある参照ブロック(940)を指すように制約される。
様々な制約は、BVおよび/または探索範囲に適用されうる。一実施形態では、現在のCTBにおける再構成中の現在のブロックの探索範囲は、現在のCTB内になるように制約される。
一実施形態では、イントラブロックコピーに使用されるべき参照サンプルを格納するための実効的なメモリ要件は、1CTBサイズである。一例では、CTBサイズは128×128サンプルである。現在のCTBは、再構成中の現在の領域を含む。現在の領域は、64×64サンプルのサイズを有する。参照メモリは、現在の領域の再構成されたサンプルも格納することができるので、参照メモリサイズが128×128サンプルのCTBサイズに等しい場合、参照メモリは、64×64のサンプルのさらに3つの領域を格納することができる。したがって、参照サンプルを格納するための総メモリ要件が変化しない(128×128サンプルの1CTBサイズ、または合計4つの64×64の参照サンプル)間は、探索範囲は以前に再構成されたCTBの一定の部分を含みうる。一例では、図10に示すように、以前に再構成されたCTBは、現在のCTBの左近傍である。
図10に、本開示の一実施形態による、イントラブロックコピーの一例を示す。現在のピクチャ(1001)は、再構成中の現在のCTB(1015)と、現在のCTB(1015)の左近傍である以前に再構成されたCTB(1010)とを含む。現在のピクチャ(1001)内のCTBは、128×128サンプルといったCTBサイズ、および128サンプルといったCTB幅を有する。現在のCTB(1015)は、4つの領域(1016)~(1019)を含み、現在の領域(1016)は再構成中である。現在の領域(1016)は、複数のコーディングブロック(1021)~(1029)を含む。同様に、以前に再構成されたCTB(1010)も4つの領域(1011)~(1014)を含む。コーディングブロック(1021)~(1025)は再構成されており、現在のブロック(1026)は再構成中であり、コーディングブロック(1026)~(1027)、および領域(1017)~(1019)はこれから再構成される。
現在の領域(1016)は、コロケートされた領域(すなわち以前に再構成されたCTB(1010)内の領域(1011))を有する。以前に再構成されたCTB(1010)に対するコロケートされた領域(1011)の相対位置は、現在のCTB(1015)に対する現在の領域(1016)の相対位置と同一でありうる。図10に示す例では、現在の領域(1016)は、現在のCTB(1015)内の左上領域であり、よってコロケートされた領域(1011)もまた、以前に再構成されたCTB(1010)内の左上領域である。以前に再構成されたCTB(1010)の位置は、現在のCTB(1015)の位置からCTB幅だけオフセットされているので、コロケートされた領域(1011)の位置は、現在の領域(1016)の位置からCTB幅だけオフセットされている。
一実施形態では、現在の領域(1016)のコロケートされた領域は、以前に再構成されたCTBにあり、以前に再構成されたCTBの位置は、現在のCTB(1015)の位置からCTB幅1つ分、または倍数分オフセットされており、よって、コロケートされた領域の位置もまた、現在の領域(1016)の位置から対応するCTB幅1つ分、または倍数分オフセットされている。コロケートされた領域の位置は、現在の領域(1016)から、例えば、左シフトさせたり、上シフトさせたりすることができる。
前述したように、現在のブロック(1026)に対する探索範囲のサイズは、CTBサイズによって制約される。図10の例では、探索範囲は、以前に再構成されたCTB(1010)内の領域(1012)~(1014)、およびコーディングブロック(1021)~(1025)などの、すでに再構成された現在の領域(1016)の一部を含みうる。探索範囲からコロケートされた領域(1011)をさらに除外して、探索範囲のサイズがCTBサイズ内に収まるようにする。図10を参照すると、参照ブロック(1091)は、以前に再構成されたCTB(1010)の領域(1014)に位置する。ブロックベクトル(1020)は、現在のブロック(1026)と、それぞれの参照ブロック(1091)との間のオフセットを示す。参照ブロック(1091)は探索範囲内にある。
図10に示す例は、現在の領域が現在のCTB(1015)内の別の位置に位置する他のシナリオに適切に適合されうる。一例では、現在のブロックが領域(1017)にあるとき、現在のブロックについてのコロケートされた領域は領域(1012)である。したがって、探索範囲は領域(1013)~(1014)、領域(1016)、およびすでに再構成された領域(1017)の一部を含みうる。探索範囲から領域(1011)およびコロケートされた領域(1012)をさらに除外して、探索範囲のサイズがCTBサイズ内に収まるようにする。一例では、現在のブロックが領域(1018)にあるとき、現在のブロックについてのコロケートされた領域は領域(1013)である。したがって、探索範囲は領域(1014)、領域(1016)~(1017)、およびすでに再構成された領域(1018)の一部を含みうる。探索範囲から領域(1011)~(1012)、およびコロケートされた領域(1013)をさらに除外して、探索範囲のサイズがCTBサイズ内に収まるようにする。一例では、現在のブロックが領域(1019)にあるとき、現在のブロックについてのコロケートされた領域は領域(1014)である。したがって、探索範囲は領域(1016)~(1018)、およびすでに再構成された領域(1019)の一部を含みうる。探索範囲から以前に再構成されたCTB(1010)をさらに除外して、探索範囲のサイズがCTBサイズ内に収まるようにする。
前述の説明では、参照ブロックは、以前に再構成されたCTB(1010)内または現在のCTB(1015)内にありうる。
一実施形態では、探索範囲は、以下のように指定されうる。一例では、現在のピクチャはルマピクチャであり、現在のCTBは複数のルマサンプルを含むルマCTBであり、BV(mvL)は、以下のビットストリーム適合性の制約を満たす。一例では、BV(mvL)は、分数解像度(例えば、1/16pelの解像度)を有する。
制約は、現在のブロックの参照ブロックがすでに再構成されているという第1の条件を含む。参照ブロックが矩形形状を有する場合、参照ブロックの左上サンプルと右下サンプルとが再構成されているかどうかを確認するために、近傍ブロック利用可能性確認プロセス(または参照ブロック利用可能性確認プロセス)を実施しうる。参照ブロックの左上サンプルと右下サンプルが両方とも再構成されていれば、参照ブロックは再構成されていると判定される。
例えば、参照ブロック利用可能性の導出プロセスが、(xCb,yCb)に設定された現在のブロックの左上サンプルの位置(xCurr,yCurr)、および参照ブロックの左上サンプルの位置(xCb+(mvL[0]>>4),yCb+(mvL[1]>>4))を入力として用いて呼び出される場合、参照ブロックの左上サンプルが再構成されており、ブロックベクトルmvLがx成分mvL[0]およびy成分mvL[1]を有する二次元ベクトルであるとき、出力はTRUEになる。BV(mvL)が1/16pel解像度などの分数解像度を有する場合、x成分mvL[0]およびy成分mvL[1]は、それぞれ、mvL[0]>>4およびmvL[1]>>4によって示されるように、整数解像度を有するようにシフトされる。
同様に、ブロック利用可能性の導出プロセスが、(xCb,yCb)に設定された現在のブロックの左上サンプルの位置(xCurr,yCurr)、および参照ブロックの右下サンプルの位置(xCb+(mvL[0]>>4)+cbWidth-1,yCb+(mvL[1]>>4)+cbHeight-1)を入力として用いて呼び出される場合、参照ブロックの右下サンプルが再構成されているときの出力はTRUEになる。パラメータcbWidthおよびcbHeightは、参照ブロックの幅および高さを表す。
制約はまた、以下の第2の条件のうちの少なくとも1つをさらに含みうる。1)(mvL[0]>>4)+cbWidthの値が0以下、これは、参照ブロックが現在のブロックの左にあって現在のブロックと重ならないことを示す。2)(mvL[1]>>4)+cbHeightの値が0以下、これは、参照ブロックが現在のブロックの上方にあって現在のブロックと重ならないことを示す。
制約はまた、以下の第3の条件がブロックベクトルmvLによって満たされることを含みうる。
(yCb+(mvL[1]>>4))>>CtbLog2SizeY=yCb>>CtbLog2SizeY (1)
(yCb+(mvL[1]>>4+cbHeight-1)>>CtbLog2SizeY=yCb>>CtbLog2Size (2)
(xCb+(mvL[0]>>4))>>CtbLog2SizeY>=(xCb>>CtbLog2SizeY)-1 (3)
(xCb+(mvL[0]>>4)+cbWidth-1)>>CtbLog2SizeY<=(xCb>>CtbLog2SizeY) (4)
式中、パラメータCtbLog2SizeYは、log2形式でCTB幅を表す。例えば、CTB幅が128サンプルのとき、CtbLog2SizeYは7である。式(1)~式(2)は、参照ブロックを含むCTBが現在のCTBと同じCTB行にあることを指定する(例えば、参照ブロックが以前に再構成されたCTB(1010)内にあるとき、以前に再構成されたCTB(1010)は現在のCTB(1015)と同じ行にある)。式(3)~式(4)は、参照ブロックを含むCTBが現在のCTBの左CTB列、または現在のCTBと同じCTB列のどちらかにあることを指定する。式(1)~式(4)によって記述される第3の条件は、図10を参照して説明したのと同様に、参照ブロックを含むCTBが、現在のCTB(1015)などの現在のCTB、または以前に再構成されたCTB(1010)などの、現在のCTBの左近傍のどちらかであることを指定する。
制約は、参照ブロックが現在のCTBの左近傍にある場合、参照ブロックについてのコロケートされた領域は再構成されていない(すなわち、コロケートされた領域内には再構成されたサンプルがない)、という第4の条件をさらに含みうる。さらに、参照ブロックのコロケートされた領域は、現在のCTB内にある。図10の例では、参照ブロック(1091)のコロケートされた領域は、参照ブロック(1091)が位置する領域(1014)からCTB幅だけオフセットされた領域(1019)であり、領域(1019)は再構成されていない。したがって、ブロックベクトル(1020)および参照ブロック(1091)は、前述した第4の条件を満たす。
一例では、第4の条件を以下のように指定することができる。(xCb+(mvL[0]>>4))>>CtbLog2SizeYが(xCb>>CtbLog2SizeY)-1に等しい場合、参照ブロック利用可能性の導出プロセスは、(xCb,yCb)に設定される現在のブロックの位置(xCurr,yCurr)、および位置(((xCb+(mvL[0]>>4)+CtbSizeY)>>(CtbLog2SizeY-1))<<(CtbLog2SizeY-1),((yCb+(mvL[1]>>4))>>(CtbLog2SizeY-1))<<(CtbLog2SizeY-1))を入力として用いて呼び出され、図10に示すように、出力は、コロケートされた領域が再構成されていないことを示すFALSEになる。
探索範囲および/またはブロックベクトルに対する制約は、前述した第1の条件、第2の条件、第3の条件、および第4の条件の適切な組み合わせを含みうる。一例では、制約は、図10に示すような第1の条件、第2の条件、第3の条件、および第4の条件を含む。一例では、第1の条件、第2の条件、第3の条件、および/または第4の条件を変更することができ、制約は変更された第1の条件、第2の条件、第3の条件、および/または第4の条件を含む。
第4の条件によれば、コーディングブロック(1022)~(1029)のうちの1つが現在のブロックであるとき、参照ブロックは領域(1011)内にはありえず、よって、領域(1011)がコーディングブロック(1022)~(1029)のうちのその1つの探索範囲から除外される。領域(1011)が除外される理由は以下のように指定される。参照ブロックが領域(1011)内にある場合には、参照ブロックのコロケートされた領域は領域(1016)であるが、少なくともコーディングブロック(1021)内のサンプルは再構成されており、よって、第4の条件に反する。他方、図11の領域(1116)内のコーディングブロック(1121)などの、現在の領域で最初に再構成されるコーディングブロックについては、参照ブロックのコロケートされた領域(1116)がまだ再構成されていないため、第4の条件は参照ブロックが領域(1111)内にあることを妨げない。
図11に、本開示の一実施形態によるイントラブロックコピーの一例を示す。現在のピクチャ(1101)は、再構成中の現在のCTB(1115)と、現在のCTB(1115)の左近傍である以前に再構成されたCTB(1110)とを含む。現在のピクチャ(1101)内のCTBは、CTBサイズ、およびCTB幅を有する。現在のCTB(1115)は4つの領域(1116)~(1119)を含み、現在の領域(1116)は再構成中である。現在の領域(1116)は、複数のコーディングブロック(1121)~(1129)を含む。同様に、以前に再構成されたCTB(1110)も4つの領域(1111)~(1114)を含む。再構成中の現在のブロック(1121)が現在の領域(1116)の中で最初に再構成されることとなり、コーディングブロック(1122)~(1129)が再構成されることとなる。一例では、CTBサイズは128×128サンプルであり、各領域(1111)~(1114)および(1116)~(1119)は64×64サンプルである。参照メモリサイズはCTBサイズと等しく、128×128サンプルであり、よって、探索範囲は、参照メモリサイズによって範囲が定められる場合、3つの領域と、追加領域の一部とを含む。
図10を参照して説明したのと同様に、現在の領域(1116)は、コロケートされた領域(すなわち以前に再構成されたCTB(1110)内の領域(1111))を有する。前述した第4の条件によれば、現在のブロック(1121)の参照ブロックは領域(1111)にありうるので、探索範囲は領域(1111)~(1114)を含みうる。例えば、参照ブロックが領域(1111)内にあるとき、参照ブロックのコロケートされた領域は領域(1116)であり、領域(1116)内には、現在のブロック(1121)が再構成される前に再構成されたサンプルがない。しかしながら、図10および第4の条件を参照して説明したように、例えば、コーディングブロック(1121)の再構成後には、コーディングブロック(1122)を再構成するための探索範囲に領域(1111)を含めることはできなくなる。したがって、参照メモリバッファの厳密な同期およびタイミング制御が用いられることになり、これは困難な場合がある。
いくつかの実施形態によれば、現在のブロックが現在のCTBの現在の領域で最初に再構成されこととなるとき、現在のCTBと以前に再構成されたCTBとが同じ現在のピクチャ内にある場合に以前に再構成されたCTB内にある現在の領域のコロケートされた領域を探索範囲から除外することができる。ブロックベクトルは、参照ブロックが以前に再構成されたCTB内のコロケートされた領域を除外した探索範囲内にあるように決定されうる。一実施形態では、探索範囲は、デコーディング順序でコロケートされた領域の後、現在のブロックの前に再構成されるコーディングブロックを含む。
以下の説明では、CTBサイズは多様でありえ、最大CTBサイズは参照メモリサイズと同一に設定される。一例では、参照メモリサイズまたは最大CTBサイズは128×128サンプルである。説明は、他の参照メモリサイズまたは最大CTBサイズに適切に適合されうる。
一実施形態では、CTBサイズは参照メモリサイズと等しい。以前に再構成されたCTBは現在のCTBの左近傍であり、コロケートされた領域の位置は現在の領域の位置からCTB幅だけオフセットされており、探索範囲内のコーディングブロックは、現在のCTBおよび以前に再構成されたCTBの少なくとも一方にある。
図12A~図12Dに、本開示の一実施形態による、イントラブロックコピーの例を示す。図12A~図12Dを参照すると、現在のピクチャ(1201)は、再構成中の現在のCTB(1215)と、現在のCTB(1215)の左近傍である以前に再構成されたCTB(1210)とを含む。現在のピクチャ(1201)内のCTBは、CTBサイズ、およびCTB幅を有する。現在のCTB(1215)は、4つの領域(1216)~(1219)を含む。同様に、以前に再構成されたCTB(1210)も4つの領域(1211)~(1214)を含む。一実施形態では、CTBサイズは最大CTBサイズであり、参照メモリサイズと等しい。一例では、CTBサイズおよび参照メモリサイズは128×128サンプルであり、よって、各領域(1211)~(1214)および(1216)~(1219)は、64×64サンプルのサイズを有する。
図12A~図12Dに示す例では、現在のCTB(1215)は、領域(1216)~(1219)にそれぞれ対応する、左上領域、右上領域、左下領域、および右下領域を含む。以前に再構成されたCTB(1210)は、領域(1211)~(1214)にそれぞれ対応する、左上領域、右上領域、左下領域、および右下領域を含む。
図12Aを参照すると、現在の領域(1216)が再構成中である。現在の領域(1216)は、複数のコーディングブロック(1221)~(1229)を含みうる。現在の領域(1216)は、以前に再構成されたCTB(1210)の中に、コロケートされた領域、すなわち領域(1211)を有する。再構成されるべきコーディングブロック(1221)~(1229)のうちの1つの探索範囲から、コロケートされた領域(1211)を除外することができる。探索範囲は、デコーディング順序でコロケートされた領域(1211)の後、現在の領域(1216)の前に再構成される、以前に再構成されたCTB(1210)の領域(1212)~(1214)を含みうる。
図12Aを参照すると、コロケートされた領域(1211)の位置は、現在の領域(1216)の位置から、128サンプルなどCTB幅だけオフセットされている。例えば、コロケートされた領域(1211)の位置は、現在の領域(1216)の位置から128サンプル分左シフトされている。
図12Aを再度参照すると、現在の領域(1216)が現在のCTB(1215)の左上領域であるとき、コロケートされた領域(1211)は、以前に再構成されたCTB(1210)の左上領域であり、探索領域から以前に再構成されたCTBの左上領域を除外する。
図12Bを参照すると、現在の領域(1217)が再構成中である。現在の領域(1217)は、複数のコーディングブロック(1241)~(1249)を含みうる。現在の領域(1217)は、コロケートされた領域(すなわち以前に再構成されたCTB(1210)の中の、領域(1212))を有する。複数のコーディングブロック(1241)~(1249)のうちの1つの探索範囲から、コロケートされた領域(1212)を除外することができる。探索範囲は、以前に再構成されたCTB(1210)の領域(1213)~(1214)と、コロケートされた領域(1212)の後、現在の領域(1217)の前に再構成される、現在のCTB(1215)内の領域(1216)とを含む。探索範囲から、参照メモリサイズ(すなわち1CTBサイズ)の制約により、領域(1211)をさらに除外する。同様に、コロケートされた領域(1212)の位置は、現在の領域(1217)の位置から、128サンプルなどCTB幅だけオフセットされている。
図12Bの例では、現在の領域(1217)は現在のCTB(1215)の右上領域であり、コロケートされた領域(1212)もまた、以前に再構成されたCTB(1210)の右上領域であり、探索領域から、以前に再構成されたCTB(1210)の右上領域を除外する。
図12Cを参照すると、現在の領域(1218)が再構成中である。現在の領域(1218)は、複数のコーディングブロック(1261)~(1269)を含みうる。現在の領域(1218)は、以前に再構成されたCTB(1210)の中に、コロケートされた領域(すなわち領域(1213))を有する。複数のコーディングブロック(1261)~(1269)のうちの1つの探索範囲から、コロケートされた領域(1213)を除外することができる。探索範囲は、以前に再構成されたCTB(1210)の領域(1214)と、コロケートされた領域(1213)の後、現在の領域(1218)の前に再構成される、現在のCTB(1215)内の領域(1216)~(1217)とを含む。同様に探索範囲から、参照メモリサイズの制約により、領域(1211)~(1212)をさらに除外する。コロケートされた領域(1213)の位置は、現在の領域(1218)の位置から、128サンプルなどCTB幅だけオフセットされている。図12Cの例では、現在の領域(1218)が現在のCTB(1215)の左下領域であるとき、コロケートされた領域(1213)もまた、以前に再構成されたCTB(1210)の左下領域であり、探索領域から、以前に再構成されたCTB(1210)の左下領域を除外する。
図12Dを参照すると、現在の領域(1219)が再構成中である。現在の領域(1219)は、複数のコーディングブロック(1281)~(1289)を含みうる。現在の領域(1219)は、以前に再構成されたCTB(1210)の中に、コロケートされた領域(すなわち領域(1214))を有する。複数のコーディングブロック(1281)~(1289)のうちの1つの探索範囲から、コロケートされた領域(1214)を除外することができる。探索範囲は、デコーディング順序でコロケートされた領域(1214)の後、現在の領域(1219)の前に再構成される、現在のCTB(1215)内の領域(1216)~(1218)を含む。探索範囲は、参照メモリサイズの制約により、領域(1211)~(1213)を除外し、よって、探索範囲から、以前に再構成されたCTB(1210)を除外する。同様に、コロケートされた領域(1214)の位置は、現在の領域(1219)の位置から、128サンプルなどCTB幅だけオフセットされている。図12Dの例では、現在の領域(1219)が現在のCTB(1215)の右下領域であるとき、コロケートされた領域(1214)もまた、以前に再構成されたCTB(1210)の右下領域であり、探索領域から、以前に再構成されたCTB(1210)の右下領域を除外する。
図2に戻って参照すると、A0、A1、およびB0、B1、B2(それぞれ202~206)で表された5つの周囲サンプル(または位置)と関連付けられたMVは、空間マージ候補と称されうる。候補リスト(例えば、マージ候補リスト)は、空間マージ候補に基づいて形成されうる。位置から候補リストを形成するために、任意の適切な順序が使用されうる。一例では、この順序はA0、B0、B1、A1、B2とすることができ、A0が最初であり、B2が最後である。一例では、この順序はA1、B1、B0、A0、B2とすることができ、A1が最初であり、B2が最後である。
いくつかの実施形態によれば、現在のブロックの動きベクトル予測(MVP)候補(HMVP候補とも称される)を提供するために、現在のブロック(例えば、コーディングブロック(CB)または現在のCU)についての以前にコーディングされたブロックの動き情報は、履歴ベース動きベクトル予測(HMVP)バッファ(例えば、テーブル)に格納されうる。HMVPバッファは、1つまたは複数のHMVP候補を含んでいてもよく、エンコーディング/デコーディングプロセス中に維持されうる。一例では、HMVPバッファ内のHMVP候補は、以前にコーディングされたブロックの動き情報に対応する。HMVPバッファは、任意の適切なエンコーダおよび/またはデコーダにおいて使用されうる。(1つまたは複数の)HMVP候補は、(1または複数の)空間MVPおよび(1または複数の)TMVPの後にマージ候補リストに追加されうる。
HMVPバッファは、新しいCTU(または新しいCTB)行が発生したときにリセットされ(例えば、空にされ)うる。非サブブロックのインターコーディングされたブロックが存在するとき、関連付けられた動き情報は、新しいHMVP候補としてHMVPバッファの最後のエントリに追加されうる。
VTM3などの一例では、HMVPバッファのバッファサイズ(Sで表す)は6に設定され、最大6つのHMVP候補がHMVPバッファに追加されうることを示す。いくつかの実施形態では、HMVPバッファは先入れ先出し(FIFO)規則で動作することができ、よって、HMVPバッファに最初に格納される動き情報(またはHMVP候補)は、例えば、HMVPバッファが一杯になったときに、HMVPバッファから最初に削除されるものである。HMVPバッファに新しいHMVP候補を挿入するとき、制約付きFIFO規則を利用することができ、同一または類似のHMVP候補がHMVPバッファ内にあるかどうかを判定するために冗長検査がまず適用される。同一または類似のHMVP候補がHMVPバッファ内にあると判定された場合、同一または類似のHMVP候補をHMVPバッファから削除することができ、残りのHMVP候補をHMVPバッファ内で前進させることができる。
HMVP候補は、例えば、マージモードで、マージ候補リスト構築プロセスで使用されうる。HMVPバッファ内の(1つまたは複数の)最後に格納されたHMVP候補は、順番に検査され、(1つまたは複数の)TMVP候補の後にマージ候補リストに挿入されうる。冗長検査は、マージ候補リスト内にある空間マージ候補または時間マージ候補に対してHMVP候補に適用されうる。説明は、AMVP候補リストを構築するためにAMVPモードに適切に適合されうる。
冗長検査動作の数を減らすために、以下の簡略化を用いることができる。
(i)マージ候補リストの生成に使用されるHMVP候補の数は、(N<=4)?M:(8-N)として設定されうる。Nは、マージ候補リスト内の既存の候補の数を示し、Mは、HMVPバッファ内の(1つまたは複数の)利用可能なHMVP候補の数を示す。マージ候補リスト内の既存の候補の数(N)が4以下である場合、マージ候補リストの生成に使用されるHMVP候補の数はMに等しい。そうでない場合、マージ候補リストの生成に使用されるHMVP候補の数は(8-N)に等しい。
(ii)利用可能なマージ候補の総数が最大許容マージ候補から1を引いた数に達すると、HMVPバッファからのマージ候補リスト構築プロセスは終了する。
IBCモードがインター予測モードとは別のモードとして動作する場合、IBCモードのための簡略化されたBV導出プロセスが使用されうる。履歴ベースのブロックベクトル予測バッファ(HBVPバッファと称される)は、BV予測を実行するために使用されうる。HBVPバッファは、現在のピクチャ内の現在のブロック(例えば、CBまたはCU)の以前にコーディングされたブロックのBV情報(例えば、BV)を格納するために使用されうる。一例では、HBVPバッファは、HMVPバッファなどの他の(1つまたは複数の)バッファとは別個の履歴バッファである。HBVPバッファは、テーブルでありうる。
HBVPバッファは、現在のブロックについてのBV予測子(BVP)候補(HBVP候補とも称される)を提供しうる。HBVPバッファ(例えばテーブル)は、1つまたは複数のHBVP候補を含んでいてもよく、エンコーディング/デコーディングプロセス中に維持されうる。一例では、HBVPバッファ内のHBVP候補は、現在のピクチャ内の以前にコーディングされたブロックのBV情報に対応する。HBVPバッファは、任意の適切なエンコーダおよび/またはデコーダにおいて使用されうる。(1つまたは複数の)HBVP候補は、現在のブロックの(1つまたは複数の)空間的に近傍のブロックの(1つまたは複数の)BV後のBV予測のために構成されたマージ候補リストに追加されうる。BV予測のために構成されたマージ候補リストは、マージBV予測モードおよび/または非マージBV予測モードのために使用されうる。
HBVPバッファは、新しいCTU(または新しいCTB)行が発生したときにリセットされ(例えば、空にされ)うる。
VVCなどの一例では、HBVPバッファのバッファサイズは6に設定され、最大6つのHBVP候補がHBVPバッファに追加されうることを示す。いくつかの実施形態では、HBVPバッファは先入れ先出し(FIFO)規則で動作することができ、よって、HBVPバッファに最初に格納されるBV情報(またはHBVP候補)は、例えば、HBVPバッファが一杯になったときに、HBVPバッファから最初に削除されるものである。HBVPバッファに新しいHBVP候補を挿入するとき、制約付きFIFO規則を利用することができ、同一または類似のHBVP候補がHBVPバッファ内にあるかどうかを判定するために冗長検査がまず適用される。同一または類似のHBVP候補がHBVPバッファ内にあると判定された場合、同一または類似のHBVP候補をHBVPバッファから削除することができ、残りのHBVP候補をHBVPバッファ内で前進させることができる。
HBVP候補は、例えば、マージBV予測モードで、マージ候補リスト構築プロセスで使用されうる。HBVPバッファ内の(1つまたは複数の)最後に格納されたHBVP候補は、順番に検査され、(1つまたは複数の)空間候補の後にマージ候補リストに挿入されうる。冗長検査は、マージ候補リスト内にある空間マージ候補に対してHBVP候補に適用されうる。
一実施形態では、HBVPバッファは、IBCモードでコーディングされた1つまたは複数の以前にコーディングされたブロックの1つまたは複数のBV情報を格納するために確立される。1つまたは複数のBV情報は、IBCモードでコーディングされた1つまたは複数の以前にコーディングされたブロックの1つまたは複数のBVを含みうる。さらに、1つまたは複数のBV情報の各々は、IBCモードでコーディングされたそれぞれの以前にコーディングされたブロックのブロックサイズ、ブロック位置などといったサイド情報(または追加情報)を含みうる。
クラスベースの履歴ベースのブロックベクトル予測(CBVPとも称される)では、現在のブロックについて、一定の条件を満たすHBVPバッファ内の1つまたは複数のBV情報が対応するカテゴリ(クラスとも称される)に分類されえ、よって、CBVPバッファを形成することができる。一例では、HBVPバッファ内の各BV情報は、例えば、IBCモードでコーディングされた、それぞれの以前にコーディングされたブロックについてのものである。以前にコーディングされたブロックのBV情報は、BV、ブロックサイズ、ブロック位置などを含みうる。以前にコーディングされたブロックは、ブロック幅、ブロック高さ、およびブロック面積を有する。ブロック面積は、ブロック幅とブロック高さとを乗じたものでありうる。一例では、ブロックサイズはブロック面積で表される。以前にコーディングされたブロックのブロック位置は、以前にコーディングされたブロックの左上隅(例えば、4×4エリアの左上隅)または左上サンプルによって表されうる。
図13に、本開示の一実施形態による、現在のブロック(例えば、CB、CU)(1310)のIBC BV予測のための空間クラスの一例を示す。左領域(1302)は、現在のブロック(1310)の左にありうる。左領域(1302)内の(1つまたは複数の)それぞれのブロック位置を有する(1つまたは複数の)以前にコーディングされたブロックのBV情報は、左候補または左BV候補と称されうる。上領域(1303)は、現在のブロック(1310)の上にありうる。上領域(1303)内の(1つまたは複数の)それぞれのブロック位置を有する(1つまたは複数の)以前にコーディングされたブロックのBV情報は、上候補または上BV候補と称されうる。左上領域(1304)は、現在のブロック(1310)の左上にありうる。左上領域(1304)内の(1つまたは複数の)それぞれのブロック位置を有する(1つまたは複数の)以前にコーディングされたブロックのBV情報は、左上候補または左上BV候補と称されうる。右上領域(1305)は、現在のブロック(1310)の右上にありうる。右上領域(1305)内の(1つまたは複数の)それぞれのブロック位置を有する(1つまたは複数の)以前にコーディングされたブロックのBV情報は、右上候補または右上BV候補と称されうる。左下領域(1306)は、現在のブロック(1310)の左下にありうる。左下領域(1306)内の(1つまたは複数の)それぞれのブロック位置を有する(1つまたは複数の)以前にコーディングされたブロックのBV情報は、左下候補または左下BV候補と称されうる。他の種類の空間クラスもまた、定義され、CBVPバッファ内で用いられうる。
以前にコーディングされたブロックのBV情報が以下の条件を満たす場合、BV情報は対応するカテゴリ(またはクラス)に分類されうる。
(i)クラス0:ブロックサイズ(例えば、ブロック面積)が閾値(例えば、64画素)以上である。
(ii)クラス1:BVの発生(または頻度)が2以上である。BVの発生は、(1つまたは複数の)以前にコーディングされたブロックを予測するためにBVが使用される回数を指すことができる。CBVPバッファを形成するためにプルーニングプロセスが用いられる場合、以前にコーディングされたブロックを予測する際にBVが複数回使用されるとき、BVは(同じBVを有する複数のエントリにではなく)1つのエントリに格納されうる。BVの発生は、記録されうる。
(iii)クラス2:ブロック位置は左領域(1302)内にあり、以前にコーディングされたブロックの一部(例えば、4×4エリアの左上隅)が現在のブロック(1310)の左にある。以前にコーディングされたブロックは、左領域(1302)内にありうる。あるいは、以前にコーディングされたブロックは左領域(1302)を含む複数の領域にまたがることができ、ブロック位置は左領域(1302)内にある。
(iv)クラス3:ブロック位置は上領域(1303)内にあり、以前にコーディングされたブロックの一部(例えば、4×4エリアの左上隅)が現在のブロック(1310)の上にある。以前にコーディングされたブロックは、上領域(1303)内にありうる。あるいは、以前にコーディングされたブロックは上領域(1303)を含む複数の領域にまたがることができ、ブロック位置は上領域(1303)内にある。
(v)クラス4:ブロック位置は左上領域(1304)内にあり、以前にコーディングされたブロックの一部(例えば、4×4エリアの左上隅)が現在のブロック(1310)の左上側にある。以前にコーディングされたブロックは、左上領域(1304)内にありうる。あるいは、以前にコーディングされたブロックは左上領域(1304)を含む複数の領域にまたがることができ、ブロック位置は左上領域(1304)内にある。
(vi)クラス5:ブロック位置は右上領域(1305)内にあり、以前にコーディングされたブロックの一部(例えば、4×4エリアの左上隅)が現在のブロック(1310)の右上側にある。以前にコーディングされたブロックは、右上領域(1305)内にありうる。あるいは、以前にコーディングされたブロックは右上領域(1305)を含む複数の領域にまたがることができ、ブロック位置は右上領域(1305)内にある。
(vii)クラス6:ブロック位置は左下領域(1306)内にあり、コーディングされたブロックの一部(例えば、4×4エリアの左上隅)が現在のブロック(1310)の左下側にある。以前にコーディングされたブロックは、左下領域(1306)内にありうる。あるいは、以前にコーディングされたブロックは左下領域(1306)を含む複数の領域にまたがることができ、ブロック位置は左下領域(1306)内にある。
カテゴリ(またはクラス)ごとに、最後にコーディングされたブロックのBVはBVP候補として導出されうる。CBVPバッファは、クラス0からクラス6の順に各カテゴリの(1つまたは複数の)BV予測子を付加することによって構築されうる。CBVPについての前述の説明は、より少ないクラスまたは前述していない追加のクラスを含むように適切に適合されうる。クラス0~6のうちの1つまたは複数が変更されうる。一例では、HBVPバッファ内の各エントリは、7つのクラス0~6のうちの1つに分類される。インデックスは、クラス0~6のうちのどれが選択されるかを示すためにシグナリングされうる。デコーダ側では、選択されたクラスの最初のエントリを使用して、現在のブロックのBVが予測されうる。
本開示の態様は、参照位置からの単一値を用いたストリングマッチングのための技術を提供する。ストリングマッチングは、ストリングコピーモードまたはストリング予測とも称される。ストリングマッチングは、イントラブロックコピー(IBC)と同様であり、同じピクチャ内の再構成されたエリア基づいてサンプルのストリングを再構成することができる。さらに、ストリングマッチングは、サンプルのストリングの形状に関してより多くの柔軟性を提供する。
図14に、本開示の一実施形態によるストリングコピーモードの一例を示す。現在のピクチャ(1410)は、再構成された領域(灰色のエリア)(1420)と、再構成中の領域(1421)とを含む。領域(1421)内の現在のブロック(1435)が再構成中である。現在のブロック(1435)は、CB、CUなどでありうる。現在のブロック(1435)は、図14の例のストリング(1430)やストリング(1431)などの複数のストリングを含みうる。一例では、現在のブロック(1435)は複数の連続したストリングに分割され、走査順序に沿ってあるストリングの後に次のストリングが続く。走査順序は、ラスタ走査順序、トラバース走査順序などの任意の適切な走査順序とすることができる。
再構成された領域(1420)は、ストリング(1430)およびストリング(1431)を再構成するための参照エリアとして使用されうる。
複数のストリングの各々について、ストリングオフセットベクトル(ストリングベクトル(SV)とも称される)およびストリングの長さ(ストリング長とも称される)がシグナリングされうる。SVは、再構成されるべきストリングと、参照エリア(1420)内に位置する、再構成された参照ストリングとの間の変位オフセットを示す変位ベクトルでありうる。参照ストリングは、再構成されるべきストリングを再構成するために使用されうる。例えば、SV0は、ストリング(1430)と参照ストリング(1400)との間の変位を示す変位ベクトルであり、SV1は、ストリング(1431)と参照ストリング(1401)との間の変位を示す変位ベクトルである。よって、SVは、対応する参照ストリングが参照エリア(1420)内のどこに位置するかを示すことができる。ストリングのストリング長は、ストリング内のサンプル数を示す。一般に、再構成されるストリングは、参照ストリングと同じ長さを有する。
図14を参照すると、現在のブロック(1435)は、64個のサンプルを含む8×8CBである。現在のブロック(1435)は、ラスタ走査順序を用いてストリング(1430)とストリング(1431)とに分割されている。ストリング(1430)は現在のブロック(1435)の最初の29個のサンプルを含み、ストリング(1431)は現在のブロック(1435)の残りの35個のサンプルを含む。ストリング(1430)を再構成するために使用される参照ストリング(1400)は、対応するストリングベクトルSV0によって示されることができ、ストリング(1431)を再構成するために使用される参照ストリング(1401)は、対応するストリングベクトルSV1によって示されることができる。
一般に、ストリングサイズは、ストリングの長さまたはストリング内のサンプル数を指しうる。図14を参照すると、ストリング(1430)は29個のサンプルを含み、よってストリング(1430)のストリングサイズは29である。ストリング(1431)は35個のサンプルを含み、よってストリング(1431)のストリングサイズは35である。ストリング配置(またはストリング位置)は、ストリング内のサンプル(例えば、デコーディング順序で最初のサンプル)のサンプル位置によって表されうる。
前述の説明は、任意の適切な数のストリングを含む現在のブロックを再構成するように適切に適合されうる。あるいは、一例では、現在のブロック内のサンプルが参照エリア内に一致するサンプルを有していない場合、エスケープサンプルがシグナリングされ、エスケープサンプルの値は、参照エリア内の再構成されたサンプルを参照せずに直接コーディングされうる。
いくつかの例では、ストリング内のすべてのサンプルが同じサンプル値を共有し、この特定のストリングマッチングモードを単一値ストリングモードと称されうる。単一値ストリングモードでは、ストリングのストリングベクトルは、参照エリア内の再構成されたサンプルを参照するために使用されえ、再構成されたサンプルはストリングのためのサンプル値を有する。
一例では、単一値ストリングモードを改善するために、単一値ストリングモードのためのストリングベクトルをシグナリングする代わりに、単一値ストリングモードを用いる最近発生した復号されたサンプル値のリストが履歴ベースのリストを形成するために使用され、履歴ベースのリストを格納するためのメモリ空間は、履歴バッファと称されうる。履歴ベースのリストでは、サンプル値を記録する代わりに、最近発生したサンプル位置(例えば、現在のピクチャの左上隅などの原点に対するx座標およびy座標)が履歴バッファに格納される。
履歴ベースのリストを使用するために、いくつかの例では、履歴ベースのリスト内のエントリごとに、エントリが単一値ストリングモードで現在のブロックを予測するために使用されるかどうかに関して、再使用フラグをシグナリングすることができる。一例では、単一値ストリングモードの現在のブロックのサンプル値が履歴ベースのリスト内のエントリから見つけられない場合、現在のブロックをコーディングするためにサンプル値をビットストリームで直接シグナリングすることができる。その場合、シグナリングされるサンプル値は、新しい単一値と称されうる。
コーディングブロックについて、複数のストリングは、単一値ストリングモードでコーディングされうる。1組の新しい単一値が、コーディングブロックレベルでシグナリングされうる。いくつかの例では、予測のために、サイズMの候補セットは、現在のコーディングブロックにおける再使用を有する履歴ベースのリストのエントリと、現在のコーディングブロックのシグナリングされた新しい単一値とを組み合わせることによって形成されうる。履歴ベースのリストはPのサイズを有することができ、PはMよりも大でありうる。候補セットは、履歴ベースの候補サブセットや新しい単一値候補サブセットなどの2つのサブセットを含む。履歴ベースのリスト内のエントリごとに、エントリが現在のコーディングブロック内のストリングを予測するために使用されるかどうかを示すために、再使用フラグがシグナリングされる。一例では、履歴ベースのリスト内のN(N<=固定サイズM)個のエントリが選択され、再使用されると仮定する。これらN個のエントリは、履歴ベースの候補サブセットと称される。いくつかの例では、履歴ベースの候補サブセットから予測されるサンプル値を選択するためのインデックスは、ビットストリームで送信されうる。インデックスが[0,N-1]の範囲内の値を有する場合、単一値ストリングモードで予測するために履歴ベースの候補サブセットからインデックスに応じた特定のエントリが選択される。そうではなく、インデックスがNより大きい場合、予測を行うためにビットストリームから新しい単一値が復号される必要がある。予測のための全体的な候補がM個のエントリを超えないように、インデックス範囲は[0,M-1]内に制約されうる。参照位置内またはビットストリームからの対応するサンプルが、単一値ストリングモードでの予測に使用される。
いくつかの例では、単一値ストリングモードの新しい現在のコーディングブロックごとに、履歴ベースのリスト内のどのエントリが、シグナリングされた新しい単一値と共に、現在のコーディングブロックに使用されるかを示すために、1組の再使用フラグがシグナリングされうる。現在のコーディングブロックのコーディング後、履歴ベースのリストは、現在のコーディングブロックに対してすでに確立された候補セット(例えば、前述したような、履歴ベースの候補サブセットおよび新しい単一値候補サブセットとシグナリングされた新しい単一値との組み合わせ)を使用して更新されうる。確立された候補セットを挿入することによって履歴ベースのリストが一杯にならない場合、再使用のためにマークされていない履歴ベースのリスト内のエントリは、履歴ベースのリストが一杯になるまで履歴ベースのリストに戻されてもよい。
単一値ストリングモードの関連する設計では、単一値ストリングモードでコーディングされた最近のストリングによって参照サンプルが参照される場合でさえも、単一値ストリングモードについて履歴ベースのリストに格納された参照サンプル位置は位置情報を更新せず、その場合、同じ参照サンプル値は、将来の参照目的のために、より最新の位置情報を有しうる。いくつかの例では、単一値ストリングモードのための、履歴ベースのリスト内のエントリである履歴バッファ内の参照サンプル位置は、参照サンプルメモリ更新のためにもはや利用されえない場合があり、その場合、その参照サンプル位置は使用されえない。
本開示の態様は、単一値ストリングモードにおける履歴ベースのリストの、関連する設計よりも効率的な位置更新のための技術を提供し、単一値ストリングモードにおける参照サンプルのよりよい利用可能性を提供する。本開示の技術は、別々に使用されてもよく、任意の順序で組み合わされてもよい。以下の説明では、ブロックという用語は、予測ブロック、コーディングブロック、またはコーディングユニット、すなわちCUとして解釈されうる。
いくつかの実施形態では、単一値ストリングモードのための履歴ベースのリストは、IBCのための参照サンプルメモリ更新機構に従って更新されうる。
いくつかの例では、参照サンプルメモリサイズのサイズは、CTUサイズ(例えば、128×128サンプル)と同じであると仮定される。
図15に、いくつかの例におけるIBCモードのための参照サンプルメモリ更新のプロセスを示し、単一値ストリングモードのための履歴ベースのリストはそれに応じて更新されうる。
図15の例では、各CTUは128×128サンプルのサイズを有し、よって、参照サンプルメモリは128×128サンプルを格納するためのサイズを有する。図15では、参照サンプルメモリは、各々が64×64サンプルのサイズを有する4つのサブ部分に分割されている。現在のCTUをコーディングする動作中に、参照サンプルメモリは、いくつかの例では、1つのサブ部分ごとに更新される。図15は、現在のCTUのコーディング中の参照サンプルメモリの状態(参照サンプルメモリビュー)、およびCTUに基づく対応するエンコーディング/デコーディングプロセス(CTUビュー)を示している。図15では、コーディングされた部分は灰色で示されており、コーディングされていない部分は白色で示されており、現在のコーディングブロックは縞模様で示されており、現在のコーディングブロックの参照ブロックは破線で示されている。
例えば、最初は、参照サンプルメモリは、(1510)で示すように、状態(0)にあり、現在のCTUの左CTUに再構成されたサンプルを格納する。例えば、左CTUは、0、1、2、および3とラベル付けされた4つのサブブロックに分割されえ、参照サンプルメモリは、1510で示されるように、左CTUのサブブロック0~3の再構成されたサンプルを格納する。現在のCTUは、4、5、6、および7とラベル付けされた4つのサブブロックに分割されうる。
現在のCTU内のサブブロック4を符号化/復号するために、参照サンプルメモリは、(1520)で示すように、状態(1)になる。参照サンプルメモリは、左CTUのサブブロック1、2、および3の再構成されたサンプルを依然として格納することができる。左CTUのサブブロック0の再構成されたサンプルを格納するために使用された参照サンプルメモリのサブ部分は、現在のCTUのサブブロック4の再構成されたサンプルを格納するために使用される。一例では、現在のCTUのサブブロック4をコーディングする前に、サブブロック0の再構成されたサンプルを格納するために使用された参照サンプルメモリのサブ部分はクリアされうる。
CTUビューから、(1525)で示すように、左CTUのサブブロック0は参照サンプルメモリにおいて利用可能でなく、「×」でマークされている。左CTU内のサブブロック1~3は依然として参照サンプルメモリ内にある。
現在のCTU内のサブブロック5を符号化/復号するために、参照サンプルメモリは、(1530)で示すように、状態(2)になる。参照サンプルメモリは、左CTUのサブブロック2および3、ならびに現在のCTUのサブブロック4の再構成されたサンプルを依然として格納することができる。左CTUのサブブロック1の再構成されたサンプルを格納するために使用された参照サンプルメモリのサブ部分は、現在のCTUのサブブロック5の再構成されたサンプルを格納するために使用される。
CTUビューから、(1535)で示すように、左CTUのサブブロック0および1は参照サンプルメモリにおいて利用可能でなく、「×」でマークされている。左CTU内のサブブロック2および3は依然として参照サンプルメモリ内にある。
現在のCTU内のサブブロック6を符号化/復号するために、参照サンプルメモリは、(1540)で示すように、状態(3)になる。参照サンプルメモリは、左CTUのサブブロック3、ならびに現在のCTUのサブブロック4および5の再構成されたサンプルを依然として格納することができる。左CTUのサブブロック2の再構成されたサンプルを格納するために使用された参照サンプルメモリのサブ部分は、現在のCTUのサブブロック6の再構成されたサンプルを格納するために使用される。
CTUビューから、(1545)で示すように、左CTUのサブブロック0、1および2は参照サンプルメモリにおいて利用可能でなく、「×」でマークされている。左CTU内のサブブロック3は依然として参照サンプルメモリ内にある。
現在のCTU内のサブブロック7を符号化/復号するために、参照サンプルメモリは、(1550)で示すように、状態(4)になる。参照サンプルメモリは、現在のCTUのサブブロック4、5、および6の再構成されたサンプルを依然として格納することができる。左CTUのサブブロック3の再構成されたサンプルを格納するために使用された参照サンプルメモリのサブ部分は、現在のCTUのサブブロック7の再構成されたサンプルを格納するために使用される。
CTUビューから、(1555)で示すように、左CTUのサブブロック0、1、2および3は参照サンプルメモリにおいて利用可能でなく、「×」でマークされている。
図15の例では、各状態において(現在のCTUの各64×64サブブロックのコーディングの開始時に)、参照サンプルメモリ内で利用可能な対応するサンプルを有する利用可能な参照エリアは、「×」マークなしの灰色で示されている。いくつかの実施形態では、利用可能な参照エリア内にあるサンプル値は、単一値ストリングモードにおける予測値として使用されうる。したがって、履歴ベースのリスト内の利用可能なサンプル値を単一値ストリングモードに適切に使用するために、履歴ベースのリストは、IBC内の利用可能な参照エリアに従って更新されうる。
一実施形態では、各64×64サブブロックのコーディングの開始時に、もはや参照サンプルメモリ内にない(もはや利用可能な参照エリア内にない)履歴ベースのリスト内のサンプル/位置は、履歴ベースのリストから削除されうる。例えば、履歴ベースのリスト内のエントリが「×」でマークされたエリア内にある場合、そのエントリは履歴ベースのリストから削除されうる。
一例では、CTUサイズは128×128であり、参照サンプルメモリから削除されるべきサンプルのエリアは、サイズが64×64であるか、または現在のブロックサイズ(64×64より大きい場合)のどちらかでありうる。CTUサイズが128×128より小さい場合、削除領域(参照サンプルメモリから削除されるサンプルのエリア)は、参照サンプルメモリ内の1CTUサイズとすることができる。復号されたピクチャの観点から、この場合、各現在のCTUの始めに、いくつかのすぐ左のCTUの中の1つ前の左端のCTUが、利用不可としてマークされうる。
いくつかの実施形態では、新しいストリングが単一値ストリングモードでコーディングされるとき、履歴ベースのリスト内の参照サンプルの位置情報が更新されうる。
例えば、長さNの現在のストリングのサンプルは、走査順序で(X0,Y0)、(X1,Y1)、…、(XN-1,YN-1)に位置する。(X0,Y0)は、走査順序に従って現在のストリング内の最初のサンプルの位置であり、(XN-1,YN-1)は、走査順序に従って現在のストリング内のN番目のサンプル(または最後のサンプル)の位置である。いくつかの例では、現在のストリングは単一値ストリングモードでコーディングされ、現在のストリングのサンプル値は、履歴ベースのリスト内の特定のエントリAに、または履歴ベースの候補サブセット内に格納された位置(Xr,Yr)に基づいてコーディングされる。例えば、現在のストリングのサンプル値は位置(Xr,Yr)と同じサンプル値を有する。
本開示の一態様によれば、現在のストリングをコーディングした後、履歴ベースのリスト内の特定のエントリAの位置情報は、現在のストリングの情報に基づいて変更される。
一実施形態では、(X0,Y0)などの最初のサンプルの位置が、履歴ベースのリストの特定のエントリA内の(Xr,Yr)を置き換えるために使用される。
他の実施形態では、(XN-1,YN-1)などの最後のサンプルの位置が、履歴ベースのリストの特定のエントリA内の(Xr,Yr)を置き換えるために使用される。
第3の実施形態では、ストリング内の任意のサンプル位置(Xi,Yi)は、履歴ベースのリストの特定のエントリA内の(Xr,Yr)を置き換えるために使用されうる。
本開示の別の態様によれば、pixelDPBと称されるような、履歴バッファのセカンダリバッファを使用して、履歴ベースのリスト内にあったが、参照サンプルメモリ更新のために履歴ベースのリストから削除された位置における対応するサンプル値を格納することができる。いくつかの例では、セカンダリバッファはサンプル値のみを格納する。いくつかの例では、セカンダリバッファは、位置と対応するサンプル値の両方を格納する。例えば、履歴ベースのリストのエントリに格納された位置は、削除されるものとして識別され、次いで、その位置サンプル値および/または位置は、セカンダリバッファpixelDPBに格納されうる。セカンダリバッファpixelDPBのサイズは、例えば、合計M個のエントリ、または履歴ベースのリストと同じ数のエントリを有するなど、予め定義されうる。
一実施形態では、セカンダリバッファpixelDPBは先入れ先出し(FIFO)方式で動作することができる。例えば、新しいエントリがセカンダリバッファpixelDPBに入れられ、セカンダリバッファpixelDPBが一杯になると、新しいエントリのための空間を作るために、セカンダリバッファpixelDPBから最も古いエントリが削除されうる。
他の実施形態では、セカンダリバッファpixelDPBは、履歴ベースのリストと同じサイズのエントリPを有する。例えば、pixdelDPB[]はセカンダリバッファを表し、pixdelDPB[x](xは、0、1、…、P-1でありうる)はセカンダリバッファpixelDPB内のエントリxを表す。同様に、historyList[]は履歴ベースのリストを表し、historyList[x](xは、0、1、…、P-1でありうる)は履歴ベースのリスト内のエントリxを表す。さらに、バイナリ利用可能性配列がavailable[]で表され、同じエントリサイズPを有し、available[x](xは、0、1、…、P-1でありうる)は、エントリhistoryList[x]に対応するバイナリビットであり、履歴ベースのリストの対応するエントリに格納された位置についての参照サンプルメモリにおけるサンプル値利用可能性を示すために使用される。例えば、バイナリ利用可能性配列内のビットは、履歴ベースのリスト内の対応するエントリが初期設定またはリセットされるときに0として初期設定される。位置がhistoryList[x](xは、0、1、…、P-1でありうる)に格納されると、対応するavailable[x]が1としてマークされる。履歴ベースのリスト内のエントリx、historyList[x](xは、0、1、…、P-1でありうる)の位置が参照サンプルメモリから削除される(利用可能でなくなる)と、available[x]は0としてマークされる。同時に(available[x]が0としてマークされているときに)、historyList[x]に格納されているこの位置の参照サンプル値を、破棄する代わりに、pixelDPB[x]に格納することができる。このようにして、履歴ベースのリストから削除されたサンプル値は、セカンダリバッファpixelDPBから取得され、現在のコーディングブロックにおける単一値ストリングモードのストリングを予測するために依然として使用されうる。
単一値ストリングモードを使用して現在のコーディングブロックを復号する動作中、候補セットは、前述したのと同様の方法で生成されうる。履歴ベースのリストからエントリhistoryList[x](xは、0、1、…、P-1でありうる)を選択するために再使用フラグが1に設定されており、このエントリの位置が利用可能である(available[x]が1に等しい)場合、確立された候補セットに入れるために、historyList[x]に格納された位置のサンプル値が取得されうる。しかしながら、このエントリhistoryLis[x]内の位置が参照サンプルメモリ内で利用可能でない(available[x]が0に等しい)場合、代わりに、確立された候補セットに入れるために、pixelDPB[x]内のサンプル値が取得される。
現在のブロックをコーディングした後、すでに確立された候補セット内のエントリ(例えば、前述したような、履歴ベースの候補サブセットおよび新しい単一値候補サブセットとシグナリングされた新しい単一値との組み合わせ)は、履歴ベースのリスト内の未使用エントリと一緒に、履歴ベースのリストを更新するために使用されうる。いくつかの例では、確立された候補セット内のエントリについて、履歴ベースのリストhistoryList[x]に入れる時に、available[x]は1としてマークされる。候補セット内の参照サンプルの位置は、現在のコーディングブロックまたは現在のコーディング領域(128×128CTU内の64×64領域など)内の位置を使用して更新される。履歴リスト内の未使用エントリhistoryList[y](yは、0、1、…、P-1でありうる)について、未使用エントリを、更新として履歴ベースのリストに、例えばhistoryList[z](z=0、1、…、P-1)に戻すことができる。更新前に、available[y]が1に等しい場合には、更新後に、available[z]を1にマークされえ、そうではなく、更新前のavailable[y]が0に等しい場合には、更新後にavailable[z]を0としてマークされうる。さらに、更新前のpixelDPB[y]内のサンプル値は、更新後のpixelDPB[z]に移動されうる。
いくつかの実施形態では、セカンダリバッファpixelDPBは、履歴ベースのリストよりも小さいサイズ、または履歴ベースのリストと同じサイズを有しうる(Pは履歴ベースのリストのサイズを表す。
例えば、履歴ベースのリストはhistoryList[]で表される。履歴ベースのリストと同じエントリサイズの2つの追加の配列も使用される。2つの追加の配列は、バイナリ利用可能性配列およびインデックス配列を含む。バイナリ利用可能性配列はavailable[]で表され、履歴ベースのリストのエントリ内の位置の利用可能性を記録するために使用される。インデックス配列は、pixelDPB_idx[]で表され、pixelDPBのエントリ内のインデックスを記録するために使用される。
動作中、例えば、available[]およびpixelDPB_idx[]内のエントリは、historyList[]内のエントリが初期設定またはリセットされるときに0として初期設定されうる。位置情報がhistoryList[x](xは、0、1、…、P-1でありうる)に入れられると、available[x]が1としてマークされる。履歴ベースのリスト内のエントリx、historyList[x](xは、0、1、…、P-1でありうる)の位置が参照サンプルメモリから削除されると、available[x]は0としてマークされる。同時に(available[x]が0としてマークされるときに)、この位置における参照サンプル値が取得され破棄される代わりに、pixelDPB[y]などのFIFO方式のpixelDPB[]に入られ、pixelDPB_idx[x]がyになるように設定される。このようにして、履歴ベースのリストから除去されたサンプル値は、pixelDPB[]において依然として利用可能とされえ、現在のコーディングブロックを予測するために使用されうる。
単一値ストリングモードを使用して現在のコーディングブロックを復号するプロセスにおいて、候補セットの生成は前述したのと同様である。履歴ベースのリストからエントリhistoryList[x]を選択するために再使用フラグが1に設定されており、このエントリの位置が利用可能である(参照サンプルメモリで利用可能であり、available[x]が1に等しい)場合、エントリhistoryList[x]に格納された位置のサンプル値が取得され、確立された候補セットに入れられうる。そうではなく、エントリhistoryList[x]に格納された位置のサンプル値が利用できず(参照サンプルメモリで利用できず、available[x]が0に等しい)場合、代わりに、pixelDPB[pixelDPB_idx[x]]に格納されたサンプル値が取得され、確立された候補セットに入れられうる。
現在のブロックをコーディングした後、すでに確立された候補セット内のエントリ(例えば、前述したような、履歴ベースの候補サブセットおよび新しい単一値候補サブセットとシグナリングされた新しい単一値との組み合わせ)は、履歴リスト内の未使用エントリと一緒に、履歴リストを更新するために使用されうる。一例では、確立された候補セット内のエントリについて、エントリがhistoryList[i](iは、0、1、…、P-1とすることができる)からのものであった場合、履歴ベースのリストhistoryList[x]に入れるときに、available[x]およびpixelDPB_idx[x]は、エントリの元のavailable[i]およびpixelDPB_idx[i]に設定される。他の例では、候補セット内のエントリが履歴ベースのリストhistoryList[x]において、現在のコーディングブロック内の1つのサンプル位置である位置で更新される場合、available[x]は1に設定される。他の例では、履歴ベースのリスト内の未使用エントリhistoryList[y](yは、0、1、…、P-1でありうる)を、更新として履歴リストに、例えばエントリhistoryList[z](z=0、1、…、P-1)に戻すことができる。更新前に、available[y]が1に等しい場合には、更新後に、available[z]を1にマークされえ、そうではなく、更新前のavailable[y]が0に等しい場合には、available[z]は更新後に0としてマークされる。同様に、pixelDPB_idx[z]は、更新前のpixelDPB_idx[y]の値に設定される。
他の実施形態では、履歴ベースのリストに格納された位置の参照サンプルメモリにおける参照サンプル利用可能性は、pixelDPB_idx[]の値によって示されうる。例えば、pixelDPB_idx[]がpixelDPB_max_size(例えば、P)に等しい場合、historyList[x]に格納された位置のサンプル値は、参照サンプルメモリにおいて利用可能であり、取得され、確立された候補セットに入れられうる。そうでない場合、エントリhistoryList[x]に格納された位置の参照サンプルは、参照サンプルメモリにおいて利用可能ではなく、代わりに、pixelDPB[pixelDPB_idx[x]]内のサンプル値が取得され、確立された候補セットに入れられうる。
他の実施形態では、履歴ベースのリストのサイズPとセカンダリバッファpixelDPBのサイズTとの和は固定値である。一例では、現在のコーディングブロックを予測する際にpixelDPBエントリx(xは、0、1、…、N-1でありうる)内のサンプルが使用される場合、サンプルは履歴ベースのリストに更新され、利用可能としてマークされる(available[x]が1に設定される)。そのため、履歴ベースのリストのサイズを大きくすることができ、現在のデコーディング領域においてpixelDPBのサイズが縮小され、参照サンプルメモリは更新されない(一例では64×64領域)。
いくつかの実施形態では、pixelDPB[]内の各エントリは、位置情報とその位置のサンプル値の両方を格納しうる。いくつかの実施形態では、pixelDPB[]内の各エントリは、ある位置におけるサンプル値を格納するが、その位置の情報は格納しない。
図16に、本開示の一実施形態によるプロセス(1600)の概要を示すフローチャートを示す。プロセス(1600)は、コーディングされたビデオシーケンスのピクチャにおけるブロックまたはストリングを再構成するために使用されうる。プロセス(1600)は、ブロックの再構成において再構成中のブロックの予測ブロックを生成するために使用されうる。本開示におけるブロックという用語は、予測ブロック、CB、CUなどとして解釈されうる。様々な実施形態において、プロセス(1600)は、端末装置(310)、(320)、(330)、および(340)内の処理回路、ビデオエンコーダ(403)の機能を実行する処理回路、ビデオデコーダ(410)の機能を実行する処理回路、ビデオデコーダ(510)の機能を実行する処理回路、ビデオエンコーダ(603)の機能を実行する処理回路などの処理回路によって実行される。いくつかの実施形態では、プロセス(1600)はソフトウェア命令で実装され、よって、処理回路がソフトウェア命令を実行すると、処理回路はプロセス(1600)を実行する。プロセスは(S1601)から開始し、(S1610)に進む。
(S1610)において、現在のブロックの再構成において使用するための参照サンプルメモリ内で利用可能なサンプル値を有するエリアが決定される。
(S1620)において、単一値ストリングモードの以前に再構成されたサンプルの位置を格納するための履歴ベースのリストが更新される。位置はエリア内に制限される。
一例では、位置がエリア外にあることに応じて、位置は履歴ベースのリスト内のエントリから削除される。
いくつかの例では、現在のブロックを含む領域をコーディングするための開始時のエリアが決定され、次いでその領域がエリアから除外される。いくつかの例では、履歴ベースのリストは、領域内の位置を格納する第1のエントリを含む。次いで、その位置のサンプル値が参照サンプルメモリから取得され、サンプル値がサンプルバッファ(セカンダリバッファとも称される)格納される。例えば、サンプル値は、サンプルバッファの第2のエントリに格納される。第2のエントリは、履歴ベースのリスト内の第1のエントリと関連付けられている。一例では、第1のエントリおよび第2のエントリは同じエントリインデックスを有する。他の例では、第2のエントリは、第1のエントリと関連付けられたインデックス配列内のエントリによって示される。いくつかの例では、第1のエントリと関連付けられた利用可能性ビットが、利用不可を示すように設定される。
(S1630)において、履歴ベースのリストに基づいて、現在のブロック内の単一値ストリングモードのストリングが再構成される。いくつかの例では、第1のエントリと関連付けられた利用可能性ビットが利用不可を示す場合、現在のブロックの再構成中に、ストリングベクトルがその位置を指すことに応じて、第2のエントリ内のサンプル値を求めてサンプルバッファがアクセスされる。いくつかの例では、ストリングが履歴ベースのリストのエントリに基づいて再構成されていることに応じて、履歴ベースのリストのエントリがストリング内のサンプル位置を格納するように更新される。サンプル位置は、ストリング内の最初のサンプル位置、ストリング内の最後のサンプル位置、および最初のサンプル位置と最後のサンプル位置との間の位置のうちの1つである。その後、プロセスは(S1699)に進み、終了する。
プロセス(1600)は、適切に適合されうる。プロセス(1600)の(1つまたは複数の)ステップは、変更および/または省略されうる。(1つまたは複数の)追加のステップが追加されうる。任意の適切な実施順序が使用されうる。例えば、現在のベクトル情報が一意であると判定された場合、前述したように、現在のベクトル情報は、履歴バッファに格納されうる。いくつかの例では、プルーニングプロセスが使用され、現在のベクトル情報が履歴バッファに格納されるときに履歴バッファ内のベクトル情報の1つが削除される。
前述した技術は、コンピュータ可読命令を使用する、1つまたは複数のコンピュータ可読媒体に物理的に格納されたコンピュータソフトウェアとして実装されうる。例えば、図17に、開示の主題の一定の実施形態を実装するのに適したコンピュータシステム(1700)を示す。
コンピュータソフトウェアは、1つまたは複数のコンピュータ中央処理装置(CPU)、グラフィックス処理装置(GPU)などによって直接、または解釈、マイクロコード実行などを介して、実行することができる命令を含むコードを作成するために、アセンブリ、コンパイル、リンクなどの機構を施されるうる任意の適切な機械コードまたはコンピュータ言語を使用してコーディングされうる。
命令は、例えば、パーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲームデバイス、モノのインターネットデバイスなどを含む様々なタイプのコンピュータまたはその構成要素上で、実行されうる。
コンピュータシステム(1700)について図17に示す構成要素は、本質的に例示的なものであり、本開示の実施形態を実装するコンピュータソフトウェアの使用または機能の範囲に関する限定を示唆することを意図するものではない。構成要素の構成は、コンピュータシステム(1700)の例示的な実施形態に示されている構成要素のいずれか1つまたは組み合わせに関する依存関係または要件を有すると解釈されるべきではない。
コンピュータシステム(1700)は、一定のヒューマンインターフェース入力装置を含みうる。そのようなヒューマンインターフェース入力装置は、例えば、触覚入力(例えば、キーストローク、スワイプ、データグローブの動き)、音声入力(例えば、声、拍手)、視覚入力(例えば、ジェスチャ)、嗅覚入力(図示せず)を介した、1人または複数の人間のユーザによる入力に応答しうる。ヒューマンインターフェース装置はまた、オーディオ(例えば、音声、音楽、周囲音)、画像(例えば、走査画像、写真画像は静止画像カメラから取得)、ビデオ(二次元映像、立体映像を含む三次元映像など)など、必ずしも人間による意識的な入力に直接関連しない或る媒体をキャプチャするために使用することもできる。
入力ヒューマンインターフェース装置は、キーボード(1701)、マウス(1702)、トラックパッド(1703)、タッチスクリーン(1710)、データグローブ(図示せず)、ジョイスティック(1705)、マイクロフォン(1706)、スキャナ(1707)、カメラ(1708)のうちの1つまたは複数(図示された各々のうちのただ1つ)を含みうる。
コンピュータシステム(1700)はまた、一定のヒューマンインターフェース出力装置も含みうる。そのようなヒューマンインターフェース出力装置は、例えば、触覚出力、音、光、および匂い/味によって1人または複数の人間ユーザの感覚を刺激しうる。そのようなヒューマンインターフェース出力装置は、触覚出力装置(例えば、タッチスクリーン(1710)、データグローブ(図示せず)、またはジョイスティック(1705)による触覚フィードバック、ただし、入力装置として機能しない触覚フィードバック装置もありうる)、音声出力装置(例えば、スピーカ(1709)、ヘッドホン(図示せず))、視覚出力装置(例えば、それぞれタッチスクリーン入力機能ありまたはなしの、それぞれ触覚フィードバック機能ありまたはなしの、CRTスクリーン、LCDスクリーン、プラズマスクリーン、OLEDスクリーンを含むスクリーン(1710)など、それらの一部は、二次元視覚出力、または立体画像出力、仮想現実眼鏡(図示せず)、ホログラフィックディスプレイおよびスモークタンク(図示せず)などの手段による三次元以上の出力を出力することが可能でありうる)、ならびにプリンタ(図示せず)を含みうる。
コンピュータシステム(1700)はまた、人間がアクセス可能な記憶装置およびそれらの関連媒体、例えば、CD/DVDなどの媒体(1721)を有するCD/DVD ROM/RW(1720)を含む光学媒体、サムドライブ(1722)、リムーバブルハードドライブまたはソリッドステートドライブ(1723)、テープやフロッピーディスクなどのレガシー磁気媒体(図示せず)、セキュリティドングルなどの専用ROM/ASIC/PLDベースのデバイス(図示せず)なども含みうる。
当業者はまた、本開示の主題に関連して使用される「コンピュータ可読媒体」という用語が、伝送媒体、搬送波、または他の一時的信号を包含しないことも理解するはずである。
コンピュータシステム(1700)はまた、1つまたは複数の通信ネットワーク(1755)へのインターフェース(1754)も含みうる。ネットワークは、例えば、無線、有線、光とすることができる。ネットワークはさらに、ローカル、ワイドエリア、メトロポリタン、車両および産業、リアルタイム、遅延耐性などでありうる。ネットワークの例には、イーサネット、無線LANなどのローカルエリアネットワーク、GSM、3G、4G、5G、LTEなどを含むセルラーネットワーク、ケーブルテレビ、衛星テレビ、および地上波放送テレビを含むテレビ有線または無線広域デジタルネットワーク、CANBusを含む車両および産業用などが含まれる。一定のネットワークは、一般に、一定の汎用データポートまたは周辺バス(1749)(例えば、コンピュータシステム(1700)のUSBポートなど)に取り付けられた外部ネットワークインターフェースアダプタを必要とする。他のネットワークは、一般に、後述するようなシステムバスへの取り付けによってコンピュータシステム(1700)のコアに統合される(例えば、PCコンピュータシステムへのイーサネットインターフェースやスマートフォンコンピュータシステムへのセルラーネットワークインターフェース)。これらのネットワークのいずれかを使用して、コンピュータシステム(1700)は、他のエンティティと通信することができる。そのような通信は、例えば、ローカルまたはワイドエリアデジタルネットワークを使用する他のコンピュータシステムに対して、一方向の受信のみ(例えば、テレビ放送)、一方向の送信のみ(例えば、一定のCANbusデバイスへのCANbus)、または双方向とすることができる。前述したようなネットワークおよびネットワークインターフェースの各々で一定のプロトコルおよびプロトコルスタックを使用することができる。
前述したヒューマンインターフェース装置、ヒューマンアクセス記憶装置、およびネットワークインターフェースは、コンピュータシステム(1700)のコア(1740)に取り付けることができる。
コア(1740)は、1つまたは複数の中央処理装置(CPU)(1741)、グラフィックス処理装置(GPU)(1742)、フィールドプログラマブルゲートエリア(FPGA)(1743)の形態の専用プログラマブル処理装置、一定のタスク用のハードウェアアクセラレータ(1744)、グラフィックスアダプタ(1750)などを含みうる。これらのデバイスは、読み出し専用メモリ(ROM)(1745)、ランダムアクセスメモリ(1746)、内部非ユーザアクセス可能ハードドライブなどの内部大容量ストレージ、SSDなど(1747)と共に、システムバス(1748)を介して接続されうる。いくつかのコンピュータシステムでは、システムバス(1748)を、追加のCPU、GPUなどによる拡張を可能にするために、1つまたは複数の物理プラグの形態でアクセス可能でありうる。周辺装置は、コアのシステムバス(1748)に直接、または周辺バス(1749)を介して取り付けることができる。一例では、スクリーン(1710)はグラフィックスアダプタ(1750)に接続されうる。周辺バスのアーキテクチャには、PCI、USBなどが含まれる。
CPU(1741)、GPU(1742)、FPGA(1743)、およびアクセラレータ(1744)は、組み合わさって前述のコンピュータコードを構成することができる一定の命令を実行することができる。そのコンピュータコードは、ROM(1745)またはRAM(1746)に格納されうる。移行データもまたRAM(1746)に格納されえ、一方で、永続データは、例えば内部大容量ストレージ(1747)に格納されうる。メモリデバイスのいずれかへの高速記憶および検索は、1つまたは複数のCPU(1741)、GPU(1742)、大容量ストレージ(1747)、ROM(1745)、RAM(1746)などと密接に関連付けることができるキャッシュメモリの使用によって可能とされうる。
コンピュータ可読媒体は、様々なコンピュータ実装動作を実行するためのコンピュータコードを有しうる。媒体およびコンピュータコードは、本開示の目的のために特別に設計および構築されたものとすることもでき、またはコンピュータソフトウェア技術の当業者に周知の利用可能な種類のものとすることもできる。
限定ではなく例として、アーキテクチャを有するコンピュータシステム(1700)、特にコア(1740)は、(CPU、GPU、FPGA、アクセラレータなどを含む)(1つまたは複数の)プロセッサが、1つまたは複数の有形のコンピュータ可読媒体において具現化されたソフトウェアを実行した結果として機能を提供することができる。そのようなコンピュータ可読媒体は、上述のようなユーザアクセス可能な大容量ストレージ、ならびにコア内部大容量ストレージ(1747)やROM(1745)などの非一時的な性質のものであるコア(1740)の或るストレージと関連付けられた媒体とすることができる。本開示の様々な実施形態を実装するソフトウェアは、そのようなデバイスに格納し、コア(1740)によって実行することができる。コンピュータ可読媒体は、特定の必要性に応じて、1つまたは複数のメモリデバイスまたはチップを含みうる。ソフトウェアは、コア(1740)、具体的にはその中の(CPU、GPU、FPGAなどを含む)プロセッサに、RAM(1746)に格納されたデータ構造を定義すること、およびソフトウェアによって定義されたプロセスに従ってそのようなデータ構造を変更することを含む、本明細書に記載される特定のプロセスまたは特定のプロセスの特定の部分を実行させることができる。加えて、または代替として、コンピュータシステムは、ソフトウェアの代わりに、またはソフトウェアと共に動作して、本明細書に記載の特定のプロセスまたは特定のプロセスの特定の部分を実行することができる、回路(例えば、アクセラレータ(1744))におけるハードワイヤードの、または他の方法で具現化された論理の結果として機能を提供することもできる。ソフトウェアと言う場合、それは、適切な場合には、論理を含めることができ、逆もまた同様である。コンピュータ可読媒体と言う場合、それは、適切な場合には、実行のためのソフトウェアを格納する回路(集積回路(IC)など)、実行のための論理を具現化する回路、またはその両方を含みうる。本開示は、ハードウェアとソフトウェアの任意の適切な組み合わせを包含する。
付記A:頭字語
JEM 共同探査モデル
VVC 多用途ビデオコーディング
BMS ベンチマークセット
MV 動きベクトル
HEVC 高効率ビデオコーディング
MPM 最確モード
WAIP 広角イントラ予測
SEI 補足拡張情報
VUI ビデオユーザビリティ情報
GOP Groups of Pictures
TU 変換ユニット、
PU 予測ユニット
CTU コーディングツリーユニット
CTB コーディングツリーブロック
PB 予測ブロック
HRD 仮想参照デコーダ
SDR 標準ダイナミックレンジ
SNR 信号対雑音比
CPU 中央処理装置
GPU グラフィックス処理装置
CRT ブラウン管
LCD 液晶ディスプレイ
OLED 有機発光ダイオード
CD コンパクトディスク
DVD デジタルビデオディスク
ROM 読み出し専用メモリ
RAM ランダムアクセスメモリ
ASIC 特定用途向け集積回路
PLD プログラマブルロジックデバイス
LAN ローカルエリアネットワーク
GSM モバイル通信用グローバルシステム
LTE ロングタームエボリューション
CANBus コントローラエリアネットワークバス
USB ユニバーサルシリアルバス
PCI 周辺機器相互接続
FPGA フィールドプログラマブルゲートエリア
SSD ソリッドステートドライブ
IC 集積回路
CU コーディングユニット
PDPC 位置依存予測組み合わせ
ISP イントラサブパーティション
SPS シーケンスパラメータ設定
本開示ではいくつかの例示的な実施形態を説明したが、本開示の範囲内に入る修正形態、置換形態、および様々な代替均等物がある。よって、当業者であれば、本明細書には明示的に図示または説明されていないが、本開示の原理を具現化し、よって本開示の趣旨および範囲内にある多数のシステムおよび方法を考案することができることが理解されよう。
101 サンプル
104 正方形ブロック
201 現在のブロック
202~206 周囲のサンプル
300 通信システム
310,320,330,340 端末装置
350 通信ネットワーク
400 通信システム
401 ビデオソース
402 ビデオピクチャのストリーム
403 ビデオエンコーダ
404 符号化されたビデオデータ、符号化されたビデオビットストリーム
405 ストリーミングサーバ
406 クライアントサブシステム
407 符号化されたビデオデータのコピー、入力コピー
408 クライアントサブシステム
409 符号化されたビデオデータのコピー
410 ビデオデコーダ
411 ビデオピクチャの出力ストリーム
412 ディスプレイ
413 キャプチャサブシステム
420 電子装置
430 電子装置
501 チャネル
510 ビデオデコーダ
512 レンダリング装置
515 バッファメモリ
520 パーサ
521 シンボル
530 電子装置
531 受信器
551 スケーラ/逆変換ユニット
552 イントラピクチャ予測ユニット
553 動き補償予測ユニット
555 アグリゲータ
556 ループフィルタユニット
557 参照ピクチャメモリ
558 現在のピクチャバッファ
601 ビデオソース
603 ビデオエンコーダ
620 電子装置
630 ソースコーダ
632 コーディングエンジン
633 ローカルビデオデコーダ
634 参照ピクチャメモリ、参照ピクチャキャッシュ
635 予測器
640 送信器
643 コーディングされたビデオシーケンス
645 エントロピーコーダ
650 コントローラ
660 通信チャネル
703 ビデオエンコーダ
721 汎用コントローラ
722 イントラエンコーダ
723 残差計算器
724 残差エンコーダ
725 エントロピーエンコーダ
726 スイッチ
728 残差デコーダ
730 インターエンコーダ
810 ビデオデコーダ
871 エントロピーデコーダ
872 イントラデコーダ
873 残差デコーダ
874 再構成モジュール
880 インターデコーダ
900 現在のピクチャ
910 再構成されたエリア
920 復号されるべきエリア
930 現在のブロック
940 参照ブロック
950 ブロックベクトル
960 探索範囲
1001 現在のピクチャ
1010 以前に再構成されたCTB
1011~1014 領域
1015 現在のCTB
1016 現在の領域
1017~1019 領域
1020 ブロックベクトル
1021~1029 コーディングブロック
1091 参照ブロック
1101 現在のピクチャ
1110 以前に再構成されたCTB
1111~1114 領域
1115 現在のCTB
1116 現在の領域
1117~ 1119領域
1121~1129 コーディングブロック
1122 コーディングブロック
1201 現在のピクチャ
1210 以前に再構成されたCTB
1211~1214 領域
1215 現在のCTB
1216~1219 領域
1221~1229 コーディングブロック
1241~1249 コーディングブロック
1261~1269 コーディングブロック
1281~1289 コーディングブロック
1302 左領域
1303 上領域
1304 左上領域
1305 右上領域
1306 左下領域
1310 現在のブロック
1400, 1401 参照ストリング
1410 現在のピクチャ
1420 再構成された領域、参照エリア
1421 再構成中の領域
1430, 1431 ストリング
1435 現在のブロック
1510 状態(0)
1520 状態(1)
1530 状態(2)
1540 状態(3)
1550 状態(4)
1600 プロセス
1700 コンピュータシステム
1701 キーボード
1702 マウス
1703 トラックパッド
1705 ジョイスティック
1706 マイクロフォン
1707 スキャナ
1708 カメラ
1709 スピーカ
1710 タッチスクリーン
1720 CD/DVD ROM/RW
1721 CD/DVDなどの媒体
1722 サムドライブ
1723 リムーバブルハードドライブまたはソリッドステートドライブ
1740 コア
1741 中央処理装置(CPU)
1742 グラフィックス処理装置(GPU)
1743 フィールドプログラマブルゲートエリア(FPGA)
1744 ハードウェアアクセラレータ
1745 読み出し専用メモリ
1746 ランダムアクセスメモリ
1747 内部大容量ストレージ
1748 システムバス
1749 周辺バス
1750 グラフィックスアダプタ
1754 ネットワークインターフェース
1755 通信ネットワーク
他の実施形態では、セカンダリバッファpixelDPBは、履歴ベースのリストと同じサイズのエントリPを有する。例えば、pixelDPB[]はセカンダリバッファを表し、pixelDPB[x](xは、0、1、…、P-1でありうる)はセカンダリバッファpixelDPB内のエントリxを表す。同様に、historyList[]は履歴ベースのリストを表し、historyList[x](xは、0、1、…、P-1でありうる)は履歴ベースのリスト内のエントリxを表す。さらに、バイナリ利用可能性配列がavailable[]で表され、同じエントリサイズPを有し、available[x](xは、0、1、…、P-1でありうる)は、エントリhistoryList[x]に対応するバイナリビットであり、履歴ベースのリストの対応するエントリに格納された位置についての参照サンプルメモリにおけるサンプル値利用可能性を示すために使用される。例えば、バイナリ利用可能性配列内のビットは、履歴ベースのリスト内の対応するエントリが初期設定またはリセットされるときに0として初期設定される。位置がhistoryList[x](xは、0、1、…、P-1でありうる)に格納されると、対応するavailable[x]が1としてマークされる。履歴ベースのリスト内のエントリx、historyList[x](xは、0、1、…、P-1でありうる)の位置が参照サンプルメモリから削除される(利用可能でなくなる)と、available[x]は0としてマークされる。同時に(available[x]が0としてマークされているときに)、historyList[x]に格納されているこの位置の参照サンプル値を、破棄する代わりに、pixelDPB[x]に格納することができる。このようにして、履歴ベースのリストから削除されたサンプル値は、セカンダリバッファpixelDPBから取得され、現在のコーディングブロックにおける単一値ストリングモードのストリングを予測するために依然として使用されうる。
単一値ストリングモードを使用して現在のコーディングブロックを復号する動作中、候補セットは、前述したのと同様の方法で生成されうる。履歴ベースのリストからエントリhistoryList[x](xは、0、1、…、P-1でありうる)を選択するために再使用フラグが1に設定されており、このエントリの位置が利用可能である(available[x]が1に等しい)場合、確立された候補セットに入れるために、historyList[x]に格納された位置のサンプル値が取得されうる。しかしながら、このエントリhistoryList[x]内の位置が参照サンプルメモリ内で利用可能でない(available[x]が0に等しい)場合、代わりに、確立された候補セットに入れるために、pixelDPB[x]内のサンプル値が取得される。

Claims (20)

  1. デコーダにおけるビデオデコーディングのための方法であって、
    プロセッサが、現在のブロックの再構成において使用するための参照サンプルメモリ内で利用可能なサンプル値を有するエリアを決定するステップと、
    前記プロセッサが、単一値ストリングモードの以前に再構成されたサンプルの位置を格納するための履歴ベースのリストを更新するステップであって、前記位置は前記エリア内に制限される、ステップと、
    前記プロセッサが、前記履歴ベースのリストに基づいて、前記現在のブロック内の前記単一値ストリングモードのストリングを再構成するステップと
    を含む、方法。
  2. 位置が前記エリア外にあることに応じて、前記履歴ベースのリスト内のエントリから前記位置を削除するステップ
    をさらに含む、請求項1に記載の方法。
  3. 前記ストリングが前記履歴ベースのリストのエントリに基づいて再構成されていることに応じて、前記ストリング内のサンプル位置を格納するように前記履歴ベースのリストの前記エントリを更新するステップ
    をさらに含む、請求項1に記載の方法。
  4. 前記サンプル位置は、前記ストリング内の最初のサンプル位置、前記ストリング内の最後のサンプル位置、および前記最初のサンプル位置と前記最後のサンプル位置との間の位置のうちの1つである、請求項3に記載の方法。
  5. 前記現在のブロックを含む領域をコーディングするための開始時の前記エリアを決定するステップであって、前記領域は前記エリアから除外される、ステップ
    をさらに含む、請求項1に記載の方法。
  6. 前記履歴ベースのリスト内の第1のエントリが前記領域内の位置を格納していることを検出するステップと、
    前記参照サンプルメモリから前記位置のサンプル値を取得するステップと、
    前記サンプル値をサンプルバッファに格納するステップと
    をさらに含む、請求項5に記載の方法。
  7. 前記サンプル値を、前記履歴ベースのリスト内の前記第1のエントリと関連付けられた前記サンプルバッファの第2のエントリに格納するステップ
    をさらに含む、請求項6に記載の方法。
  8. 前記第1のエントリおよび前記第2のエントリは同じエントリインデックスを有する、請求項7に記載の方法。
  9. 前記第2のエントリは、前記第1のエントリと関連付けられたインデックス配列内のエントリによって示される、請求項7に記載の方法。
  10. 前記第1のエントリと関連付けられた利用可能性ビットを、利用不可を示すように設定するステップと、
    前記現在のブロックの前記再構成中に、ストリングベクトルが前記位置を指すことに応じて、前記第2のエントリ内の前記サンプル値のために前記サンプルバッファにアクセスするステップと
    をさらに含む、請求項7に記載の方法。
  11. 現在のブロックの再構成において使用するための参照サンプルメモリ内で利用可能なサンプル値を有するエリアを決定し、
    単一値ストリングモードの以前に再構成されたサンプルの位置を格納するための履歴ベースのリストを更新し、前記位置は前記エリア内に制限され、
    前記履歴ベースのリストに基づいて、前記現在のブロック内の前記単一値ストリングモードのストリングを再構成する
    ように構成された処理回路を含む、ビデオデコーディングのための装置。
  12. 前記処理回路は、
    位置が前記エリア外にあることに応じて、前記履歴ベースのリスト内のエントリから前記位置を削除する
    ように構成されている、請求項11に記載の装置。
  13. 前記処理回路は、
    前記ストリングが前記履歴ベースのリストのエントリに基づいて再構成されていることに応じて、前記ストリング内のサンプル位置を格納するように前記履歴ベースのリストの前記エントリを更新する
    ように構成されている、請求項11に記載の装置。
  14. 前記サンプル位置は、前記ストリング内の最初のサンプル位置、前記ストリング内の最後のサンプル位置、および前記最初のサンプル位置と前記最後のサンプル位置との間の位置のうちの1つである、請求項13に記載の装置。
  15. 前記処理回路は、
    前記現在のブロックを含む領域をコーディングするための開始時の前記エリアを決定し、前記領域は前記エリアから除外される
    ように構成されている、請求項11に記載の装置。
  16. 前記処理回路は、
    前記履歴ベースのリスト内の第1のエントリが前記領域内の位置を格納していることを検出し、
    前記参照サンプルメモリから前記位置のサンプル値を取得し、
    前記サンプル値をサンプルバッファに格納する
    ように構成されている、請求項15に記載の装置。
  17. 前記処理回路は、
    前記サンプル値を、前記履歴ベースのリスト内の前記第1のエントリと関連付けられた前記サンプルバッファの第2のエントリに格納する
    ように構成されている、請求項16に記載の装置。
  18. 前記第1のエントリおよび前記第2のエントリは同じエントリインデックスを有する、請求項17に記載の装置。
  19. 前記第2のエントリは、前記第1のエントリと関連付けられたインデックス配列内のエントリによって示される、請求項17に記載の装置。
  20. 前記処理回路は、
    前記第1のエントリと関連付けられた利用可能性ビットを、利用不可を示すように設定し、
    前記現在のブロックの前記再構成中に、ストリングベクトルが前記位置を指し示すことに応じて、前記第2のエントリ内の前記サンプル値のために前記サンプルバッファにアクセスする
    ように構成されている、請求項17に記載の装置。
JP2022538831A 2020-10-16 2021-07-02 ビデオコーディングのための方法、装置およびコンピュータプログラム Active JP7342275B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202063092718P 2020-10-16 2020-10-16
US63/092,718 2020-10-16
US17/332,903 2021-05-27
US17/332,903 US11627328B2 (en) 2020-10-16 2021-05-27 Method and apparatus for video coding
PCT/US2021/040288 WO2022081219A1 (en) 2020-10-16 2021-07-02 Method and apparatus for video coding

Publications (2)

Publication Number Publication Date
JP2023509592A true JP2023509592A (ja) 2023-03-09
JP7342275B2 JP7342275B2 (ja) 2023-09-11

Family

ID=81185883

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022538831A Active JP7342275B2 (ja) 2020-10-16 2021-07-02 ビデオコーディングのための方法、装置およびコンピュータプログラム

Country Status (6)

Country Link
US (1) US11627328B2 (ja)
EP (1) EP4052463A4 (ja)
JP (1) JP7342275B2 (ja)
KR (1) KR20220100714A (ja)
CN (1) CN114641993B (ja)
WO (1) WO2022081219A1 (ja)

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101356613B1 (ko) 2009-08-21 2014-02-06 에스케이텔레콤 주식회사 적응적 움직임 벡터 해상도를 이용한 영상 부호화/복호화 방법 및 장치
US20170155899A1 (en) 2013-09-07 2017-06-01 Tongji University Image compression method and apparatus using matching
US20150264348A1 (en) * 2014-03-17 2015-09-17 Qualcomm Incorporated Dictionary coding of video content
CA3171803A1 (en) 2014-09-30 2016-04-07 Microsoft Technology Licensing, Llc Rules for intra-picture prediction modes when wavefront parallel processing is enabled
CN111436227B (zh) * 2018-11-12 2024-03-29 北京字节跳动网络技术有限公司 在视频处理中使用组合帧间-帧内预测
CN112954317B (zh) * 2018-12-28 2022-02-11 Jvc建伍株式会社 动图像编码装置和方法、以及动图像解码装置和方法
CN113994699B (zh) 2019-06-06 2024-01-12 北京字节跳动网络技术有限公司 视频编解码的运动候选列表构建
US11601642B2 (en) * 2020-08-18 2023-03-07 Tencent America LLC String matching with a single value from reference locations

Also Published As

Publication number Publication date
KR20220100714A (ko) 2022-07-15
US20220124355A1 (en) 2022-04-21
CN114641993B (zh) 2024-05-24
JP7342275B2 (ja) 2023-09-11
WO2022081219A1 (en) 2022-04-21
EP4052463A1 (en) 2022-09-07
EP4052463A4 (en) 2022-12-28
US11627328B2 (en) 2023-04-11
CN114641993A (zh) 2022-06-17

Similar Documents

Publication Publication Date Title
JP7358464B2 (ja) ビデオ符号化のための方法及び機器
JP7223138B2 (ja) ビデオコーディングの方法および装置、ならびにコンピュータプログラム
JP2022177269A (ja) 動画を復号する方法、装置、及びコンピュータプログラム
JP2023062099A (ja) ビデオ復号化のための方法、機器、非一時的なコンピュータ可読媒体、及びコンピュータプログラム
JP7337166B2 (ja) アフィン履歴ベース動きベクトル予測子バッファにアクセスする方法及び装置並びにコンピュータプログラム
JP7490843B2 (ja) イントラピクチャブロック補償のための予測候補リストサイズシグナリングのための方法および装置
JP7265288B2 (ja) ビデオ復号のための方法、ビデオデコーダ、およびコンピュータプログラム、ならびにビデオ符号化のための方法
US20230087298A1 (en) Decoding based on string copy
JP2023040204A (ja) ビデオをデコードするための方法、装置及びプログラム
JP7183442B2 (ja) ビデオ符号化のための方法および装置
JP7267404B2 (ja) ビデオを符号化及び復号する方法、並びにその装置及びコンピュータプログラム
JP7471722B2 (ja) ビデオ符号化のための方法および装置
JP7332718B2 (ja) ビデオコーディングのための方法および装置
JP7342275B2 (ja) ビデオコーディングのための方法、装置およびコンピュータプログラム
JP7476426B2 (ja) ビデオコーディングのための方法、装置、およびコンピュータプログラム
JP7378631B2 (ja) ビデオ符号化のための方法および装置
JP7493613B2 (ja) ビデオコーディングのための方法および装置
JP7128971B2 (ja) ビデオ符号化のための方法及び機器
JP7458503B2 (ja) イントラ文字列コピーの方法及び機器
JP7483025B2 (ja) ビデオコーディングのための方法及び装置
JPWO2021207026A5 (ja)
JP7169451B2 (ja) ビデオ復号の方法、装置、及びコンピュータプログラム
JP2023521045A (ja) ビデオコーディングのための方法および装置
JP2024516014A (ja) 調整ベースの局所照明補償
JP2023527657A (ja) Cuレベル重みをシグナリングしない双予測

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220622

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220622

TRDD Decision of grant or rejection written
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230725

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230731

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230830

R150 Certificate of patent or registration of utility model

Ref document number: 7342275

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150