JP2022511809A - ビデオコード化に対する空間-時間動きベクトル予測パターン - Google Patents

ビデオコード化に対する空間-時間動きベクトル予測パターン Download PDF

Info

Publication number
JP2022511809A
JP2022511809A JP2021531233A JP2021531233A JP2022511809A JP 2022511809 A JP2022511809 A JP 2022511809A JP 2021531233 A JP2021531233 A JP 2021531233A JP 2021531233 A JP2021531233 A JP 2021531233A JP 2022511809 A JP2022511809 A JP 2022511809A
Authority
JP
Japan
Prior art keywords
block
motion vector
picture
vector information
predictor list
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.)
Pending
Application number
JP2021531233A
Other languages
English (en)
Other versions
JPWO2020118191A5 (ja
Inventor
ルサノフスキー、ドミトロ
シュリヤホフ、ニコライ・ミハイロビッチ
チェン、ウェイ-ジュン
カルチェビチ、マルタ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2022511809A publication Critical patent/JP2022511809A/ja
Publication of JPWO2020118191A5 publication Critical patent/JPWO2020118191A5/ja
Pending legal-status Critical Current

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/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/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • 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/103Selection of coding mode or of prediction mode
    • H04N19/109Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
    • 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/124Quantisation
    • 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/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/167Position within a video image, e.g. region of interest [ROI]
    • 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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • 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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Landscapes

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

Abstract

空間的に隣接するブロックと、コロケートされたブロックとに基づいて、動きベクトル予測子リストを構築するための技法を説明する。ビデオデータをコード化する方法は、左から右へのコーディング順序を有する第1のピクチャー中の第1のブロックに対して、第1の動きベクトル予測子リストを構築し、第1の動きベクトル予測子リスト中の第1のエントリは、第1のブロックに対する左隣接ブロックの動きベクトル情報に基づいていることと、第1の動きベクトル予測子リストに基づいて、第1のピクチャー中の第1のブロックをコード化することと、右から左へのコーディング順序を有する第2のピクチャー中の第2のブロックに対して、第2の動きベクトル予測子リストを構築し、第2の動きベクトル予測子リスト中の第1のエントリは、第2のブロックに対する右隣接ブロックの動きベクトル情報に基づいていることと、第2の動きベクトル予測子リストに基づいて、第2のピクチャー中の第2のブロックをコード化することとを含んでいる。【選択図】図9

Description

優先権の主張
[0001]
本出願は、2018年12月6日に出願された米国仮出願第62/776373号の利益を主張する2019年12月5日に出願された米国出願第16/704827号に対する優先権を主張し、その全内容は参照により本明細書に組み込まれている。
[0002]
本開示は、ビデオエンコーディングおよびビデオデコーディングに関連する。
背景
[0003]
デジタルビデオ能力は、デジタルテレビ、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、パーソナルデジタルアシスタント(PDA)、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、e-ブックリーダ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、セルラまたは衛星無線電話機、いわゆる「スマートフォン」、ビデオ電話会議デバイス、ビデオストリーミングデバイス、および、これらに類するものを含む、幅広い範囲のデバイスに組み込むことができる。デジタルビデオデバイスは、MPEG-2、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4、パート10、高度ビデオコーディング(AVC)、高効率ビデオコーディング(HEVC)標準規格、ITU-T H.265/高効率ビデオコーディング(HEVC)、および、このような標準規格の拡張によって規定される標準規格に記述されているもののような、ビデオコーディング技法を実現する。ビデオデバイスは、このようなビデオコーディング技法を実現することによって、より効率的にデジタルビデオ情報を送信、受信、エンコード、デコード、および/または、記憶してもよい。
[0004]
ビデオコーディング技法は、ビデオシーケンスに内在する冗長を低減または取り除くために、空間的(イントラピクチャー)予測、および/または、時間的(インターピクチャー)予測を含んでいる。ブロックベースのビデオコーディングに対して、ビデオスライス(例えば、ビデオピクチャーまたはビデオピクチャーの一部分)は、コーディングツリーユニット(CTU)、コーディングユニット(CU)および/またはコーディングノードとして呼ばれることもあるかもしれないビデオブロックに区分してもよい。ピクチャーのイントラコード化された(I)スライスにおけるビデオブロックは、同じピクチャーにおける隣接ブロック中の参照サンプルに関する空間的予測を使用してエンコードされる。ピクチャーのインターコード化された(PまたはB)スライスにおけるビデオブロックは、同じピクチャーにおける隣接ブロック中の参照サンプルに関する空間的予測、または、他の参照ピクチャーにおける参照サンプルに関する時間的予測を使用してもよい。ピクチャーは、フレームとして呼ばれることがあり、参照ピクチャーは参照フレームとして呼ばれることがある。
概要
[0005]
一般的に、本開示は、ビデオコーディングにおけるインター予測および動きベクトル予測に対する技法を説明している。より詳細に説明すると、本開示は、動きベクトル予測子リストに基づく動きベクトル予測のような、空間-時間動きベクトル予測に対する技法を説明している。本開示の技法は、H.265/HEVC(高効率ビデオコーディング)のような既存のビデオコーデック、または、H.266/VVC(バーサタイルビデオコーディング)のような何らかの将来のビデオコーディング標準規格における効率的なコーディングツール、のいずれかと使用してもよい。
[0006]
より詳細に説明するように、本開示は、空間的および時間的に隣接するブロックの動きベクトル情報を含む動きベクトル予測子リストを構築する例示的な技法を説明している。いくつかのケースでは、ピクチャーのコーディング順序(左から右にまたは右から左に)は、動きベクトル予測子リストを構築するために、空間的に隣接するどのブロックが利用可能であるかに影響を及ぼすかもしれない。したがって、本開示は、ビデオコーダ(例えば、ビデオエンコーダまたはビデオデコーダ)が、ピクチャーに対して使用されるコーディング順序に基づいて、動きベクトル予測子リストを構築する例示的な技法を説明している。さらに、(コロケートされたブロックとも呼ばれる)時間的に隣接するブロックに対して、ビデオコーダは、特定の順序で、時間的に隣接するブロックの動きベクトル情報にアクセスし、その利用可能性を検査するように構成されていてもよい。
[0007]
1つの例では、本開示は、ビデオデータをコード化する方法を説明し、方法は、左から右へのコーディング順序を有する第1のピクチャー中の第1のブロックに対して、第1の動きベクトル予測子リストを構築し、第1の動きベクトル予測子リスト中の第1のエントリは、第1のブロックに対する左隣接ブロックの動きベクトル情報に基づいていることと、第1の動きベクトル予測子リストに基づいて、第1のピクチャー中の第1のブロックをコード化することと、左から右へのコーディング順序を有する第2のピクチャー中の第2のブロックに対して、第2の動きベクトル予測子リストを構築し、第2の動きベクトル予測子リスト中の第1のエントリは、第2のブロックに対する右隣接ブロックの動きベクトル情報に基づいていることと、第2の動きベクトル予測子リストに基づいて、第2のピクチャー中の第2のブロックをコード化することとを含んでいる。
[0008]
1つの例では、本開示は、ビデオデータをコード化するためのデバイスを説明し、デバイスは、動きベクトル情報を記憶するように構成されているメモリと、メモリに結合されている処理回路とを具備している。処理回路は、左から右へのコーディング順序を有する第1のピクチャー中の第1のブロックに対して、第1の動きベクトル予測子リストを構築し、第1の動きベクトル予測子リスト中の第1のエントリは、メモリ中に記憶されている第1のブロックに対する左隣接ブロックの動きベクトル情報に基づいているようにと、第1の動きベクトル予測子リストに基づいて、第1のピクチャー中の第1のブロックをコード化するようにと、右から左へのコーディング順序を有する第2のピクチャー中の第2のブロックに対して、第2の動きベクトル予測子リストを構築し、第2の動きベクトル予測子リスト中の第1のエントリは、メモリ中に記憶されている第2のブロックに対する右隣接ブロックの動きベクトル情報に基づいているようにと、第2の動きベクトル予測子リストに基づいて、第2のピクチャー中の第2のブロックをコード化するように構成されている。
[0009]
1つの例では、本開示は、命令を記憶するコンピュータ読取可能記憶媒体を説明し、命令は、実行されるとき、1つ以上のプロセッサに、左から右へのコーディング順序を有する第1のピクチャー中の第1のブロックに対して、第1の動きベクトル予測子リストを構築させ、第1の動きベクトル予測子リスト中の第1のエントリは、第1のブロックに対する左隣接ブロックの動きベクトル情報に基づいており、第1の動きベクトル予測子リストに基づいて、第1のピクチャー中の第1のブロックをコード化させ、右から左へのコーディング順序を有する第2のピクチャー中の第2のブロックに対して、第2の動きベクトル予測子リストを構築させ、第2の動きベクトル予測子リスト中の第1のエントリは、第2のブロックに対する右隣接ブロックの動きベクトル情報に基づいており、第2の動きベクトル予測子リストに基づいて、第2のピクチャー中の第2のブロックをコード化させる。
[0010]
1つ以上の例の詳細は、添付の図面および以下の説明に記載されている。他の特徴、目的および利点は、説明、図面および特許請求の範囲から明らかになるであろう。
[0011] 図1は、本開示の技法を実行してもよい、例示的なビデオエンコーディングおよびデコーディングシステムを図示するブロック図である。 [0012] 図2は、本開示の技法を実行してもよい、例示的なビデオエンコーダを図示するブロック図である。 [0013] 図3は、本開示の技法を実行してもよい、例示的なビデオデコーダを図示するブロック図である。 [0014] 図4Aは、マージモードに対する空間隣接候補を図示する概念図である。 [0015] 図4Bは、高度動きベクトル予測(AMVP)モードに対する空間隣接候補を図示する概念図である。 [0016] 図5Aは、時間動きベクトル予測子(TMVP)候補を図示する概念図である。 [0017] 図5Bは、TMVPに対する動きベクトルスケーリングを図示する概念図である。 [0018] 図6は、非隣接空間マージ候補のフェッチを図示する概念図である。 [0019] 図7Aは、動きベクトル予測において使用される例示的な空間候補および時間候補を示す概念図である。 [0020] 図7Bは、空間候補に対する例示的な巡回順序を示す概念図である。 [0021] 図7Cは、空間候補に対する別の例示的な巡回順序を示す概念図である。 [0022] 図8Aは、本開示の1つの例による、例示的な時空間動きベクトル予測子パターンを示す概念図である。 [0023] 図8Bは、本開示の1つの例による、例示的な逆時空間動きベクトル予測子パターンを示す概念図である。 [0024] 図8Cは、本開示の1つの例による、別の例示的な逆時空間動きベクトル予測子パターンを示す概念図である。 [0025] 図9は、例示的なコーディング方法を図示するフローチャートである。
詳細な説明
[0026]
いくつかの例では、ビデオコーディング(例えば、ビデオエンコーディングまたはビデオデコーディング)は、インター予測および/またはイントラブロックコピー(IBC)技法を含んでいるかもしれない。インター予測またはIBCの両方において、ビデオエンコーダは、現在ブロックに対する動きベクトル(IBCに対して、動きベクトルはブロックベクトルであってもよい)に基づいて、予測ブロックを決定し、予測ブロックと現在ブロックとの間の残差情報(例えば、差分)を決定し、残差情報をシグナリングする。ビデオデコーダは、残差情報を受け取る。加えて、ビデオデコーダは、現在ブロックに対する動きベクトルを決定し、動きベクトルに基づいて、予測ブロックを決定する。ビデオデコーダは、残差情報を予測ブロックに追加して、現在ブロックを再構築する。
[0027]
ビデオデコーダが現在ブロックに対する動きベクトルを決定する1つの方法は、動きベクトル予測子リストに基づいている。ビデオエンコーダとビデオデコーダの両方は、ビデオエンコーダにより構築された動きベクトル予測子リストと、ビデオデコーダにより構築された動きベクトル予測子リストが同じであるように、類似するプロセスを利用して、それぞれの動きベクトル予測子リストを構築する。動きベクトル予測子リストは、空間的に隣接するブロック(例えば、現在ブロックと同じピクチャー中の現在ブロックに隣接するブロック)およびコロケートされたブロック(例えば、他のピクチャー中の特定のロケーションに位置するブロック)のような、以前にコード化されたブロックの動きベクトル情報を含んでいる。いくつかの例では、動きベクトル予測子リストは、人工的に発生された動きベクトル情報(例えば、以前にコード化されたブロックからのものではない動きベクトル情報)を含んでいてもよい。
[0028]
ビデオエンコーダは、動きベクトル予測子リスト中のエントリを決定し、エントリを示す情報をシグナリングする。ビデオデコーダは、エントリに基づいて、動きベクトル予測子リストから動きベクトル情報を決定し、決定された動きベクトル情報に基づいて、現在ブロックに対する動きベクトルを決定する。1つの例として、ビデオデコーダは、(例えば、マージモードにおけるように)現在ブロックに対する動きベクトルを、決定された動きベクトル情報と等しいように設定してもよい。別の例として、ビデオデコーダは、(例えば、高度動きベクトル予測(AMVP)モードにおけるように)ビデオエンコーダによりシグナリングされた動きベクトル差分(MVD)を、決定された動きベクトル情報に追加して、現在ブロックに対する動きベクトルを決定してもよい。
[0029]
上記で説明したように、動きベクトル予測子リストは、空間的に隣接するブロックに対する動きベクトル情報を含んでいてもよい。いくつかの例では、利用可能となる空間的に隣接するブロックの動きベクトル情報に対して、空間的に隣接するブロックは以前にコード化されている(エンコードされているまたはデコードされている)。隣接ブロックがまだコーディングされていない場合には、ビデオエンコーダおよびビデオデコーダは、まだ決定していないかもしれず、このこれまでのところコード化されている隣接ブロックに対する動きベクトル情報を決定するのに必要な情報をまだ有していないかもしない。したがって、いくつかの例では、動きベクトル情報に対して検査できる空間的に隣接するブロックのみが、以前にコード化されたブロックである。
[0030]
しかしながら、どのブロックが以前にコード化されたブロックであるかは、ピクチャーのコーディング順序に基づいているかもしれない。例えば、ビデオコーダ(例えば、ビデオエンコーダまたはビデオデコーダ)は、左から右および上から下に第1のピクチャーをコード化するかもしれない。左から右および上から下に第1のピクチャーをコード化することは、ビデオコーダが第1のピクチャー中の左上ブロックから開始して第1のピクチャー内でブロック毎にコード化し、ビデオコーダが第1のピクチャーの右境界に達するまで、右方向にブロックをコード化することを指しているかもしれない。その後、ビデオコーダは第1のピクチャー中の左上ブロックの下のブロックに戻り、ビデオコーダが第1のピクチャーの右境界に達するまで、ブロック毎にコード化する。ビデオコーダが第1のピクチャーの右下ブロックをコード化するまで、ビデオコーダはこれらの動作を繰り返す。
[0031]
コーディング順序は、必ずしも左から右および上から下である必要はない。ビデオコーダは、右から左および上から下に第2のピクチャーをコード化するかもしれない。右から左および上から下に第2のピクチャーをコード化することは、ビデオコーダが第2のピクチャー中の右上ブロックから開始して第2のピクチャー内でブロック毎にコード化し、ビデオコーダが第2のピクチャーの左境界に達するまで、左方向にブロックをコード化することを指しているかもしれない。その後、ビデオコーダは第2のピクチャー中の右上ブロックの下のブロックに戻り、ビデオコーダが第2のピクチャーの左境界に達するまで、ブロック毎にコード化する。ビデオコーダが第2のピクチャーの左下ブロックをコード化するまで、ビデオコーダはこれらの動作を繰り返す。
[0032]
第1および第2のピクチャーに対する異なるコーディング順序に起因して、第2のピクチャー中のブロックと比較して、第1のピクチャー中のブロックに対して以前にコード化された空間的に隣接する異なるブロックがあるかもしれない。例として、左から右へのコーディング順序を有する第1のピクチャー中の第1のブロックに対して、第1のブロックに対する左隣接ブロックは、第1のブロックがコード化されるより前に既にコード化されているかもしれず、したがって、左隣接ブロックに対する動きベクトル情報は利用可能かもしれない(例えば、以前に決定されている)。また、第1のブロックに対して、第1のブロックに対する右隣接ブロックは、まだコード化されていないかもしれず、したがって、右隣接ブロックに対する動きベクトル情報は利用可能でないかもしれない(例えば、まだ決定されていない)。
[0033]
右から左へのコーディング順序を有する第2のピクチャー中の第2のブロックに対して、第1のピクチャー中の第1のブロックの逆が正しいかもしれない。例えば、右から左へのコーディング順序を有する第2のピクチャー中の第2のブロックに対して、第2のブロックに対する左隣接ブロックは、まだコード化されていないかもしれず、したがって、左隣接ブロックに対する動きベクトル情報は利用可能でないかもしれない(例えば、まだ決定されていない)。また、第2のブロックに対して、第2のブロックに対する右隣接ブロックは、第2のブロックがコード化されるより前に既にコード化されているかもしれず、したがって、右隣接ブロックに対する動きベクトル情報は利用可能かもしれない(例えば、以前に決定されている)。
[0034]
空間的に隣接するどのブロックがコード化されているかはピクチャーのコーディング順序に基づいているかもしれないので、左から右へのコーディング順序を有する第1のピクチャー中の第1のブロックに対する動きベクトル予測子リストを構築する技法と、右から左へのコーディング順序を有する第2のピクチャー中の第2のブロックに対する動きベクトル予測子リストを構築する技法とは異なるかもしれない。本開示で説明している1つ以上の例では、その動きベクトル情報が第1のブロックに対する動きベクトル予測子リストを形成する、空間的に隣接するブロックのセットの位置は、その動きベクトル情報が第2のブロックに対する動きベクトル予測子リストを形成する、空間的に隣接するブロックのセットの位置に対して反転されているかもしれない。
[0035]
例えば、左から右へのコーディング順序を有する第1のピクチャー中の第1のブロックに対して、第1の動きベクトル予測子リスト中の第1のエントリが第1のブロックに対する左隣接ブロックの動きベクトル情報に基づいているように、ビデオコーダは、第1の動きベクトル予測子リストを構築してもよい。右から左へのコーディング順序を有する第2のピクチャー中の第2のブロックに対して、第2の動きベクトル予測子リスト中の第1のエントリが第2のブロックに対する右隣接ブロックの動きベクトル情報に基づいているように、ビデオコーダは、第2の動きベクトル予測子リストを構築してもよい。第1のブロックに関する左隣接ブロックと第2のブロックに関する右隣接ブロックは、互いに関して反転されていると見なしてもよい(例えば、左隣接ブロックは左にあり、右隣接ブロックは右にある)。
[0036]
いくつかの例では、左隣接ブロックの動きベクトル情報、上隣接ブロックの動きベクトル情報、右上隣接ブロックの動きベクトル情報、左下隣接ブロックの動きベクトル情報、左上隣接ブロックの動きベクトル情報という順序で、第1の動きベクトル予測子リストが、動きベクトル情報を有するように、ビデオコーダは、第1の動きベクトル予測子リストを構築してもよい。右隣接ブロックの動きベクトル情報、上隣接ブロックの動きベクトル情報、左上隣接ブロックの動きベクトル情報、右下隣接ブロックの動きベクトル情報、右上隣接ブロックの動きベクトル情報という順序で、第2の動きベクトル予測子リストが、動きベクトル情報を有するように、ビデオコーダは、第2の動きベクトル予測子リストを構築してもよい。
[0037]
上記の例では、第1および第2の動きベクトル予測子リストは、空間的に隣接するブロックに対する動きベクトル情報が動きベクトル予測子リスト中で配置される特定の順序を有する。動きベクトル情報が配置される特定の順序はあるが、ビデオコーダは、空間的に隣接するブロックからの動きベクトル情報に並列してアクセスように構成されていてもよい。これは、ビデオコーダが、複数のメモリコールを要求するのではなく、むしろ1つのメモリコールで(例えば、バッチ要求で)動きベクトル情報にアクセスすることを可能にするかもしれない。ビデオコーダは、その後、上記で説明している例示的な順序のような、特定の順序にしたがって、動きベクトル情報を配置してもよい。
[0038]
いくつかの技法では、空間的に隣接する特定のブロックの動きベクトル情報が動きベクトル予測子リスト中に含まれるか否かは、別のブロックの動きベクトル情報の利用可能性に基づいている。別の言い方をすると、空間的に隣接する特定のブロックが、動きベクトル予測子リスト中に追加されるべきであるか否かは、条件付きである(例えば、別のブロックの動きベクトル情報の利用可能性に基づく条件付き)。空間的に隣接するブロックに対する動きベクトル情報が含まれるか否かについての条件があることに起因して、ビデオコーダは、最初に他のブロックの動きベクトル情報にアクセスして、条件が満たされるか否かを決定し、その後、条件が満たされるか否かに基づいて、空間的に隣接するブロックの動きベクトル情報に対する別の要求を送る必要があるかもしれない。このような技法は、複数のメモリコールとなるかもしれず、これは、ブロックをコード化するのにかかる時間量を増加させることがある。
[0039]
本開示で説明している1つ以上の例では、空間的に隣接する特定のブロックの動きベクトル情報が動きベクトル予測子リスト中に含まれるべきであるか否かは、別のブロックの動きベクトル情報が利用可能であるか否かを条件としない。このようにして、ビデオコーダは、複数の要求の代わりにメモリへのバッチ要求で、空間的に隣接するブロックの動きベクトル情報にアクセスすることが可能かもしれず、これは、ブロックをコード化するのにかかる時間量を低減させ、ビデオコーダの動作を改善するかもしれない。
[0040]
上記で説明したように、空間的に隣接するブロックの動きベクトル情報に加えて、ビデオコーダは、(時間的に隣接するブロックとも呼ばれる)1つ以上のコロケートされたブロックの動きベクトル情報を含んでいてもよい。1つ以上のコロケートされたブロックは、コード化されているブロックを含むピクチャー以外の(参照ピクチャーと呼ばれる)別のピクチャー中のブロックである。コロケートされたブロックの1つの例は、現在ピクチャー中でコード化されている現在ブロックの位置とオーバーラップする参照ピクチャー中の位置に位置するブロックである。別の言い方をすると、現在ブロックは、現在ピクチャー内のエリアを規定していてもよく、同じエリア内にあるが参照ピクチャー中にあるブロックが、コロケートされたブロックの例である。コロケートされたブロックのこの例は、中央コロケートされたブロックとして呼ばれることがある。
[0041]
コロケートされたブロックの別の例は、現在ブロックの下であるが参照ピクチャー中に(例えば、現在ピクチャー中の現在ブロックにより規定されるエリアの下であるが、参照ピクチャー中に)位置するブロックである。コロケートされたブロックのこの例は、下コロケートされたブロックとして呼ばれることがある。コロケートされたブロックの別の例は、現在ブロックの右であるが参照ピクチャー中に(例えば、現在ピクチャー中の現在ブロックにより規定されるエリアの右であるが、参照ピクチャー中に)位置するブロックである。コロケートされたブロックのこの例は、右コロケートされたブロックとして呼ばれることがある。コロケートされたブロックの別の例は、現在ブロックの左であるが参照ピクチャー中に(例えば、現在ピクチャー中の現在ブロックにより規定されるエリアの左であるが、参照ピクチャー中に)位置するブロックである。コロケートされたブロックのこの例は、左コロケートされたブロックとして呼ばれることがある。
[0042]
1つ以上の例では、ビデオコーダは、中央コロケートされたブロックに対する動きベクトル情報が利用可能であるか否かを決定してもよい。中央コロケートされたブロックに対する動きベクトルが利用可能である場合には、ビデオコーダは、動きベクトル情報を動きベクトル予測子リストに追加し、他の何らかのコロケートされたブロックを検査しないかもしれない。中央コロケートされたブロックに対する動きベクトルが利用可能でない場合には、ビデオコーダは、下コロケートされたブロックに対する動きベクトル情報が利用可能であるか否かを決定してもよい。下コロケートされたブロックに対する動きベクトルが利用可能である場合には、ビデオコーダは、動きベクトル情報を動きベクトル予測子リストに追加し、他の何らかのコロケートされたブロックを検査しないかもしれない。
[0043]
下コロケートされたブロックに対する動きベクトルが利用可能でない場合には、ビデオコーダは、ピクチャーコーディング順序に基づいて、右コロケートされたブロックまたは左コロケートされたブロックのうちの1つに対する動きベクトル情報が利用可能であるか否かを決定してもよい。1つの例として、コーディング順序が左から右である場合には、ビデオコーダは、右コロケートされたブロックに対する動きベクトル情報が利用可能であるか否かを決定してもよい。コーディング順序が右から左である場合には、ビデオコーダは、左コロケートされたブロックに対する動きベクトル情報が利用可能であるか否かを決定してもよい。他の例では、ビデオコーダは、逆を実行してもよい(例えば、左から右へのコーディング順序に対して、左コロケートされたブロックに対する動きベクトル情報、右から左へのコーディング順序に対して、右コロケートされたブロックに対する動きベクトル情報)。右または左コロケートされたブロックに対する動きベクトルが適用対象で利用可能である場合には、ビデオコーダは、動きベクトル情報を動きベクトル予測子リストに追加し、他の何らかのコロケートされたブロックを検査しないかもしれない。
[0044]
コロケートされたブロックの追加の例があるかもしれない。例えば、コロケートされたブロックは、現在ブロックの右下(例えば、右下方向に斜めに)であるが参照ピクチャー中に(例えば、現在ピクチャー中であるが参照ピクチャー中で現在ブロックにより規定されるエリアの右下)位置する右下ブロックであってもよい。コロケートされたブロックの別の例は、現在ブロックの左下(例えば、左下方向に斜めに)であるが参照ピクチャー中に(例えば、現在ピクチャー中であるが参照ピクチャー中で現在ブロックにより規定されるエリアの左下)位置する左下ブロックであってもよい。ビデオコーダが動きベクトル情報に対する右下または左下コロケートされたブロックを検査するか否かは、ピクチャーコーディング順序に基づいていてもよい(例えば、左から右へのコーディング順序に対して右下コロケートされたブロック、右から左へのコーディング順序に対して左下コロケートされたブロック、または、その逆)。
[0045]
さらに、ビデオコーダは、動きベクトル予測子リストが満杯になるまで(例えば、動きベクトル予測子リスト中のエントリの数が動きベクトル予測子リストの最大サイズに等しくなるまで)、動きベクトル情報を動きベクトル予測子リストに追加してもよい。いくつかの例では、動きベクトル予測子リストのサイズは、ブロックのサイズに基づいていてもよい。例えば、ブロックがしきい値サイズよりも大きいサイズを有する場合には、動きベクトル予測子リストの最大サイズはMであってもよい(例えば、動きベクトル予測子リスト中のエントリがM個の最大数であってもよい)。ブロックがしきい値サイズよりも小さいサイズを有する場合には、動きベクトル予測子リストの最大サイズはXであってもよい(例えば、動きベクトル予測子リスト中のエントリがX個の最大数であってもよい)。XはMよりも小さくてもよい。
[0046]
例として、ブロックがNx4または4xNよりも大きいサイズを有する場合には、動きベクトル予測子リストの最大サイズは6(例えば、M=6)であってもよい。ブロックがNx4または4xNよりも小さいサイズを有する場合には、動きベクトル予測子リストの最大サイズは4(例えば、X=4)であってもよい。しきい値サイズがNx4または4xNである場合には、Nは8以下であってもよい。
[0047]
図1は、本開示の技法を実行してもよい、例示的なビデオエンコーディングおよびデコーディングシステム100を図示するブロック図である。本開示の技法は、一般的に、ビデオデータをコード化(エンコードおよび/またはデコード)することに向けられている。一般的に、ビデオデータは、ビデオを処理するための任意のデータを含んでいる。したがって、ビデオデータは、生のコード化されていないビデオ、エンコードされたビデオ、デコードされた(例えば、再構築された)ビデオ、および、シグナリングデータのようなビデオメタデータを含んでいてもよい。
[0048]
図1に示すように、システム100は、この例では、宛先デバイス116によってデコードされ、表示されるべき、エンコードされたビデオデータを提供する、発信元デバイス102を含んでいる。特に、発信元デバイス102は、コンピュータ読取可能媒体110を介して、ビデオデータを宛先デバイス116に提供する。発信元デバイス102および宛先デバイス116は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、スマートフォンのような電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイス、または、これらに類するものを含む、広範囲のデバイスのうちのいずれを含んでいてもよい。いくつかのケースでは、発信元デバイス102および宛先デバイス116は、ワイヤレス通信のために備えられてもよく、したがって、ワイヤレス通信デバイスとして呼ばれることがある。
[0049]
図1の例では、発信元デバイス102は、ビデオソース104と、メモリ106と、ビデオエンコーダ200と、出力インターフェース108とを含んでいる。宛先デバイス116は、入力インターフェース122と、ビデオデコーダ300と、メモリ120と、ディスプレイデバイス118とを含んでいる。本開示によれば、発信元デバイス102のビデオエンコーダ200および宛先デバイス116のビデオデコーダ300は、本開示で説明している例示的な技法のうちの1つ以上を使用して、動きベクトル予測子リストを構築するような、時空間動きベクトル予測のための技法を適用するように構成されていてもよい。したがって、発信元デバイス102はビデオエンコーディングデバイスの例を表す一方で、宛先デバイス116はビデオデコーディングデバイスの例を表している。他の例では、発信元デバイスおよび宛先デバイスは、他のコンポーネントまたは構成を含んでいてもよい。例えば、発信元デバイス102は、外部カメラのような外部ビデオソースからビデオデータを受け取ってもよい。同様に、宛先デバイス116は、統合されたディスプレイデバイスを含むよりもむしろ、外部ディスプレイデバイスとインターフェースしていてもよい。
[0050]
図1に示されているシステム100は1つの例にすぎない。一般的に、任意のデジタルビデオエンコーディングおよび/またはデコーディングデバイスが、時空間動きベクトル予測のための技法を実行してもよい。発信元デバイス102および宛先デバイス116は、発信元デバイス102が宛先デバイス116への送信のためにコード化されたビデオデータを発生させる、このようなコーディングデバイスの例にすぎない。本開示は、データのコーディング(エンコーディングおよび/またはデコーディング)を実行するデバイスとして「コーディング」デバイスに言及する。したがって、ビデオエンコーダ200およびビデオデコーダ300は、コーディングデバイスの例を、特に、それぞれビデオエンコーダおよびビデオデコーダを表している。いくつかの例では、デバイス102、116は、デバイス102、116のそれぞれがビデオエンコーディングコンポーネントとビデオデコーディングコンポーネントとを含むように、実質的に対称的に動作してもよい。したがって、システム100は、例えば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、または、ビデオ電話に対する、ビデオデバイス102とデバイス116との間の一方向または双方向ビデオ送信をサポートしてもよい。
[0051]
一般的に、ビデオソース104は、ビデオデータ(すなわち、生のコード化されていないビデオデータ)のソースを表し、ビデオデータの(「フレーム」としても呼ばれる)シーケンシャルな一連のピクチャーを、ピクチャーに対するデータをエンコードするビデオエンコーダ200に提供する。発信元デバイス102のビデオソース104は、ビデオカメラのようなビデオキャプチャデバイス、以前にキャプチャされた生のビデオを含んでいるビデオアーカイブ、および/または、ビデオコンテンツプロバイダからビデオを受け取るためのビデオフィードインターフェースを含んでいてもよい。さらなる代替として、ビデオソース104は、ソースビデオとしてのコンピュータグラフィックスベースのデータを、または、ライブビデオとアーカイブビデオとコンピュータ発生ビデオとの組み合わせを発生させてもよい。各ケースにおいて、ビデオエンコーダ200は、キャプチャされた、事前キャプチャされた、または、コンピュータが発生させたビデオデータをエンコードする。ビデオエンコーダ200は、(ときには「表示順序」として呼ばれる)受け取った順序から、コーディングのためのコーディング順序にピクチャーを再構築してもよい。ビデオエンコーダ200は、エンコードされたビデオデータを含むビットストリームを発生させてもよい。発信元デバイス102は、その後、例えば、宛先デバイス116の入力インターフェース122による受け取りおよび/または取り出しのために、出力インターフェース108を介して、コンピュータ読取可能媒体110上に、エンコードされたビデオデータを出力してもよい。
[0052]
発信元デバイス102のメモリ106および宛先デバイス116のメモリ120は、汎用メモリを表している。いくつかの例では、メモリ106、120は、生のビデオデータ、例えば、ビデオソース104からの生ビデオと、ビデオデコーダ300からの生のデコードされたビデオデータとを記憶してもよい。追加的にまたは代替的に、メモリ106、120は、例えば、ビデオエンコーダ200およびビデオデコーダ300それぞれによって実行可能なソフトウェア命令を記憶していてもよい。この例では、ビデオエンコーダ200およびビデオデコーダ300とは別個に示されているが、ビデオエンコーダ200およびビデオデコーダ300はまた、機能的に同様または同等の目的のために内部メモリを含んでいてもよいことを理解すべきである。さらに、メモリ106、120は、例えば、ビデオエンコーダ200から出力され、ビデオデコーダ300に入力される、エンコードされたビデオデータを記憶してもよい。いくつかの例では、メモリ106、120の一部分は、1つ以上のビデオバッファとして割り振られ、例えば、生のデコードされたおよび/またはエンコードされたビデオデータを記憶してもよい。
[0053]
コンピュータ読取可能媒体110は、発信元デバイス102から宛先デバイス116へとエンコードされたビデオデータを転送することが可能な任意のタイプの媒体またはデバイスを表していてもよい。1つの例では、コンピュータ読取可能媒体110は、発信元デバイス102が、例えば、無線周波数ネットワークまたはコンピュータベースのネットワークを介して、エンコードされたビデオデータをリアルタイムで宛先デバイス116に直接送信することを可能にする通信媒体を表している。ワイヤレス通信プロトコルのような通信標準規格にしたがって、出力インターフェース108は、エンコードされたビデオデータを含む送信信号を変調してもよく、入力インターフェース122は、受け取った送信信号を変調してもよい。通信媒体は、無線周波数(RF)スペクトルまたは1つ以上の物理送信ラインのような、何らかのワイヤレスまたはワイヤード通信媒体を備えていてもよい。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、または、インターネットのようなグローバルネットワークのような、パケットベースのネットワークの一部を形成していてもよい。通信媒体は、ルータ、スイッチ、基地局、または、発信元デバイス102から宛先デバイス116への通信を容易にするのに役立つかもしれない他の何らかの機器を含んでいてもよい。
[0054]
いくつかの例では、発信元デバイス102は、出力インターフェース108から記憶デバイス112にエンコードされたデータを出力してもよい。同様に、宛先デバイス116は、入力インターフェース122を介して、記憶デバイス112からのエンコードされたデータにアクセスしてもよい。記憶デバイス112は、ハードドライブ、ブルーレイ(登録商標)ディスク、DVD、CD-ROM、フラッシュメモリ、揮発性または不揮発性メモリ、または、エンコードされたビデオデータを記憶するための他の何らかの適切なデジタル記憶媒体のような、さまざまな分散またはローカルにアクセスされるデータ記憶媒体のいずれかを含んでいてもよい。
[0055]
いくつかの例では、発信元デバイス102は、エンコードされたビデオデータを、ファイルサーバ114に、または、発信元デバイス102によって発生させたエンコードされたビデオを記憶してもよい別の中間記憶デバイスに出力してもよい。宛先デバイス116は、ストリーミングまたはダウンロードを介して、ファイルサーバ114からの記憶されているビデオデータにアクセスしてもよい。ファイルサーバ114は、エンコードされたビデオを記憶することと、宛先デバイス116にエンコードされたビデオを送信することとができる、任意のタイプのサーバデバイスであってもよい。ファイルサーバ114は、(例えば、ウェブサイトに対する)ウェブサーバ、ファイル転送プロトコル(FTP)サーバ、コンテンツ配信ネットワークデバイス、または、ネットワーク接続記憶(NAS)デバイスを表していてもよい。宛先デバイス116は、インターネット接続を含む任意の標準的なデータ接続を通して、ファイルサーバ114からのエンコードされたビデオデータにアクセスしてもよい。これは、ファイルサーバ114中に記憶されている、エンコードされたビデオデータにアクセスするのに適している、ワイヤレスチャネル(例えば、Wi-Fi接続)、ワイヤード接続(例えば、DSL、ケーブルモデム等)、または、その両方の組み合わせを含んでいてもよい。ファイルサーバ114および入力インターフェース122は、ストリーミング送信プロトコル、ダウンロード送信プロトコル、または、これらの組み合わせにしたがって動作するように構成されていてもよい。
[0056]
出力インターフェース108および入力インターフェース122は、ワイヤレス送信機/受信機、モデム、ワイヤードネットワーキングコンポーネント(例えば、イーサネット(登録商標)カード)、さまざまなIEEE802.11標準規格のいずれかにしたがって動作するワイヤレス通信コンポーネント、または、他の物理コンポーネントを表していてもよい。出力インターフェース108および入力インターフェース122がワイヤレスコンポーネントを備えている例では、出力インターフェース108および入力インターフェース122は、4G、4G-LTE(登録商標)(ロングタームエボリューション)、LTEアドバンスト、5G、または、これらに類するもののようなセルラ通信標準規格にしたがって、エンコードされたビデオデータのようなデータを転送するように構成されていてもよい。出力インターフェース108がワイヤレス送信機を備えているいくつかの例では、出力インターフェース108および入力インターフェース122は、IEEE802.11仕様、IEEE802.15仕様(例えば、ZigBee(商標))、Bluetooth(登録商標)(商標)標準規格、または、これらに類するもののような他のワイヤレス標準規格にしたがって、エンコードされたビデオデータのようなデータを転送するように構成されていてもよい。いくつかの例では、発信元デバイス102および/または宛先デバイス116は、それぞれのシステムオンチップ(SoC)デバイスを含んでいてもよい。例えば、発信元デバイス102は、ビデオエンコーダ200および/または出力インターフェース108に備わる機能性を実行するためのSoCデバイスを含んでいてもよく、宛先デバイス116は、ビデオデコーダ300および/または入力インターフェース122に備わる機能性を実行するSoCデバイスを含んでいてもよい。
[0057]
本開示の技法は、無線テレビ放送、ケーブルテレビ送信、衛星テレビ送信、HTTPを通した動的アダプティブストリーミング(DASH)のようなインターネットストリーミングビデオ送信、データ記憶媒体上にエンコードされたデジタルビデオ、データ記憶媒体上に記憶されているデジタルビデオのデコーディング、または、他のアプリケーションのような、さまざまなマルチメディアアプリケーションのうちのいずれかをサポートするビデオコーディングに適用してもよい。
[0058]
宛先デバイス116の入力インターフェース122は、コンピュータ読取可能媒体110(例えば、記憶デバイス112、ファイルサーバ114、または、これらに類するもの)からエンコードされたビデオビットストリームを受け取る。コンピュータ読取可能媒体110からのエンコードされたビデオビットストリームは、ビデオブロックまたは他のコード化されたユニット(例えば、スライス、ピクチャー、ピクチャーのグループ、シーケンス、または、これらに類するもの)の特性および/または処理を記述する値を有するシンタックス要素のような、ビデオエンコーダ200によって規定され、ビデオデコーダ300によっても使用されるシグナリング情報を含んでいてもよい。ディスプレイデバイス118は、デコードされたビデオデータのデコードされたピクチャーをユーザに表示する。ディスプレイデバイス118は、ブラウン管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または、別のタイプのディスプレイデバイスのような、さまざまなディスプレイデバイスのうちのいずれかを表していてもよい。
[0059]
図1には示されていないが、いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は、それぞれオーディオエンコーダおよび/またはオーディオデコーダと統合されていてもよく、適切なMUX-DEMUXユニットあるいは他のハードウェアおよび/またはソフトウェアを含んでいて、共通のデータストリームにおけるオーディオおよびビデオの両方を含む多重化されたストリームを取り扱ってもよい。適用可能である場合には、MUX-DEMUXユニットは、ITU.H.223マルチプレクサプロトコル、または、ユーザデータグラムプロトコル(UDP)のような他のプロトコルにしたがっていてもよい。
[0060]
ビデオエンコーダ200およびビデオデコーダ300はそれぞれ、1つ以上のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア、または、これらの組み合わせのような、さまざまな適したエンコーダおよび/またはデコーダ回路のいずれかとして実現してもよい。技法が部分的にソフトウェアで実現されるとき、デバイスは、適切な、非一時的コンピュータ読取可能媒体においてソフトウェアに対する命令を記憶していてもよく、1つ以上のプロセッサを使用して、ハードウェアにおいて命令を実行して、本開示の技法を実行してもよい。ビデオエンコーダ200およびビデオデコーダ300のそれぞれは、1つ以上のエンコーダまたはデコーダ中に含まれていてもよく、エンコーダまたはデコーダのどちらかは、それぞれのデバイスにおいて、組み合わされたエンコーダ/デコーダ(CODEC)の一部として統合されていてもよい。ビデオエンコーダ200および/またはビデオデコーダ300を含むデバイスは、集積回路、マイクロプロセッサ、および/または、セルラ電話機のようなワイヤレス通信デバイスを備えていてもよい。
[0061]
ビデオコーディング標準規格は、ITU-T H.261、ISO/IEC MPEG-1 Visual、ITU-T H.262またはISO/IEC MPEG-2 Visual、ITU-T H.263、ISO/IEC MPEG-4 Visualおよび(ISO/IEC MPEG-4 AVCとしても知られる)ITU-T H.264を含み、そのスケーラブルビデオコーディング(SVC)およびマルチビュービデオコーディング(MVC)拡張を含んでいる。
[0062]
加えて、(G.J.Sullivan,J.-R.Ohm,W.-J.Han,T.Wiegand「高効率ビデオコーディング(HEVC)標準規格の概要」、ビデオ技術のための回路およびシステムにおけるIEEEトランザクション、vol.22、no.12.pp.1649-1668、2012年12月中で説明しているような)高効率ビデオコーディング(HEVC)またはITU-T H.265と名付けられているビデオコーディング標準規格は、その範囲拡張、マルチビュー拡張(MV-HEVC)およびスケーラブル拡張(SHVC)を含み、ビデオコーディングにおける共同作業チーム(JCT-VC)とともに、ITU-T ビデオコーディングエキスパートグループ(VCEG)およびISO/IEC動画エキスパートグループ(MPEG)の3Dビデオコーディング拡張開発における共同作業チーム(JCT-3V)により開発されている。以下でHEVC WDとして呼ばれるHEVCドラフト仕様は、http://phenix.int-evry.fr/jct/doc_end_user/documents/14_Vienna/wg11/JCTVC-N1003-v1.zipから入手可能である。HEVCの国際標準規格の最終ドラフト(FDIS)の最新バージョンは、http://phenix.it-sudparis.eu/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC-L1003-v34.zip中で見つけられるかもしれない。
[0063]
ITU-T VCEG(Q6/16)およびISO/IEC MPEG(JTC 1/SC 29/WG 11)は、(スクリーンコンテンツコーディングおよび高ダイナミックレンジコーディングに対するその現在の拡張および短期拡張を含む)現在のHEVC標準規格の圧縮能力を著しく超える圧縮能力を持つ将来のビデオコーディングテクノロジーの標準化に対する潜在的必要性を現在研究している。グループは、この分野のエキスパートによって提案された圧縮テクノロジー設計を評価するために、ジョイントビデオ調査チーム(JVET)として知られている共同作業の取り組みにおいて、この調査活動に関して共に取り組んでいる。JVETは、2015年10月19~21日の間に最初に会った。基準ソフトウェアのバージョン、すなわち、共同調査テストモデル7(JEM7)は、以下からダウンロードすることができる:https://jvet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/tags/HM-16.6-JEM-7.2/。共同調査テストモデル7(JEM-7)のアルゴリズム解説は、J.Chen,E.Alshina,G.J.Sullivan,J.-R.Ohm,J.Boyce、「共同調査テストモデル7のアルゴリズム解説」、JVET-G1001、2017年7月において説明されている。VVC標準規格の最近のドラフトは、Bross,et al.「バーサタイルビデオコーディング(ドラフト6)」、ITU-T SG16WP3およびISO/IEC JTC1/SC29/WG11、第15回ミーティング:Gothenburg、SE、2019年7月3~12日、JVET-O 2001-vEのジョイントビデオエキスパートチーム(JVET)(以下、「VVCドラフト6」)に記載されている。しかしながら、本開示の技法は、任意の特定のコーディング標準規格に限定されない。
[0064]
ビデオエンコーダ200およびビデオデコーダ300は、高効率ビデオコーディング(HEVC)としても呼ばれるITU-T H.265のようなビデオコーディング標準規格に、または、マルチビューおよび/またはスケーラブルビデオコーディング拡張のような、高効率ビデオコーディング(HEVC)に対する拡張にしたがって動作してもよい。代替的に、ビデオエンコーダ200およびビデオデコーダ300は、共同調査テストモデル(JEM)および/またはVVCのような、他のプロプライエタリまたは業界標準規格にしたがって動作してもよい。ビデオコーディング標準規格の別の例は、エッセンシャルビデオコーディング(EVC)標準規格である。しかしながら、本開示の技術は、何らかの特定のコーディング標準規格には限定されない。
[0065]
一般的に、ビデオエンコーダ200およびビデオデコーダ300は、ピクチャーのブロックベースコーディングを実行してもよい。「ブロック」という用語は、一般的に、処理される(例えば、エンコードされる、デコードされる、または、そうでなければ、エンコーディングおよび/またはデコーディングプロセスにおいて使用される)データを含む構造を指している。例えば、ブロックは、ルミナンスデータおよび/またはクロミナンスデータのサンプルの2次元行列を含んでいてもよい。一般的に、ビデオエンコーダ200およびビデオデコーダ300は、YUV(例えば、Y、Cb、Cr)フォーマットで表されるビデオデータをコード化してもよい。すなわち、ピクチャーのサンプルに対する赤、緑および青(RGB)データをコード化するよりもむしろ、ビデオエンコーダ200およびビデオデコーダ300は、ルミナンス成分とクロミナンス成分とをコード化してもよく、ここで、クロミナンス成分は、赤の色相と青の色相の両方のクロミナンス成分を含んでいてもよい。いくつかの例では、ビデオエンコーダ200は、エンコーディングの前に、受け取ったRGBフォーマットされたデータをYUV表現に変換し、ビデオデコーダ300は、YUV表現をRGBフォーマットに変換する。代替的に、(図示されていない)前処理ユニットおよび後処理ユニットがこれらの変換を実行してもよい。
[0066]
本開示は、一般的に、ピクチャーのデータをエンコードまたはデコードするプロセスを含むように、ピクチャーのコーディング(例えば、エンコーディングおよびデコーディング)に関連しているかもしれない。同様に、本開示は、ブロックに対するデータをエンコーディングまたはデコーディングするプロセス、例えば、予測および/または残差コーディングを含むように、ピクチャーのブロックのコーディングに関連しているかもしれない。エンコードされたビデオビットストリームは、一般的に、コーディング決定(例えば、コーディングモード)とブロックへのピクチャーの区分とを表す、シンタックス要素に対する一連の値を含んでいる。したがって、ピクチャーまたはブロックをコード化することへの言及は、一般的に、ピクチャーまたはブロックを形成するシンタックス要素に対する値をコーディングすることとして理解すべきである。
[0067]
HEVCは、コーディングユニット(CU)、予測ユニット(PU)および変換ユニット(TU)を含む、さまざまなブロックを規定する。HEVCにしたがうと、(ビデオエンコーダ200のような)ビデオコーダは、4分ツリー構造にしたがって、コーディングツリーユニット(CTU)をCUに区分する。すなわち、ビデオコーダは、CTUおよびCUを4つの等しい、オーバーラップしない正方形に区分し、4分ツリーの各ノードは、ゼロまたは4つの子ノードのいずれかを有する。子ノードのないノードは、「リーフノード」として呼ばれることがあり、このようなリーフノードのCUは、1つ以上のPUおよび/または1つ以上のTUを含んでいてもよい。ビデオコーダは、PUとTUとをさらに区分してもよい。例えば、HEVCでは、残差4分ツリー(RQT)はTUの区分を表している。HEVCでは、PUはインター予測データを表す一方で、TUは残差データを表している。イントラ予測されるCUは、イントラモード表示のようなイントラ予測情報を含んでいる。
[0068]
別の例として、ビデオエンコーダ200およびビデオデコーダ300は、JEMおよび/またはVVCの例にしたがって動作するように構成されていてもよい。JEMおよび/またはVVCの例によれば、(ビデオエンコーダ200のような)ビデオコーダは、ピクチャーを複数のコーディングツリーユニット(CTU)に区分する。ビデオエンコーダ200は、4分ツリー-2分ツリー(QTBT)構造のようなツリー構造にしたがって、CTUを区分してもよい。JEMおよび/またはVVCの例のQTBT構造は、HEVCのCUとPUとTUとの間の分離のような、複数の区分タイプの概念を除去する。JEM/VVCの例のQTBT構造は、4分ツリー区分にしたがって区分される第1のレベルと、2分ツリー区分にしたがって区分される第2のレベルと、の2つのレベルを含んでいる。QTBT構造のルートノードはCTUに対応する。2分ツリーのリーフノードは、コーディングユニット(CU)に対応する。
[0069]
いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は、単一のQTBT構造を使用して、ルミナンス成分とクロミナンス成分のそれぞれを表してもよい一方で、他の例では、ビデオエンコーダ200およびビデオデコーダ300は、ルミナンス成分のために1つのQTBT構造と、両方のクロミナンス成分のために別のQTBT構造(または、それぞれのクロミナンス成分のために2つのQTBT構造)のように、2つ以上のQTBT構造を使用してもよい。
[0070]
ビデオエンコーダ200およびビデオデコーダ300は、HEVC毎の4分ツリー区分、JEM/VVCの例にしたがうQTBT区分、または、他の区分構造を使用するように構成されていてもよい。説明のために、本開示の技法の説明は、QTBT区分に関して提示する。しかしながら、本開示の技法はまた、4分ツリー区分、または、他のタイプの区分も同様に使用するように構成されているビデオコーダに適用してもよいことを理解されたい。
[0071]
本開示は、「N×N」および「NバイN」を交換可能に使用して、垂直寸法および水平寸法に関する(CUまたは他のビデオブロックのような)ブロックのサンプル寸法、例えば、16×16サンプルまたは16バイ16サンプルを指すかもしれない。一般的に、16×16のCUは、垂直方向に16個のサンプルを有し(y=16)、水平方向に16個のサンプルを有する(x=16)。同様に、N×NのCUは、一般的に、垂直方向にN個のサンプルを有し、水平方向にN個のサンプルを有し、ここで、Nは非負整数値を表している。CU中のサンプルは、行および列に配置されていてもよい。さらに、CUは、必ずしも水平方向に垂直方向と同じ数のサンプルを有する必要はない。例えば、CUはN×Mのサンプルを備えていてもよく、ここで、Mは必ずしもNに等しいとは限らない。
[0072]
ビデオエンコーダ200は、予測および/または残差情報を、ならびに、他の情報を表す、CUに対するビデオデータをエンコードする。予測情報は、CUに対する予測ブロックを形成するために、CUがどのように予測されるべきかを示している。残差情報は、一般的に、エンコーディング前のCUのサンプルと予測ブロックとの間のサンプル毎の差分を表している。
[0073]
CUを予測するために、ビデオエンコーダ200は、一般的に、インター予測またはイントラ予測を通して、CUに対する予測ブロックを形成してもよい。インター予測は、一般的に、以前にコード化されたピクチャーのデータからCUを予測することを指す一方で、イントラ予測は、一般的に、同じピクチャーの以前にコード化されたデータからCUを予測することを指している。インター予測を実行するために、ビデオエンコーダ200は、1つ以上の動きベクトルを使用して、予測ブロックを発生させてもよい。ビデオエンコーダ200は、一般的に、動きサーチを実行して、例えば、CUと参照ブロックとの間の差分に関して、CUに密接に一致する参照ブロックを識別してもよい。ビデオエンコーダ200は、絶対差分の和(SAD)、二乗差分の和(SSD)、平均絶対差分(MAD)、平均二乗差分(MSD)、または、他のこのような差分計算を使用して、差分メトリックを計算し、参照ブロックが現在CUに密接に一致するか否かを決定してもよい。いくつかの例では、ビデオエンコーダ200は、単方向予測または双方向予測を使用して、現在CUを予測してもよい。
[0074]
JEMまたはVVCはまた、インター予測モードと見なしてもよいアフィン動き補償モードを提供する。アフィン動き補償モードでは、ビデオエンコーダ200は、ズームインまたはズームアウト、回転、透視動き、または、他の不規則な動きタイプのような、並進しない動きを表す2つ以上の動きベクトルを決定してもよい。
[0075]
イントラ予測を実行するために、ビデオエンコーダ200は、イントラ予測モードを選択して、予測ブロックを発生させてもよい。JEMは、さまざまな方向性モードとともに、平面モードおよびDCモードを含む、67個のイントラ予測モードを提供する。一般的に、ビデオエンコーダ200は、現在ブロックのサンプルを予測する、現在ブロック(例えば、CUのブロック)に隣接するサンプルを記述するイントラ予測モードを選択する。ビデオエンコーダ200がラスター走査順序(左から右および上から下のコーディング順序、または、右から左および上から下のコーディング順序)でCTUおよびCUをコード化すると仮定すると、このようなサンプルは、一般的に、現在ブロックと同じピクチャー中で、現在ブロックの上、左上または左にあってもよい。
[0076]
ビデオエンコーダ200は、現在ブロックに対する予測モードを表すデータをエンコードする。例えば、インター予測モードに対して、ビデオエンコーダ200は、さまざまな利用可能なインター予測モードのうちのどれが使用されるかを表すデータとともに、対応するモードに対する動き情報をエンコードしてもよい。単方向または双方向インター予測に対して、例えば、ビデオエンコーダ200は、高度動きベクトル予測(AMVP)またはマージモードを使用して、動きベクトルをエンコードしてもよい。ビデオエンコーダ200は、類似するモードを使用して、アフィン動き補償モードに対する動きベクトルをエンコードしてもよい。
[0077]
ブロックのイントラ予測またはインター予測のような予測に続いて、ビデオエンコーダ200は、ブロックに対する残差データを計算してもよい。残差ブロックのような残差データは、ブロックと、対応する予測モードを使用して形成された、ブロックに対する予測ブロックとの間の、サンプル毎の差分を表している。ビデオエンコーダ200は、1つ以上の変換を残差ブロックに適用して、サンプルドメインの代わりに変換ドメインにおいて、変換されたデータを生成させてもよい。例えば、ビデオエンコーダ200は、離散コサイン変換(DCT)、整数変換、ウェーブレット変換、または、概念的に類似する変換を残差ビデオデータに適用してもよい。さらに、ビデオエンコーダ200は、モード依存分離不可能2次変換(MDNSST)、信号依存変換、カルーネンレーベ変換(KLT)、または、これらに類するもののような、第1の変換に続く2次変換を適用してもよい。ビデオエンコーダ200は、1つ以上の変換の適用に続いて、変換係数を生成させる。
[0078]
上述のように、変換係数を生成させるための任意の変換に続いて、ビデオエンコーダ200は、変換係数の量子化を実行してもよい。量子化は、一般的に、変換係数が量子化されて、係数を表すために使用されるデータの量を場合によっては低減させ、さらなる圧縮を提供するプロセスを指している。量子化プロセスを実行することによって、ビデオエンコーダ200は、係数のいくつか、または、すべてに関係するビット深度を低減させてもよい。例えば、ビデオエンコーダ200は、量子化の間にn-ビット値をm-ビット値に切り捨ててもよく、ここで、nはmよりも大きい。いくつかの例では、量子化を実行するために、ビデオエンコーダ200は、量子化されるべき値のビット単位の右シフトを実行してもよい。
[0079]
量子化に続いて、ビデオエンコーダ200は、変換係数を走査し、量子化された変換係数を含む2次元行列から1次元ベクトルを生成させてもよい。走査は、より高いエネルギー(したがって、より低い周波数)の係数をベクトルの前部に配置し、より低いエネルギー(したがって、より高い周波数)の変換係数をベクトルの後部に配置するように設計されていてもよい。いくつかの例では、ビデオエンコーダ200は、予め規定された走査順序を利用して、量子化変換係数を走査し、シリアル化ベクトルを生成させ、その後、ベクトルの量子化変換係数をエントロピーエンコードしてもよい。他の例では、ビデオエンコーダ200は、適応走査を実行してもよい。量子化変換係数を走査して1次元ベクトルを形成した後、ビデオエンコーダ200は、例えば、コンテキスト適応2値算術コーディング(CABAC)にしたがって、1次元ベクトルをエントロピーエンコードしてもよい。ビデオエンコーダ200はまた、ビデオデータをデコードする際に、ビデオデコーダ300によって使用するために、エンコードされたビデオデータに関係するメタデータを記述するシンタックス要素に対する値をエントロピーエンコードしてもよい。
[0080]
CABACを実行するために、ビデオエンコーダ200は、コンテキストモデル内のコンテキストを送信されるべきシンボルに割り当ててもよい。コンテキストは、例えば、シンボルの隣接する値がゼロ値にされているか否かに関連していてもよい。確率決定は、シンボルに割り当てられているコンテキストに基づいていてもよい。
[0081]
ビデオエンコーダ200はさらに、例えば、ピクチャーヘッダ中で、ブロックヘッダ中で、スライスヘッダ中で、あるいは、シーケンスパラメータセット(SPS)、ピクチャーパラメータセット(PPS)、または、ビデオパラメータセット(VPS)のような他のシンタックスデータ中で、ビデオデコーダ300への、ブロックベースのシンタックスデータ、ピクチャーベースのシンタックスデータ、および、シーケンスベースのシンタックスデータのようなシンタックスデータを発生させてもよい。ビデオデコーダ300は、同様に、このようなシンタックスデータをデコードして、対応するビデオデータをどのようにデコードするかを決定してもよい。
[0082]
このようにして、ビデオエンコーダ200は、エンコードされたビデオデータを含む、例えば、ブロック(例えば、CU)へのピクチャーの区分と、ブロックに対する予測および/または残差情報とを記述する、シンタックス要素を含む、ビットストリームを発生させてもよい。最終的に、ビデオデコーダ300は、ビットストリームを受け取り、エンコードされたビデオデータをデコードしてもよい。
[0083]
一般的に、ビデオデコーダ300は、ビデオエンコーダ200によって実行されたプロセスとは逆のプロセスを実行して、ビットストリームのエンコードされたビデオデータをデコードする。例えば、ビデオデコーダ300は、ビデオエンコーダ200のCABACエンコーディングプロセスと、逆ではあるが、実質的に類似する方法で、CABACを使用して、ビットストリームのシンタックス要素に対する値をデコードしてもよい。シンタックス要素は、CTUへのピクチャーの区分情報と、QTBT構造のような、対応する区分構造にしたがって、各CTUを区分することとを規定して、CTUのCUを規定していてもよい。シンタックス要素は、ビデオデータのブロック(例えば、CU)に対する予測および残差情報をさらに規定していてもよい。
[0084]
残差情報は、例えば、量子化変換係数によって表されていてもよい。ビデオデコーダ300は、ブロックの量子化された変換係数を逆量子化および逆変換して、ブロックに対する残差ブロックを再生させてもよい。ビデオデコーダ300は、シグナリングされた予測モード(イントラ予測またはインター予測)と、関連する予測情報(例えば、インター予測に対する動き情報)とを使用して、ブロックに対する予測ブロックを形成する。ビデオデコーダ300は、その後、(サンプル毎のベースで)予測ブロックと残差ブロックとを組み合わせて、元のブロックを再生させてもよい。ビデオデコーダ300は、デブロッキングプロセスを実行することのような、追加の処理を実行して、ブロックの境界に沿った視覚的アーティファクトを低減させてもよい。
[0085]
本開示の技法によれば、ビデオエンコーダ200およびビデオデコーダ300は、動きベクトル予測子リストを構築するように構成されていてもよい。上記で説明したように、マージモードおよびAMVPモードに対して、ビデオデコーダ300は、動きベクトル予測子リスト中の動きベクトル情報に基づいて、デコーディングされている現在ブロックに対する動きベクトルを決定してもよい。例えば、ビデオエンコーダ200は、動きベクトル予測子リストへのインデックスを示す情報をシグナリングしてもよく、ビデオデコーダ300は、インデックスに基づいて、動きベクトル予測子リスト中に記憶されている動きベクトル情報を取り出してもよい。マージモードに対して、ビデオデコーダ300は、現在ブロックに対する動きベクトルを、取り出された動きベクトル情報に等しいように設定してもよい。AMVPモードに対して、ビデオデコーダ300は、現在ブロックに対する動きベクトルと取り出された動きベクトル情報との間の動きベクトル差分(MVD)を示す情報をさらに受け取ってもよい。このような例では、ビデオデコーダ300は、MVDを取り出された動きベクトル情報に追加して、現在ブロックに対する動きベクトルを決定してもよい。
[0086]
マージおよびAMVPモードでは、ビデオエンコーダ200およびビデオデコーダ300は、ビデオエンコーダ200により構築された動きベクトル予測子リストとビデオデコーダ300により構築された動きベクトル予測子リストとが実質的に同じであるように、類似する方法で動きベクトル予測子リストを構築するように構成されていてもよい。動きベクトル予測子リストを構築するために、ビデオエンコーダ200およびビデオデコーダ300は、空間的に隣接するブロックおよび(コロケートされたブロックとも呼ばれる)時間的に隣接するブロックの動きベクトル情報を取り出してもよい。空間的に隣接するブロックは、エンコードまたはデコードされている現在ブロックを含む現在ピクチャー中に位置するブロックを指している。コロケートされたブロックは、現在ピクチャーとは異なる参照ピクチャー中に位置するブロックを指している。
[0087]
しかしながら、ビデオエンコーダ200およびビデオデコーダ300が動きベクトル情報に対して空間的に隣接するどのブロックを検査するかは、エンコードまたはデコードされている現在ブロックが位置している現在ピクチャーのコーディング順序に基づいているかもしれない。以下でより詳細に説明しているように、現在ピクチャーが左から右へのコーディング順序を有する例では、空間的に隣接する検査されるブロックの例が図8Aに示され、ブロック0 802、ブロック1 804、ブロック2 806、ブロック3 808、ブロック4 810として識別されている。現在ピクチャーが右から左へのコーディング順序を有する例では、空間的に隣接する検査されるブロックの例が図8Bに示され、ブロック0 818、ブロック1 820、ブロック2 822、ブロック3 824、ブロック4 826として識別されている。このようにして、ビデオエンコーダ200およびビデオデコーダ300は、ピクチャーのコーディング順序に基づいて、空間的に隣接する異なるブロックを検査するように構成されていてもよい。
[0088]
空間的に隣接するブロックに加えて、ビデオエンコーダ200およびビデオデコーダ300は、コロケートされたブロックの動きベクトル情報を含んでいてもよい。いくつかの例では、現在ピクチャーの左から右へのコーディング順序に対して、ビデオエンコーダ200およびビデオデコーダ300は、図8Aの中央コロケートされたブロック5 812の動きベクトル情報が利用可能であるか否かを決定し、利用可能である場合には、動きベクトル予測子リスト中に中央コロケートされたブロック5 812の動きベクトル情報を含め、他の何らかのコロケートされたブロックの動きベクトル情報を検査せず、または、含めないかもしれない。
[0089]
中央コロケートされたブロック5 812の動きベクトル情報が利用可能でない場合には、ビデオエンコーダ200およびビデオデコーダ300は、図8Aの下コロケートされたブロック6 814の動きベクトル情報が利用可能であるか否かを決定し、利用可能である場合には、動きベクトル予測子リスト中に下コロケートされたブロック6 814の動きベクトル情報を含め、他の何らかのコロケートされたブロックの動きベクトル情報を検査せず、または、含めないかもしれない。図示されているように、下コロケートされたブロック6 814は、現在ブロック800の下にあり、現在ブロック800の右に最も近いブロックであってもよい(例えば、ブロック6 814は、図8Aの現在ブロック800の下にあり、ブロック6 814の右境界は、図8Aの現在ブロック800の右境界と同じである)。すなわち、下コロケートされたブロックの右境界は、現在ブロック800を含むピクチャー以外のピクチャー中で、現在ブロック800の右境界と同じロケーションにある。ブロック6 814に対する座標は(xColBot、yColBot)であってもよく、ここで、xColBot=xCb+cbWidth-1、yColBot=yCb+cbHeightであり、ここで、(xCb、yCb)は、図8Aの現在ブロック800に対する座標であり、cbWidthは、図8Aの現在ブロック800の幅であり、cbHeightは、図8Aの現在ブロック800の高さである。
[0090]
下コロケートされたブロック6 814の動きベクトル情報が利用可能でない場合には、ビデオエンコーダ200およびビデオデコーダ300は、図8Aの右コロケートされたブロック7 816の動きベクトル情報が利用可能であるか否かを決定し、利用可能である場合には、動きベクトル予測子リスト中に右コロケートされたブロック7 816の動きベクトル情報を含め、他の何らかのコロケートされたブロックの動きベクトル情報を検査せず、または、含めないかもしれない。図示されているように、右コロケートされたブロック7 816は、図8Aの現在ブロック800の右にあり、図8Aの現在ブロック800の下に最も近いブロックであってもよい(例えば、ブロック7 816は、図8Aの現在ブロック800の右にあり、ブロック7 816の下境界は、図8Aの現在ブロック800の下境界と同じである)。ブロック7 816に対する座標は(xColBr、yColBr)であってもよく、ここで、xColBr=xCb+cbWidth、yColBr=yCb+cbHeight-1であり、ここで、(xCb、yCb)は、図8Aの現在ブロック800に対する座標であり、cbWidthは、図8Aの現在ブロック800の幅であり、cbHeightは、図8Aの現在ブロック800の高さである。
[0091]
いくつかの例では、現在ピクチャーの右から左へのコーディング順序に対して、ビデオエンコーダ200およびビデオデコーダ300は、図8Bの中央コロケートされたブロック5 828の動きベクトル情報が利用可能であるか否かを決定し、利用可能である場合には、動きベクトル予測子リスト中に中央コロケートされたブロック5 828の動きベクトル情報を含め、他の何らかのコロケートされたブロックの動きベクトル情報を検査せず、または、含めないかもしれない。
[0092]
中央コロケートされたブロック5 822の動きベクトル情報が利用可能でない場合には、ビデオエンコーダ200およびビデオデコーダ300は、図8Bの下コロケートされたブロック6 830の動きベクトル情報が利用可能であるか否かを決定し、利用可能である場合には、動きベクトル予測子リスト中に下コロケートされたブロック6 830の動きベクトル情報を含め、他の何らかのコロケートされたブロックの動きベクトル情報を検査せず、または、含めないかもしれない。図示されているように、下コロケートされたブロック6 830は、現在ブロック800の下にあり、現在ブロック800の左に最も近いブロックであってもよい(例えば、ブロック6 830は、図8Bの現在ブロック800の下にあり、ブロック6 830の左境界は、図8Bの現在ブロック800の左境界と同じである)。すなわち、下コロケートされたブロックの左境界は、現在ブロック800を含むピクチャー以外のピクチャー中で、現在ブロック800の左境界と同じロケーションにある。ブロック6 830に対する座標は(xColBot、yColBot)であってもよく、ここで、xColBot=xCb、yColBot=yCb+cbHeightであり、ここで、(xCb、yCb)は、図8Bの現在ブロック800に対する座標であり、cbWidthは、図8Bの現在ブロック800の幅であり、cbHeightは、図8Bの現在ブロック800の高さである。
[0093]
下コロケートされたブロック6 830の動きベクトル情報が利用可能でない場合には、ビデオエンコーダ200およびビデオデコーダ300は、図8Bの左コロケートされたブロック7 832の動きベクトル情報が利用可能であるか否かを決定し、利用可能である場合には、動きベクトル予測子リスト中に左コロケートされたブロック7 832の動きベクトル情報を含め、他の何らかのコロケートされたブロックの動きベクトル情報を検査せず、または、含めないかもしれない。図示されているように、左コロケートされたブロック7 832は、図8Bの現在ブロック800の左にあり、図8Bの現在ブロック800の下に最も近いブロックであってもよい(例えば、ブロック7 832は、図8Bの現在ブロック800の左にあり、ブロック7 832の下境界は、図8Bの現在ブロック800の下境界と同じである)。ブロック7 832に対する座標は(xColBr、yColBr)であってもよく、ここで、xColBr=xCb-1、yColBr=yCb+cbHeight-1であり、ここで、(xCb、yCb)は、図8Bの現在ブロック800に対する座標であり、cbWidthは、図8Bの現在ブロック800の幅であり、cbHeightは、図8Bの現在ブロック800の高さである。
[0094]
いくつかの例では、図8Aのブロック814、816および図8Bのブロック830、832のコロケートされた位置は、粒度8×8ブロックで規定されていてもよい。例えば、現在CU(例えば、図8Aまたは図8Bの現在ブロック800)が64×64である場合には、下、左または右において利用可能な複数の8×8ブロックがあるかもしれない。いくつかの例では、角の8×8ブロック(例えば、ブロック814、816、830、832)のみを使用して、動きベクトルを提供してもよい。
[0095]
さらに、いくつかの例では、動きベクトル予測子リストのサイズは、現在ブロックのサイズに基づいていてもよい。1つの例として、現在ブロックのサイズがしきい値よりも大きい場合には、動きベクトル予測子リストのエントリの最大数は、現在ブロックのサイズがしきい値よりも小さい場合よりも大きいかもしれない。例えば、Nが8以下であり、現在ブロックのサイズがNx4または4xNよりも大きい場合には、動きベクトル予測子リストの最大サイズは6であってもよい。Nが8以下であり、現在ブロックのサイズがNx4または4xNよりも小さい場合には、動きベクトル予測子リストの最大サイズは4であってもよい。上記の値は、理解を助けるための単なる1つの例であり、限定するものと見なされるべきではない。
[0096]
本開示は、一般的に、シンタックス要素のような、ある情報を「シグナリングすること」に関連しているかもしれない。「シグナリング」という用語は、一般的に、シンタックス要素のおよび/またはエンコードされたビデオデータをデコードするのに使用される他のデータの値の通信に関連しているかもしれない。すなわち、ビデオエンコーダ200は、ビットストリーム中でシンタックス要素に対する値をシグナリングしてもよい。一般的に、シグナリングは、ビットストリーム中で値を発生させることを指している。上述のように、発信元デバイス102は、実質的にリアルタイムで、または、宛先デバイス116による後の取り出しのために、シンタックス要素を記憶デバイス112中に記憶させるときに起こるかもしれないような、リアルタイムではなく、ビットストリームを宛先デバイス116に転送してもよい。
[0097]
ビデオエンコーダ200およびビデオデコーダ300の例は、図2および図3に関してより詳細に示し説明している。図2および図3を説明する前に、以下では、図4A、図4B、図5A、図5Bおよび図6に関して、動きベクトル予測のような、ビデオコーディングプロセスのいくつかの追加の詳細を説明する。
[0098]
より詳細に説明するように、図7A~図7Cは、ビデオエンコーダ200およびビデオデコーダ300が動きベクトル予測子リストを構築するために評価する空間的および時間的に隣接するブロックのいくつかの例を示している。図7A~図7Cで図示されている技法を使用して、動きベクトル予測子リストを構築する際に、いくつかの問題があるかもしれない。より詳細に説明するように、図8A~図8Cは、図7A~図7Cに関して説明した動きベクトル予測子リストを構築する問題に対処するかもしれない、動きベクトル予測子リストを構築するいくつかの追加の例を図示している。
[0099]
以下で、HEVCにおけるCU構造および動きベクトル予測をレビューする。HEVCでは、スライス中の最大コーディングユニットが、コーディングツリーブロック(CTB)またはコーディングツリーユニット(CTU)として呼ばれる。CTBは、ノードがコーディングユニットである、4分ツリーを含んでいる。
[0100]
CTBのサイズは、(技術的には8×8CTBサイズをサポートすることができるが)HEVCメインプロファイルにおいて16×16から64×64の範囲をとることができる。コーディングユニット(CU)は、CTBと同じサイズから8×8までの小ささであってもよい。各コーディングユニットは、インターコード化またはイントラコード化のような1つのモードでコード化される。インターコード化はまた、インター予測コード化またはインター予測されたとして呼ばれることがあり、イントラコード化はまた、イントラ予測コード化またはイントラ予測されたとして呼ばれることがある。
[0101]
CUがインターコード化されるとき、CUは、2つまたは4つの予測ユニット(PU)にさらに区分されてもよく、または、さらなる区分が適用されないときには、1つのPUであってもよい。2つのPUが1つのCU中に存在するときには、PUは、半分のサイズの長方形、あるいは、CUの1/4または3/4のサイズを有する2つの長方形サイズとすることができる。CUがインターコード化されるとき、各PUは、インター予測モードで導出される、1つのセットの動き情報を有する。
[0102]
以下で、動きベクトル予測をレビューする。HEVC標準規格では、予測ユニット(PU)に対して、それぞれマージ(スキップはマージの特別なケースと見なされる)モードおよび高度動きベクトル予測(AMVP)モードという名の、2つのインター予測モードがある。AMVPモードまたはマージモードのいずれかにおいて、複数の動きベクトル予測子に対して、(MV候補リストとも呼ばれる)動きベクトル(MV)予測子リストが維持される。動きベクトル予測子リストは、動きベクトル予測子リストとして呼ばれることもある。動きベクトル予測子リストから1つの候補を取り出すことによって、現在PUの、動きベクトルとともに、マージモードにおける参照インデックスが発生される。動きベクトル予測子リストは、マージモードに対して5つまでの候補と、AMVPモードに対して2つだけの候補とを含んでいてもよい。マージ候補は、動き情報のセット、例えば、両参照ピクチャーリスト(リスト0およびリスト1)に対応する動きベクトルと、参照インデックスとを含んでいてもよい。マージ候補がマージインデックスによって識別される場合には、現在ブロックの予測のために使用される参照ピクチャーとともに、関係する動きベクトルが決定される。言い換えると、マージインデックスにより、動きベクトル予測子リスト中で識別される動きベクトルおよび参照ピクチャーは、現在ブロックの動きベクトルおよび参照ピクチャーと等しいように設定される。
[0103]
一方、AMVPモード下では、AMVP候補が動きベクトルのみを含むことから、リスト0またはリスト1のいずれかからの各潜在的予測方向に対して、動きベクトル予測子リストへのMV予測子(MVP)インデックスとともに、参照インデックスが、明示的にシグナリングされる必要がある。AMVPモードでは、(例えば、上記で説明した動きベクトル差分(MVD)に基づいて、)予測された動きベクトルをさらに改善することができる。両方のモードに対する候補は、同じ空間的および時間的に隣接するブロックから同様に導出される。
[0104]
以下では、その動きベクトル情報が(動きベクトル予測子候補とも呼ばれる)動きベクトル予測子として形成される空間的に隣接するブロックをレビューする。いくつかの例では、空間MV候補(例えば、空間動きベクトル予測子)は、それぞれ、特定のPU(PU)434および438に対する図4Aおよび図4B中に示されている隣接ブロックから導出されるが、ブロックから候補を発生させるための方法は、マージモードとAMVPモードとでは異なる。図4Aは、マージモードに対する空間隣接候補を示す概念図である。図4Bは、AMVPモードに対する空間隣接候補を示す概念図である。
[0105]
マージモードでは、いくつかの例では、5つまでの空間MV候補を、図4Aに示されている順序で導出でき、順序は図4Aに示すように、以下の通りである:左(0、A1)、上(1、B1)、右上(2、B0)、左下(3、A0)および左上(4、B2)。例えば、PU0 434に対して、ブロックA1は0として識別され、PU0 434の左にあり、ブロックB1は1として識別され、PU0 434の上にあり、ブロックB0は2として識別され、PU0 434の右上にあり、PU1 436の上にあり、ブロックA0は3として識別され、PU0 434の左下にあり、ブロックB2は4として識別され、PU0 434の左上にある。
[0106]
AMVPモードでは、いくつかの例では、隣接するブロックは、図4Bに示されているように、それぞれPU0 438の左下および左にあるブロック0および1を含む左グループと、PU0 438の右上、上および左上にあるブロック2、3および4を含む上グループとの、2つのグループに分割される。ブロック2は、PU1 440の上にある。各グループに対して、シグナリングされた参照インデックスによって示されているものと同じ参照ピクチャーを参照する隣接するブロック中の潜在的候補は、グループの最終候補を形成するために選択されるべき最高の優先度を有する。すべての隣接するブロックが、同じ参照ピクチャーを指す動きベクトルを含まないかもしれない。したがって、このような候補を見つけることができない場合には、最初の利用可能な候補をスケーリングして、最終候補を形成してもよく、したがって、時間的距離差分を補償できる。
[0107]
以下では、図5Aおよび5Bにより時間動きベクトル予測をレビューする。図5Aは、時間動きベクトル予測子(TMVP)候補を示す概念図である。図5Bは、TMVPに対する動きベクトルスケーリングを示す概念図である。
[0108]
いくつかの例では、TMVP候補は、有効にされて利用可能である場合には、空間動きベクトル候補(例えば、空間的に隣接するブロックの動きベクトル情報)の後にMV候補リスト(例えば、動きベクトル予測子リスト)に追加される。TMVP候補に対する動きベクトル導出のプロセスは、マージモードとAMVPモードの両方に対して同じであるが、しかしながら、マージモードにおけるTMVP候補に対するターゲット参照インデックスは0に設定される。
[0109]
いくつかの例では、TMVP候補導出に対する1次ブロックロケーションは、ブロックT540として図5A中に示されているように、コロケートされたPUの外側の右下ブロックである。ブロックT540のロケーションは、空間的に隣接する候補を発生させるのに使用される上ブロックおよび左ブロックへのバイアスを補償するためのものであってもよい。しかしながら、ブロックT540が現在CTB行の外側に位置するか、または、ブロックT540に対して動き情報が利用可能でない場合には、ブロックT540は、PUの中央ブロック541で置換される。
[0110]
図5Bでは、現在ピクチャー550中のTMVP候補に対する動きベクトル548は、スライスレベルにおいて示されている、コロケートされたピクチャー546のコロケートされたPUから導出される。コロケートされたPUに対する動きベクトル(MV)は、コロケートされたMV542と呼ばれる。TMVP候補動きベクトルを導出するために、コロケートされたMV542は、図5Bに示されているように、時間距離差分を補償するようにスケーリングされてもよい。例えば、コロケートされたピクチャー546とコロケートされた参照ピクチャー544との間の時間差分、および、現在ピクチャー550と現在参照ピクチャー552との間の時間差分を使用して、コロケートされたMV542をスケーリングして、動きベクトル548を発生させる。
[0111]
以下で、HEVCにおける動き予測のいくつかの他の態様をレビューする。マージモードおよびAMVPモードのいくつかの態様を以下で説明する。
[0112]
動きベクトルスケーリング:動きベクトルの値は、プレゼンテーション時間におけるピクチャーの距離に比例することがある。動きベクトルは、2つのピクチャー、参照ピクチャーと、動きベクトルを含むピクチャー(すなわち、包含ピクチャー)とを関係付ける。動きベクトルを利用して、他の動きベクトルを予測するとき、ピクチャー順序カウント(POC)値に基づいて、包含ピクチャーと参照ピクチャーとの距離が計算される。
[0113]
予測されるべき動きベクトルに対して、その関係付けられた包含ピクチャーと参照ピクチャーの両方は異なるかもしれない。したがって、(POCに基づく)新しい距離が計算され、そして、動きベクトルは、これら2つのPOC距離に基づいて、スケーリングされる。空間的に隣接する候補に対して、2つの動きベクトルに対する包含ピクチャーは同じである一方で、参照ピクチャーは異なる。HEVCにおいて、動きベクトルスケーリングは、空間的におよび時間的に隣接する候補に対して、TMVPとAMVPの両方に適用される。
[0114]
人工動きベクトル候補発生:動きベクトル予測子リストが完全でない(例えば、予め定められた数よりも少ない候補)場合には、人工動きベクトル候補を発生させ、動きベクトル予測子リストがすべての候補を有するまで、動きベクトル予測子リストの最後に挿入される。マージモードでは、2つのタイプの人工MV候補:Bスライスのみに対して導出される組み合わされた候補と、Bスライスのみに対して導出される組み合わされた候補が動きベクトル予測子リストを満たすのに十分な人工候補を提供しない場合に、AMVPのみに対して使用されるゼロ候補とがある。
[0115]
動きベクトル予測子リスト中に既にあり、必要な動き情報を有する候補の各ペアに対して、リスト0中のピクチャーを参照する第1の候補の動きベクトルと、リスト1中のピクチャーを参照する第2の候補の動きベクトルとの組み合わせによって、双方向に組み合わされた動きベクトル候補が導出される。
[0116]
候補挿入のための、余分な部分を取り除くプロセス:異なるブロックからの候補が、たまたま同じであるかもしれず、これは、マージ/AMVPの動きベクトル予測子リストの効率を低下させる。この問題に対処するために、余分な部分を取り除くプロセスを適用する。余分な部分を取り除くプロセスは、同一の候補を挿入することを回避するために、現在の動きベクトル予測子リスト中の1つの候補を他の候補と比較する。複雑さを低減させるために、各潜在的候補をリスト中の他のすべての既存の候補と比較することを回避するように、限られた数の余分な部分を取り除くプロセスだけを適用する。
[0117]
VVCの開発は、拡張動きベクトル予測を含んでいる。例えば、現在ブロックに対する動きベクトル予測またはマージ予測の動きベクトル予測子リストを導出または改善するいくつかのインターコーディングツールが提案されている。いくつかの例を以下で説明する。
[0118]
以下では、L.Zhang,K.Zhang,H.Liu,Y.Wang,P.Zhao、および、D.Hong、「CE4-関連:履歴ベース動きベクトル予測」、JVET-K0104、2018年7月中で説明しているような履歴ベース動き予測(HMVP)を説明する。HMVPは、ビデオエンコーダ200およびビデオデコーダ300が、直近の原因となる隣接する動きフィールド中のMVに加えて、過去からのデコードされたMVのリストから、各ブロックに対するMV予測子を決定する履歴ベースの方法である(例えば、直近の空間的に隣接するブロックのMVは、直近の原因となる隣接する動きフィールド中のMVの例である)。HMVPは、ビデオエンコーダ200およびビデオデコーダ300が、HMVP候補として、以前にデコードされた動きベクトルに対するテーブルを構築することを含んでいる。
[0119]
例えば、ビデオエンコーダ200およびビデオデコーダ300は、エンコーディング/デコーディングプロセスの間に、複数のHMVP候補によりテーブルを構築する。テーブルを構築することは、HMVP候補をテーブルに追加することとともに、HMVP候補をテーブルから除去することとを含んでいてもよい。ビデオエンコーダ200およびビデオデコーダ300は、エンコーディングまたはデコーディングのために新しいスライスに遭遇したとき、テーブルを空にする(例えば、HMVP候補を除去する)ように構成されていてもよい。インターコード化されたブロックがあるときはいつでも、ビデオエンコーダ200およびビデオデコーダ300は、新しいHMVP候補として、先入れ先出し(FIFO)方式で、関係する動き情報をテーブルに挿入するように構成されていてもよい。したがって、ビデオエンコーダ200およびビデオデコーダ300は、制約FIFOルールを適用するように構成されていてもよい。いくつかの技法では、HMVP候補をテーブルに挿入するとき、ビデオエンコーダ200およびビデオデコーダ300は、最初に冗長検査(例えば、余分な部分を取り除く)を適用して、テーブル中に同一のHMVP候補があるか否かを決定するように構成されていてもよい。見つかった場合、ビデオエンコーダ200およびビデオデコーダ300は、その特定のHMVP候補をテーブルから除去するように構成されていてもよく、その候補の後のすべてのHMVP候補が移動される。
[0120]
ビデオエンコーダ200およびビデオデコーダ300は、マージ候補リスト構築プロセスにおいてHMVP候補を使用するように構成されていてもよい。例えば、ビデオエンコーダ200およびビデオデコーダ300は、TMVP候補の後に、最後のエントリから最初のエントリまですべてのHMVP候補をテーブル中に挿入するように構成されていてもよい。ビデオエンコーダ200およびビデオデコーダ300は、HMVP候補上で、余分な部分を取り除くことを適用するように構成されていてもよい。いったん、利用可能なマージ候補の総数が、許容されたマージ候補のシグナリングされたまたは予め定められた最大数に達すると、ビデオエンコーダ200およびビデオデコーダ300は、マージ候補リスト構築プロセスを終了するように構成されていてもよい。マージ候補リスト構築は、動きベクトル予測子リストを構築する1つの例である。
[0121]
同様に、ビデオエンコーダ200およびビデオデコーダ300は、AMVP候補リスト構築プロセスにおいて、HMVP候補を使用して、AMVP候補リストを構築するように構成されていてもよい。ビデオエンコーダ200およびビデオデコーダ300は、TMVP候補の後に、最後のK個のHMVP候補の動きベクトルをテーブル中に挿入するように構成されていてもよい。ビデオエンコーダ200およびビデオデコーダ300は、AMVPターゲット参照ピクチャーと同じ参照ピクチャーを持つHMVP候補のみを使用して、AMVP候補リストを構築するように構成されていてもよい。ビデオエンコーダ200およびビデオデコーダ300は、HMVP候補において余分な部分を取り除くことを適用するように構成されていてもよい。AMVP候補リスト構築は、動きベクトル予測子リストを構築する別の例である。
[0122]
以下では、非近接空間マージ候補を説明する。R.Yu氏らによる「CE4 2.1:非近接空間マージ候補の追加」ITU-T SG16WP3およびISO/IEC JTC1/SC29/WG11のジョイントビデオエキスパートチーム(JVET)、第11回会議:2018年7月10~18日、スロベニア、リュブリャナ(以下、「JVET-K0228」)において説明されている非近接空間マージ候補の構築は、2つの非近接隣接位置からの新たな空間候補の導出を含んでいる。例えば、図6中に示されているように、ビデオエンコーダ200およびビデオデコーダ300は、現在ブロック648の上の最も近い非近接ブロック650から、および/または、現在ブロック648の左にある最も近い非近接ブロック652から、新しい空間候補を導出してもよい。例えば、図6は、隣接ブロックA0、A1、B2、B1およびB0を有する現在ブロック648を図示している。いくつかの例では、非近接空間マージ候補は、現在ブロック648に空間的に隣接しない、図6のブロックHN652およびブロックVN650の動き情報を含んでいる。すなわち、図6は、HMVP候補履歴テーブルを構築するのに、その動きベクトル情報を使用してもよいブロックの例を図示している。
[0123]
ブロック650および652は、現在ブロック648まで1CTUの最大距離内に制限される。非近接候補のフェッチプロセスは、垂直方向に以前にデコードされたブロックをトレースすることにより開始する。垂直逆トレースは、インターブロックに遭遇したとき、または、トレースバック距離が1CTUサイズに達したときに停止する。
[0124]
その後、フェッチプロセスは、水平方向に、以前にデコードされたブロックをトレースする。水平フェッチプロセスを停止するための基準は、垂直非近接候補のフェッチに成功したか否かに依存する。垂直非近接候補がフェッチされない場合には、水平フェッチプロセスは、インターコード化されたブロックに遭遇したときに、または、トレースバック距離が1CTUサイズしきい値を超えるときに停止する。フェッチされた垂直非近接候補がある場合には、水平フェッチプロセスは、垂直非近接候補からの異なるMVを含むインターコード化されたブロックに遭遇したときに、または、トレースバック距離が1CTUサイズしきい値を超えるときに停止する。フェッチされた非近接隣接候補は、TMVP候補の前で、マージ候補リスト中に追加される。
[0125]
上記で説明したように、マージモードおよびAMVPモードに対して、ビデオエンコーダ200およびビデオデコーダ300は、動きベクトル予測子リストとも呼ばれる動きベクトル(MV)候補リストを構築してもよい。動きベクトル予測子リストは、空間的に隣接するブロック(例えば、現在ブロックに隣接し、現在ブロックと同じピクチャー中にあるブロック)、時間的に隣接するブロック(例えば、現在ブロックに隣接するが、現在ブロックとは異なるピクチャー中にあるブロック)の動きベクトル情報を含み、いくつかの例では、HMVP候補の動きベクトル情報(例えば、HMVP候補を形成する、以前にデコードされた動きベクトルに対するテーブルからのエントリ)を含んでいる。時間的に隣接するブロックは、コロケートされたブロックとも呼ばれる。
[0126]
したがって、動きベクトル予測子リストを構築するために、ビデオエンコーダ200およびビデオデコーダ300は、隣接ブロック(例えば、空間的および時間的に隣接するブロック)を評価して、隣接ブロックが動きベクトル情報を有するか否かを決定してもよい。(例えば、隣接ブロックがインターコード化されていることから)隣接ブロックが動きベクトル情報を有する場合には、ビデオエンコーダ200およびビデオデコーダ300は、隣接ブロックの動きベクトル情報を、動きベクトル予測子リスト中に含めてもよい。ビデオエンコーダ200およびビデオデコーダ300は、HMVP候補に対する最近エンコードまたはデコードされたブロックの動きベクトル情報の別個のテーブルを維持してもよい。
[0127]
ビデオエンコーダ200およびビデオデコーダ300が評価(例えば、検査)して、隣接ブロックが動きベクトル情報を有するか否かを決定することができる複数の隣接ブロックがあるかもしれない。ビデオエンコーダ200およびビデオデコーダ300が評価する必要があるかもしれない隣接ブロックの数を制限するために、以下では、空間および時間動きベクトル予測に対するいくつかの例示的な設計(例えば、空間的および時間的に隣接する評価されるブロックの例)を説明する。
[0128]
(いくつかの用語では、これはスキップモードまたは直接モードとして呼ばれることがある)マージモードのいくつかのインプリメンテーションでは、動きベクトル予測子リストを格納するために、空間および時間動きベクトル予測子(MVP)候補を、所定の順序で巡回(例えば、検査)することができる。空間MVP(SMVP)は、現在ブロックの動きベクトルに対する動きベクトル予測子として使用することができる空間的に隣接するブロックの動きベクトルであってもよい。時間MVP(TMVP)は、上記で説明したように、現在ブロックの動きベクトルに対する動きベクトル予測子として使用することができる時間的に隣接するブロック(例えば、コロケートされたブロック)に対する動きベクトルであってもよい。
[0129]
いくつかの技法では、SMVPおよびTMVPを決定するために、ビデオエンコーダ200およびビデオデコーダ300は、特定の順序で、隣接ブロック(例えば、空間的または時間的に隣接するブロック)を評価してもよい。ビデオエンコーダ200およびビデオデコーダ300が隣接ブロックを評価するかもしれない順序は、巡回順序としても呼ばれることがある。
[0130]
図7Aは、動きベクトル予測において使用される例示的な空間候補および時間候補を示す概念図である。図7Bは、空間候補に対する例示的な巡回順序を示す概念図である。図7Cは、空間候補に対する別の例示的な巡回順序を示す概念図である。
[0131]
図7Aは、MVP候補として利用される空間隣接の例を示している。図7Aでは、現在ブロック700の空間隣接(例えば、空間的に隣接するブロック)は、ブロックA 702、B 704、(C 706、A1 710A|B1 710B)、ブロックA0 714、ブロックB2 712を含んでいる。ビデオエンコーダ200およびビデオデコーダ300は、2ステージプロセスで隣接ブロックを評価してもよい。空間候補(例えば、空間的に隣接するブロック)が検査される順序(すなわち、0~5の数字でマークされている巡回順序)が、図7Bに示されている。
[0132]
図7Aのグループ1候補は以下のものを含んでいる。
a.ブロックA 702、B 704、(HEVC表記ではブロックB0 708とコロケートされている)C 706であり、網掛けで示されている。
b.ブロックA1 710AまたはB1 710B、ここで、ブロックA1 710AまたはブロックB1 710Bは、ブロックC 706中の動きベクトル予測子が利用可能であるか否かに依存して含まれる。
[0133]
グループ2候補は以下のものを含んでいる。
a.ブロックA0 714およびB2 712。
[0134]
図7Aでは、ブロックC 706はブロックB0 708とコロケートされている。例えば、ブロックC 706およびブロックB0 708は同じブロックであるかもしれないが、HEVCとVVCとの間の名称の変更に起因して、図7Aでは2つの異なる名前が与えられている。HEVC標準規格は、ブロック「B0」として、ブロックB0 708として示されているブロックを参照している。VVC標準規格は、ブロック「C」として、ブロックB0 708として示されているブロックを参照している。したがって、ブロックC 706は、ブロックB0 708とコロケートされ、現在ブロック700と同じピクチャー中にある。
[0135]
グループ1およびグループ2にしたがって評価することの例として、ビデオエンコーダ200およびビデオデコーダ300は、グループ1中のブロックを評価(例えば、検査)してもよい。ビデオエンコーダ200およびビデオデコーダ300は、ブロックA 702を評価し、ブロックA 702に対する動きベクトル情報があるか否かを決定してもよい。(例えば、ブロックA 702が動きベクトルでインターコード化されていることから)ブロックA 702に対する動きベクトル情報がある場合には、ビデオエンコーダ200およびビデオデコーダ300は、ブロックA 702の動きベクトル情報を動きベクトル予測子リストに追加してもよい。ブロックA 702が動きベクトル情報を有するか否かにかかわらず、ビデオエンコーダ200およびビデオデコーダ300は、ブロックB 704を評価し、ブロックB 704に対する動き情報があるか否かを決定してもよい。(例えば、ブロックB 704が動きベクトルでインターコード化されていることから)ブロックB 704に対する動きベクトル情報がある場合には、ビデオエンコーダ200およびビデオデコーダ300は、ブロックB 704の動きベクトル情報を動きベクトル予測子リストに追加してもよい。ブロックB 704が動きベクトル情報を有するか否かにかかわらず、ビデオエンコーダ200およびビデオデコーダ300は、ブロックC 706を評価し、ブロックC 706に対する動き情報があるか否かを決定してもよい。(例えば、ブロックC 706が動きベクトルでインターコード化されていることから)ブロックC 706に対する動きベクトル情報がある場合には、ビデオエンコーダ200およびビデオデコーダ300は、ブロックC 706の動きベクトル情報を動きベクトル予測子リストに追加してもよい。
[0136]
いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は、ブロックC 706に対する動きベクトル情報があったか否かに基づいて、ブロックA1 710AまたはブロックB1 710Bのうちの1つを評価してもよい。例えば、ブロックC 706に対する動きベクトル情報がある場合には、ビデオエンコーダ200およびビデオデコーダ300は、ブロックA1 710AまたはブロックB1 710Bのうちの一方(例えば、ブロックA1 710A)を評価してもよい。しかしながら、(例えば、ブロックC 706がイントラコード化されていることから)ブロックC 706に対する動きベクトル情報がない場合には、ビデオエンコーダ200およびビデオデコーダ300は、ブロックA1 710AまたはブロックB1 710Bのうちの他方(例えば、ブロックB1 710B)を評価してもよい。
[0137]
ブロックA1 710AまたはB1 710Bのうちの1つを評価した後、ビデオエンコーダ200およびビデオデコーダ300は、上記で説明したように、グループ2のブロック(例えば、ブロックB2 712およびA0 714)を評価し、動きベクトル情報を動きベクトル予測子リストに追加してもよい。ビデオエンコーダ200およびビデオデコーダ300は、その後、時間隣接(例えば、時間的に隣接するブロックまたはコロケートされたブロック)を評価してもよい。
[0138]
図7Aでは、現在ブロック700の時間隣接(例えば、時間的に隣接するブロック)は、ブロックCO 716とブロック718のうちの1つ以上とを含んでいる。図7A中に示されているように、MVP候補として利用される時間的にコロケートされた隣接は、現在ブロックの中央においてコロケートされたブロック(ブロックCO 716としてマークされている)からと、現在ブロックの外側の最も右下のロケーションにおける(破線の輪郭を有する)ブロック718Aからのものである。ブロックCO 716およびブロック718は、現在ブロック700を含む現在ピクチャーとは異なる参照ピクチャーであってもよい。(破線の輪郭で示されている)グループ3候補ブロックは、以下のものを含んでいる。
a.ブロックCO 716、H 718A
b.Hロケーション(例えば、ブロックH 718A)がコロケートされたピクチャーの外側にあることが判明した場合には、1つ以上のフォールバックH位置(例えば、ブロックH 718B~718D)を代わりに使用することができる。
[0139]
例えば、ビデオエンコーダ200およびビデオデコーダ300は、ブロックCO 716を評価して、ブロックCO 716に対する動きベクトル情報があるか否かを決定し、利用可能な場合には、ブロックCO 716に対する動きベクトル情報を動きベクトル予測子リストに追加してもよい。同様に、ビデオエンコーダ200およびビデオデコーダ300は、ブロックH 718Aを評価して、ブロックH 718Aに対する動きベクトル情報があるか否かを決定し、利用可能な場合には、ブロックH 718Aに対する動きベクトル情報を動きベクトル予測子リストに追加してもよい。(例えば、ピクチャーの外側にあるので)ブロックH 718Aが利用可能でない場合には、ビデオエンコーダ200およびビデオデコーダ300は、ブロックH 718B~718Dのうちの1つを評価してもよい。
[0140]
動きベクトル予測子リストのサイズは固定されているかもしれない(すなわち、動きベクトル予測子リスト中に固定数のエントリがあるかもしれない)。したがって、ビデオエンコーダ200およびビデオデコーダ300は、隣接ブロックを評価(例えば、検査)して、動きベクトル予測子リストの最大サイズに達していない限り、動きベクトル情報を隣接ブロックの動きベクトル予測子リストに追加してもよい。また、時間的に隣接する(例えば、コロケートされた)ブロックCO 716とブロックH 718A~718Dのうちの1つとを評価した後に、動きベクトル予測子リストのサイズに達していない場合には、ビデオエンコーダ200およびビデオデコーダ300は、HMVP候補を動きベクトル予測子リストに、または、人工動きベクトル候補を動きベクトル予測子リストに追加してもよい。
[0141]
上記で説明したように、ビデオエンコーダ200およびビデオデコーダ300が隣接ブロックを評価する順序があるかもしれない。図7Bは、例示的な順序を図示している。例えば、図7Bでは、「0」はブロックA 702を指しており、ビデオエンコーダ200およびビデオデコーダ300が評価するかもしれない第1のブロックである。「1」はブロックB 704を指しており、ビデオエンコーダ200およびビデオデコーダ300が評価するかもしれない第2のブロックであり、以下同様である。
[0142]
図7Bでは、「3」はブロックA1 710AおよびB1 710Bを指している。これは、ビデオエンコーダ200およびビデオデコーダ300が、(「2」として識別されている)ブロックC 706に対する動きベクトル情報があるか否かに基づいて、ブロックA1 710AまたはB1 710Bのうちの1つを評価してもよいことを示すためのものである。
[0143]
いくつかの例示的なインプリメンテーションでは、使用されるブロック区分およびコーディング順序に依存して、図7C中に示されているように、逆空間MVP候補順序を使用することができ、検査順序は0~5から進む。例えば、図7Aおよび図7Bと一致して、ビデオエンコーダ200およびビデオデコーダ300は、それぞれ、ピクチャー中のブロックに対して、左から右および上から下のコーディング順序を使用してエンコードまたはデコードする場合には、現在ブロック700がエンコードまたはデコードされる前に、ブロックA 702、B 704、C 706、A1 710A、B1 701B、B2 712、A0 714が、エンコードまたはデコードされることになる。現在ブロック700がエンコードまたはデコードされる前に、ブロックA 702、B 704、C 706、A1 710A、B1 701B、B2 712、A0 714が、エンコードまたはデコードされることになるので、現在ブロック700をエンコードまたはデコードすることに対して、ビデオエンコーダ200およびビデオデコーダ300は、ブロックA 702、B 704、C 706、A1 710A、B1 701B、B2 712、A0 714に対する動きベクトル情報を評価できるかもしれない。例えば、左から右および上から下のコーディング順序で現在ブロック700の前にブロックA 702がエンコードまたはデコードされていることから、ブロックA 702がインターコード化されている場合には、ビデオエンコーダ200およびビデオデコーダ300は、ブロックA 702に対する動きベクトル情報にアクセスすることができるかもしれない。
[0144]
しかしながら、いくつかの例では、コーディング順序は左から右および上から下ではないかもしれない。むしろ、コーディング順序は、右から左および上から下であってもよい。このような例では、図7Aおよび図7B中に図示されている隣接ブロックのうちのいくつかは、現在ブロック700の前にエンコードまたはデコードされていないかもしれない。したがって、隣接ブロックがインターコード化されることになっている場合であっても、図7Aおよび図7B中の隣接ブロックのうちのいくつかは右から左へのコーディング順序でエンコードまたはデコードされていないので、隣接ブロックに対する動きベクトル情報はまだ利用可能ではない。
[0145]
図7Cは、評価されるべき空間的に隣接するブロックの例と、ピクチャー中のブロックの右から左および上から下のコーディング順序で、空間的に隣接するブロックが評価されるであろう順序とを図示している。例えば、図7Cでは、ビデオエンコーダ200およびビデオデコーダ300は、ブロック720、722、724、ブロック726Aまたは726Bのうちの1つ、728、730を評価してもよい。例えば、ビデオエンコーダ200およびビデオデコーダ300は、評価を開始して、(「0」として識別されている)ブロック720から開始し、(「1」として識別されている)ブロック722が続き、その後、(「2」として識別されている)ブロック724が続き、動きベクトル情報があるか否かを決定してもよい。
[0146]
図7Aおよび図7BのブロックA1 710AおよびB1 710Bと同様に、図7Cでは、ビデオエンコーダ200およびビデオデコーダ300は、ブロック724に対する動きベクトル情報があるか否かに基づいて(例えば、ブロック724がインターコード化されているか否かに基づいて)、(両方とも「3」として識別されている)ブロック724Aまたは724Bのうちの1つを評価してもよい。図示されているように、ブロック726Aまたは726Bのうちの1つの後、ビデオエンコーダ200およびビデオデコーダ300は、ブロック728を評価し、その後、ブロック730を評価してもよい。
[0147]
上記では、ビデオエンコーダ200およびビデオデコーダ300が隣接ブロックを評価して、動きベクトル予測子リスト中に含まれるべき動きベクトル情報があるか否かを決定してもよい例示的な順序を説明した。いくつかの例では、1つずつ評価するのではなく、ビデオエンコーダ200およびビデオデコーダ300が、複数の隣接ブロックを並列に評価することができるかもしれない。このような例では、ビデオエンコーダ200およびビデオデコーダ300は、図7A~図7C中で図示されている順序で、動きベクトル情報を動きベクトル予測子リスト中に順序付けてもよい。
[0148]
例として、ビデオエンコーダ200およびビデオデコーダ300は、次々にではなく、並列にブロックA 702およびブロックB 704を評価してもよい。この例では、ブロックA 702とブロックB 704の両方が動きベクトル情報を有する場合には、ビデオエンコーダ200およびビデオデコーダ300は、ブロックA 702が評価順序でブロックB 704の前にあるので、ブロックA 702に対する動きベクトル情報がブロックB 704に対する動きベクトル情報の前にあるように、動きベクトル予測子リストを構築してもよい。
[0149]
しかしながら、図7A~図7Cに示された例では、動きベクトル情報を並列に評価することに制限があるかもしれず、これは計算効率に影響を及ぼすことがある。例えば、ブロックA1 710AまたはブロックB1 710Bが評価されるべきか否かは、ブロックC 706に対する動きベクトル情報があるか否かに基づいている。このような例では、ビデオエンコーダ200およびビデオデコーダ300は、連続的に、ブロックC 706を評価し、ブロックC 706を評価した結果に基づいて(例えば、ブロックC 706に対する動きベクトル情報があるか否かに基づいて)、その後、ブロックA1 710AまたはブロックB1 710Bのうちの1つを評価してもよい。図7Cでは、並列評価ではなく、ビデオエンコーダ200およびビデオデコーダ300は、連続的に、ブロック724を評価し、ブロック724を評価した結果に基づいて(例えば、ブロック724に対する動きベクトル情報があるか否かに基づいて)、その後、ブロック726Aまたはブロック726Bのうちの1つを評価してもよい。
[0150]
同様に、ビデオエンコーダ200およびビデオデコーダ300がブロックH 718B~718Dのうちの1つを評価するか否かは、ブロック718Aが利用可能である(例えば、ピクチャー外ではない)か否かに基づいていてもよい。時間的に隣接するブロックは図7Cに示されていないが、図7A中のブロックH 718A~718Dに対して適用されるのと同じことを時間的に隣接するブロックに適用することができる。
[0151]
別の言い方をすると、図7A~図7C中において説明しているパターンのような、MVP候補設計は、図7A中に示されているHの候補(例えば、ブロックH 718A~ブロックH 718D)のグループから選択されるような、あるMVP候補の利用可能性に基づいて(例えば、(C候補利用可能性とも呼ばれる)ブロックC 706に対する動きベクトル情報の利用可能性に基づいて)、ブロック区分タイプに基づいて、または、MVP候補の空間位置に基づいて、条件付きMVPフェッチング(A1|B1)(例えば、ブロックA1 710AまたはブロックB1 710Bのいずれか)を使用する。このような条件付きフェッチングは、計算複雑性を増加させ、MVPのあるインプリメンテーションに対する並列化またはメモリ制約に影響を及ぼすかもしれない。
[0152]
いくつかの例では、多数の依存関係および条件を必要とするかもしれない、動きベクトル予測子リストを構築することは、特に、小さいブロックサイズ、例えば、4×4またはN<=8である4xNに対して、著しい相対的な(ピクセル毎の)複雑さを導入するかもしれない。より小さいサイズのブロックに対して、空間的に隣接するブロックに対する動きベクトル情報にそれほど多くの多様性はないかもしれない。例えば、現在ブロックに対する左隣接ブロックおよび上隣接ブロックは、より大きいサイズのブロックよりも、より小さいサイズのブロックに対して、互いにより近接しているかもしれない。例示として、図7Aでは、現在ブロック700が大きいほど、ブロックA 702およびブロックB0 708は互いから遠く離れ、現在ブロック700が小さいほど、ブロックA 702およびブロックB0 708は互いに近くなる。
[0153]
互いにより近い2つのブロックは、類似する動きベクトル情報を有する傾向がある。したがって、より小さいサイズのブロックに対しては、より大きいサイズのブロックに対する空間的に隣接するブロックと比較して、空間的に隣接するブロックが類似する動きベクトル情報を有している高い確率がある。空間的に隣接するブロックが類似する動きベクトル情報を有する高い確率があることから、比較的大きなサイズの動きベクトル予測子リストを有することは、動きベクトル情報において多様性を提供しないかもしれない。言い換えれば、より小さいサイズのブロックに対して、比較的大きいサイズの動きベクトル予測子リストを有することは、多くの動きベクトル予測子候補を提供するかもしれないが、動きベクトル情報中の多様性は大きくないかもしれない。しかしながら、より大きいサイズのブロックに対して、比較的大きい動きベクトル予測子リストを有することは、多様性のある動きベクトル情報を提供するかもしれず、実際の動きベクトルに比較的近い値を有する動きベクトル予測子候補を含めることが可能になる。
[0154]
したがって、すべてのサイズのブロックに対して同じサイズの動きベクトル予測子リストを有することは望ましくないかもしれない。小さいサイズのブロックに対して、大きいサイズのブロックの動きベクトル予測子リストと同じサイズである動きベクトル予測子リストを有することは、動きベクトル情報における多様性の欠如のために、複数の動きベクトル予測子候補を有することからのコーディング利得を達成することなく、ビデオエンコーダ200およびビデオデコーダ300が、動きベクトル予測子リストを埋めるために、複数の動作を実行する必要があることを意味する。したがって、より小さいサイズのブロックに対して、より小さいサイズの動きベクトル予測子リストが有益かもしれない。しかしながら、より大きいサイズのブロックに対して、比較的小さいサイズの動きベクトル予測子リストを有することは、動きベクトル予測子リストのサイズが小さいことに起因して、多様な動きベクトル予測子候補が動きベクトル予測子リストから除外されているかもしれないことから、不利益であるかもしれない。
[0155]
これらの欠点に鑑みて、本開示は、時空間動きベクトル予測子リスト構築を実行するための以下の技法を説明する。例示的な技法は、別々にまたは組み合わせて適用してもよい。また、例示的な技法は、上記で説明した問題に対処するかもしれない。しかしながら、例示的な技法は、上記で説明した問題に対処することに限定されるものとして見なされるべきではない。
[0156]
1つの例では、本開示は、空間および時間MVP候補が発生されるパターンを決定する技法を説明する。ビデオエンコーダ200およびビデオデコーダ300は、時空間隣接候補からの以下の動きベクトル予測子リスト構築プロセスを用いてもよい。動きベクトル予測子リストにおける候補の配置の優先度は、図8A中に示されているように、0...7からの数字によりマークされている。
[0157]
最初に、ビデオエンコーダ200およびビデオデコーダ300は、図8Aにおいて実線ブロックで示されている順序0...4で、空間MVP候補を巡回する(すなわち、動き情報の利用可能性を検査する)。例えば、ビデオエンコーダ200およびビデオデコーダ300は、ブロック0 802、ブロック1 804、ブロック2 806、ブロック3 808、ブロック4 810に対して、動きベクトル情報が利用可能であるか否かを決定してもよい。
[0158]
次に、ビデオエンコーダ200およびビデオデコーダ300は、破線ブロックとして示されている時間的にコロケートされた位置(5、6および7)からの動きベクトル予測子候補を巡回する(すなわち、動き情報の利用可能性を検査する)。例えば、ビデオエンコーダ200およびビデオデコーダ300は、中央コロケートされたブロック5 812とも呼ばれるブロック5 812、または、下コロケートされたブロック6 814とも呼ばれるブロック6 814(下コロケートされたブロック6 814は、図8Aの現在ブロック800の下にあり、図8Aの現在ブロック800の右に最も近いものであってもよい)、または、右コロケートされたブロック7 816とも呼ばれるブロック7 816(右コロケートされたブロック7 816は、図8Bの現在ブロック800の右にあり、図8Bの現在ブロック800の下に最も近いものであってもよい)に対して、動きベクトル情報が利用可能であるか否かを決定してもよい。
[0159]
図8Aは、本開示の1つの例による、例示的な時空間動きベクトル予測子パターンを示す概念図である。図8Bは、本開示の1つの例による、例示的な逆時空間動きベクトル予測子パターンを示す概念図である。図8Cは、本開示の1つの例による、別の例示的な逆時空間動きベクトル予測子パターンを示す概念図である。図8A~図8Cは、(例えば、破線ブロックにより示されているような)時間的にコロケートされたブロックに対する、(例えば、ブロック中の数字により示されているような)異なる検査順序とともに、異なるロケーションを示している。
[0160]
コーディングモード、区分のタイプ、および/または、コーディング方向、特に逆走査順序処理を伴うコーディングモードに依存して、図8B中に示されているように、空間的に反転された(または、ミラーリングされた)パターンを用いることができる。いくつかの例では、図8A中に示されているパターンの一部を反転することができ、例えば、空間位置のみを反転し、時間候補ロケーションは同じままにする。さらに別の例では、MVP候補のパターン(例えば、相対ロケーション)は同じままであってもよい。しかしながら、巡回順序は、図8C中に示されているように、ある軸(例えば、対角軸)に沿って空間的に反転(ミラーリング)されていてもよい。
[0161]
1つ以上の例では、ビデオエンコーダ200およびビデオデコーダ300はそれぞれ、現在ブロック800を含むピクチャーのコーディング順序に基づいて、動きベクトル予測子リストを構築してもよい。コーディング順序の1つの例は、左から右へのコーディング順序であり、このケースでは、ビデオエンコーダ200およびビデオデコーダ300は、現在ピクチャーの左上角から開始して、現在ピクチャーの右端に達するまで、そして左上角の下のブロックが続き、右下に位置しているブロックに達するまで同様に、ブロック毎にエンコードまたはデコードする。コーディング順序の別の例は、右から左へのコーディング順序であり、このケースでは、ビデオエンコーダ200およびビデオデコーダ300は、現在ピクチャーの右上角から開始して、現在ピクチャーの左端に達するまで、そして右上角の下のブロックが続き、左下に位置しているブロックに達するまで同様に、ブロック毎にエンコードまたはデコードすることができる。
[0162]
コーディング順序は、空間的に隣接するどのブロックが検査のために利用可能であるかに影響を及ぼすかもしれない。例えば、以前にエンコードまたはデコードされているブロックのみの動きベクトル情報が利用可能かもしれない。したがって、ブロックがまだエンコードまたはデコードされていない場合には、そのブロックに対する動きベクトル情報はまだ利用可能ではないかもしれない。エンコーディング順序は、ブロックがエンコードまたはデコードされる順序を規定するので、空間的に隣接するブロックの動きベクトル情報を決定することができるか否かは、コーディング順序に基づいている。
[0163]
例として、図8Aでは、左から右へのコーディング順序に対して、ブロック0 802の動きベクトル情報は、現在ブロック800をエンコードまたはデコードするときには利用可能であるかもしれない。しかしながら、現在ブロック800の右隣接ブロックの動きベクトル情報は利用可能でないかもしれない。図8Bでは、右から左へのコーディング順序に対して、ブロック0 818の動きベクトル情報は、現在ブロック800をエンコードまたはデコードするときには利用可能であるかもしれない。しかしながら、現在ブロック800の左隣接ブロックの動きベクトル情報は利用可能でないかもしれない。
[0164]
1つ以上の例では、左から右へのコーディング順序を有する第1のピクチャー中の第1のブロックに対して、ビデオエンコーダ200およびビデオデコーダ300は、第1の動きベクトル予測子リストを構築してもよい。図8A中に示されているように、第1の動きベクトル予測子リスト中の第1のエントリは、第1のブロック(例えば、ブロック0 802)に対する左隣接ブロックの動きベクトル情報に基づいている。第1のブロックに対する左隣接ブロックは、第1のブロックの下境界と同じ下境界を有する第1のブロックの左のブロックであってもよい。左から右へのコーディング順序を有する第2のピクチャー中の第2のブロックに対して、ビデオエンコーダ200およびビデオデコーダ300は、第2の動きベクトル予測子リストを構築してもよい。図8Bに示されているように、第2の動きベクトル予測子リスト中の第1のエントリは、第2のブロック(例えば、ブロック0 818)に対する右隣接ブロックの動きベクトル情報に基づいている。第2のブロックに対する右隣接ブロックは、第2のブロックの下境界と同じ下境界を有する第2のブロックの右のブロックであってもよい。
[0165]
図示されているように、ブロック0 802は、図8Aの現在ブロック800の左にある。いくつかの例では、ブロック0 802は、ブロック0 802の下境界が図8Aの現在ブロック800の下境界と同じであるように、図8Aの現在ブロック800の左に位置していてもよい。図示されているように、ブロック0 818は、図8Bの現在ブロック800の右にある。いくつかの例では、ブロック0 818は、ブロック0 818の下境界が図8Bの現在ブロック800の下境界と同じであるように、図8Bの現在ブロック800の右に位置していてもよい。
[0166]
第1の動きベクトル予測子リストに対して、第1の動きベクトル予測子リスト中のエントリは以下の通りであってもよい:第1のエントリは左隣接ブロック0 802であり、第2のエントリは上隣接ブロック1 804であり、第3のエントリは右上隣接ブロック2 806であり、第4のエントリは左下隣接ブロック3 808であり、第5のエントリは左上隣接ブロック4 810である。いくつかの例では、上隣接ブロック1 804は、図8Aの現在ブロック800の上であり、図8Aの現在ブロック800と右境界を共有していてもよい。
[0167]
第2の動きベクトル予測子リストに対して、第2の動きベクトル予測子リスト中のエントリは以下の通りであってもよい:第1のエントリは右隣接ブロック0 818であり、第2のエントリは上隣接ブロック1 820であり、第3のエントリは左上隣接ブロック2 822であり、第4のエントリは右下隣接ブロック3 824であり、第5のエントリは右上隣接ブロック4 826である。いくつかの例では、上隣接ブロック1 820は、図8Bの現在ブロック800の上であり、図8Bの現在ブロック800と左境界を共有していてもよい。
[0168]
いくつかの例では、空間的に隣接するブロックを検査した後、ビデオエンコーダ200およびビデオデコーダ300は、コロケートされたブロックを検査してもよい。1つの例では、ビデオエンコーダ200およびビデオデコーダ300は、中央コロケートされたブロック5 812を検査してもよい。中央コロケートされたブロック5 812に対する動きベクトル情報が利用可能である場合には、ビデオエンコーダ200およびビデオデコーダ300は、動きベクトル情報を動きベクトル予測子リストに追加し、他の何らかのコロケートされたブロックからの動きベクトル情報を追加しないかもしれない。
[0169]
中央コロケートされたブロック5 812に対する動きベクトル情報が利用可能でない場合には、ビデオエンコーダ200およびビデオデコーダ300は、下コロケートされたブロック6 814を検査してもよい。下コロケートされたブロック6 814に対する動きベクトル情報が利用可能である場合には、ビデオエンコーダ200およびビデオデコーダ300は、動きベクトル情報を動きベクトル予測子リストに追加し、他の何らかのコロケートされたブロックからの動きベクトル情報を追加しないかもしれない。図示されているように、下コロケートされたブロック6 814は、現在ブロック800の下にあり、現在ブロック800の右に最も近いブロックであってもよい(例えば、ブロック6 814は図8Aの現在ブロック800の下にあり、ブロック6 814の右境界は図8Aの現在ブロック800の右境界と同じである)。ブロック6 814に対する座標は(xColBot、yColBot)であってもよく、ここで、xColBot=xCb+cbWidth-1、yColBot=yCb+cbHeightであり、ここで、(xCb、yCb)は図8Aの現在ブロック800に対する座標であり、cbWidthは図8Aの現在ブロック800の幅であり、cbHeightは図8Aの現在ブロック800の高さである。
[0170]
下コロケートされたブロック6 814に対する動きベクトル情報が利用可能でない場合には、ビデオエンコーダ200およびビデオデコーダ300は、右コロケートされたブロック7 816を検査してもよい。右コロケートされたブロック7 816に対する動きベクトル情報が利用可能である場合には、ビデオエンコーダ200およびビデオデコーダ300は、動きベクトル情報を動きベクトル予測子リストに追加し、他の何らかのコロケートされたブロックからの動きベクトル情報を追加しないかもしれない。図示されているように、右コロケートされたブロック7 816は、図8Aの現在ブロック800の右にあり、図8Aの現在ブロック800の下に最も近いブロックであってもよい(例えば、ブロック7 816は図8Aの現在ブロック800の右であり、ブロック7 816の下境界は図8Aの現在ブロック800の下境界と同じである)。ブロック7 816に対する座標は(xColBr、yColBr)であってもよく、ここで、xColBr=xCb+cbWidth、yColBr=yCb+cbHeight-1であり、ここで、(xCb、yCb)は図8Aの現在ブロック800に対する座標であり、cbWidthは図8Aの現在ブロック800の幅であり、cbHeightは図8Aの現在ブロック800の高さである。
[0171]
別の例では、ビデオエンコーダ200およびビデオデコーダ300は、中央コロケートされたブロック5 828を検査してもよい。中央コロケートされたブロック5 828に対する動きベクトル情報が利用可能である場合には、ビデオエンコーダ200およびビデオデコーダ300は、動きベクトル情報を動きベクトル予測子リストに追加し、他の何らかのコロケートされたブロックからの動きベクトル情報を追加しないかもしれない。
[0172]
中央コロケートされたブロック5 828に対する動きベクトル情報が利用可能でない場合には、ビデオエンコーダ200およびビデオデコーダ300は、下コロケートされたブロック6 830を検査してもよい。下コロケートされたブロック6 830に対する動きベクトル情報が利用可能である場合には、ビデオエンコーダ200およびビデオデコーダ300は、動きベクトル情報を動きベクトル予測子リストに追加し、他の何らかのコロケートされたブロックからの動きベクトル情報を追加しないかもしれない。図示されているように、下コロケートされたブロック6 830は、現在ブロック800の下にあり、現在ブロック800の左に最も近いブロックであってもよい(例えば、ブロック6 830は図8Bの現在ブロック800の下にあり、ブロック6 830の左境界は図8Bの現在ブロック800の左境界と同じである)。ブロック6 830に対する座標は(xColBot、yColBot)であってもよく、ここで、xColBot=xCb、yColBot=yCb+cbHeightであり、ここで、(xCb、yCb)は図8Bの現在ブロック800に対する座標であり、cbWidthは図8Bの現在ブロック800の幅であり、cbHeightは図8Bの現在ブロック800の高さである。
[0173]
下コロケートされたブロック6 830に対する動きベクトル情報が利用可能でない場合には、ビデオエンコーダ200およびビデオデコーダ300は、左コロケートされたブロック7 832を検査してもよい。左コロケートされたブロック7 832に対する動きベクトル情報が利用可能である場合には、ビデオエンコーダ200およびビデオデコーダ300は、動きベクトル情報を動きベクトル予測子リストに追加し、他の何らかのコロケートされたブロックからの動きベクトル情報を追加しないかもしれない。図示されているように、左コロケートされたブロック7 832は、図8Bの現在ブロック800の左にあり、図8Bの現在ブロック800の下に最も近いブロックであってもよい(例えば、ブロック7 832は図8Bの現在ブロック800の左にあり、ブロック7 832の下境界は図8Bの現在ブロック800の下境界と同じである)。ブロック7 832に対する座標は、(xColBr、yColBr)であってもよく、ここで、xColBr=xCb-1、yColBr=yCb+cbHeight-1であってもよく、ここで、(xCb、yCb)は図8Bの現在ブロック800に対する座標であり、cbWidthは図8Bの現在ブロック800の幅であり、cbHeightは図8Bの現在ブロック800の高さである。
[0174]
図8Aおよび図8Bにおける空間的に隣接するブロックおよびコロケートされたブロックの位置は1つの例であり、限定するものと見なされるべきではないことを理解されたい。例えば、ブロック802は、図8Aの現在ブロック800の左に一般的に位置していてもよく、ブロック818は、図8Bの現在ブロック800の右に一般的に位置していてもよい。同じことが、他の空間的およびコロケートされたブロックにも適用される。
[0175]
上記の例は、ビデオエンコーダ200およびビデオデコーダ300が動きベクトル情報を動きベクトル予測子リスト中に順序付ける例示的な方法を説明している。いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は、動きベクトル情報を、利用可能な場合には、特定の順序で、動きベクトル予測子リスト中で順序付けるが、ビデオエンコーダ200およびビデオデコーダ300は、隣接ブロック(例えば、図8Aおよび図8B中の空間的に隣接するブロック0...4)の動きベクトル情報に並列にアクセスするように構成されていてもよい。言い換えれば、ビデオエンコーダ200およびビデオデコーダ300は、動きベクトル予測子リストを構築するのに使用される複数の(例えば、すべての)空間的に隣接するブロックに対する動きベクトル情報を並列に検査してもよい。
[0176]
例えば、本開示は、動きベクトル予測子候補を動きベクトル予測子リスト中に含めるための技法を説明している。動きベクトル予測子リスト構築の以下のプロセスを説明する。ビデオエンコーダ200およびビデオデコーダ300は、無条件順序で、他の動きベクトル予測子候補の利用可能性とは無関係に、動きベクトル予測子候補位置(例えば、すべての空間的に隣接するブロック)を検査してもよい。したがって、動きベクトル予測子候補検査は、並列に実行することができる。
[0177]
ビデオエンコーダ200およびビデオデコーダ300は、隣接ブロックの位置がピクチャー境界内にある場合には、隣接ブロックを検査してもよい。また、ビデオエンコーダ200およびビデオデコーダ300は、隣接ブロックが既にエンコードまたはデコードされている位置にある隣接ブロックを検査してもよい。さらに、ビデオエンコーダ200およびビデオデコーダ300は、隣接ブロックに対して動きベクトル情報が利用可能であるか否かを決定してもよい。上記の例示的な条件が満たされる場合には、ビデオエンコーダ200およびビデオデコーダ300は、隣接ブロックの動きベクトル情報を、動きベクトル予測子リスト中に含めてもよい。
[0178]
上記で説明したように、動きベクトル予測子リストの最大サイズがあるかもしれない。例えば、動きベクトル予測子リストの有効サイズが、例えば、動きベクトル予測子リストの最大サイズを規定するMAX_MVP_LIST_SIZEにより特定される特定の上側境界値に達するまで、フェッチされた動きベクトル予測子候補が動きベクトル予測子リスト中に含められるかもしれない。いくつかの例では、MAX_MVP_LIST_SIZEの値は6に等しくすることができる。
[0179]
しかしながら、上記で説明したように、ブロックサイズを考慮せずにすべてのブロックに対して同じ最大サイズのリストを有することは、十分な候補を構築することが不必要に複雑である、または、十分な候補を含まない、動きベクトル予測子リストをもたらすかもしれない。例えば、上記で説明したように、より小さいサイズのブロックに対して、追加候補は多くのコーディング利得を提供しないかもしれないことから、計算サイクルを低減させるためには、より小さいサイズの動きベクトル予測子リストを有することが有益かもしれない。しかしながら、より大きいサイズのブロックに対して、動きベクトル情報中の良好な多様性を確実にするために、より大きなサイズの動きベクトル予測子リストを有することが有益かもしれない。
[0180]
1つの例では、ビデオエンコーダ200およびビデオデコーダ300は、現在のコード化ブロックサイズに依存して、構築される動きベクトル予測子リストの最大有効サイズを決定および/または制限するように構成されていてもよい。いくつかの例では、N<=8である、4×NまたはN×4のピクセル数を含んでいるブロックに対して、有効MVPリストサイズは、SMAL_BLOCK_MAX_MVP_LIST<MAX_MVP_LIST_SIZEと等しくなるように設定される。変数SMAL_BLOCK_MAX_MVP_LISTは、より小さいサイズのブロックに対する動きベクトル予測子リストの最大サイズを規定し、ここで、より小さいサイズのブロックは、Nは8である、4xNまたはNx4以下のサンプルを有するブロックであってもよい。
[0181]
現在ブロックが小さいサイズのブロックであるか否かを示すために、ビデオエンコーダ200および/またはビデオデコーダ300は、smallBlockFlag(例えば、ブロックが小さいか否かを示すバイナリ値)を決定してもよい。smallBlockFlagを決定する式は、smallBlockFlag=(cuw*cuh<SMALL_BLOCK_SIZE);SMALL_BLOCK_SIZE=32であってもよく、ここで、cuwは現在ブロックの幅であり、cuhは現在ブロックの高さである。
[0182]
いくつかの例では、小さいブロックサイズSMALL_BLOCK_SIZEの基準は、16ピクセルに等しくなるように規定することができる。したがって、小さいブロックサイズに対する32という例は1つの例にすぎず、小さいブロックサイズに対して、32および16以外の値が、本開示により企図されている。
[0183]
いくつかの例では、MAX_MVP_LIST_SIZEの値は4に等しくすることができる。すなわち、小さいサイズのブロックに対して、動きベクトル予測子リストの最大サイズは4であってもよい。いくつかの例では、小さいブロックサイズの基準は、ブロックエッジ長の値を通して表現することができる。
smallBlockFlag=((max(cuw、cuh)<=8&&min(cuw、cuh)<8))
もし(smallBlockFlag)、
SMAL_BLOCK_MAX_MVP_LISTを使用し、
そうでなければ、
MAX_MVP_LIST_SIZEを使用する。
[0184]
別の例では、本開示は、動きベクトル予測子候補リストパラメータのシグナリングに対する技法を説明している。例えば、最大可能動きベクトル予測子リストサイズ(MAX_MVP_LIST_SIZE)は、サイド情報(例えば、ビデオエンコーダ200からシグナリングされる情報)として、デコーダ側(例えば、ビデオデコーダ300)において特定することができる。
[0185]
いくつかの例では、現在のコーディング条件に対して、例えば、現在のシーケンス、ピクチャー、スライス、または、CUのグループに対して、アプリケーションにより有効に使用される最大動きベクトル予測子リストサイズ(例えば、MAX_MVP_LIST_SIZEおよび/またはSMAL_BLOCK_MAX_MVP_LIST)は、例えば、シーケンス/ピクチャー/スライスヘッダまたは他のレベルにおいて、ビットストリームのシンタックス要素によりシグナリングされるかもしれない。
[0186]
いくつかの例では、ブロックサイズ依存のパラメータ、例えば、SMALL_BLOCK_SIZEは、サイド情報としてデコーダ側において特定される。別の例では、このパラメータは、ビットストリームを通してシグナリングされてもよい。
[0187]
図2は、本開示の技法を実行してもよい、例示的なビデオエンコーダ200を図示するブロック図である。図2は、説明の目的のために提供されており、本開示において広く例示し説明しているような技法の限定と見なすべきではない。説明の目的のために、本開示は、開発中のHEVCビデオコーディング標準規格およびH.266/VVCビデオコーディング標準規格のような、ビデオコーディング標準規格のコンテキストで、ビデオエンコーダ200を説明する。しかしながら、本開示の技法は、これらのビデオコーディング標準規格には限定されず、一般的に、ビデオエンコーディングおよびデコーディングに適用可能である。
[0188]
図2の例では、ビデオエンコーダ200は、ビデオデータメモリ230と、モード選択ユニット202と、残差発生ユニット204と、変換処理ユニット206と、量子化ユニット208と、逆量子化ユニット210と、逆変換処理ユニット212と、再構築ユニット214と、フィルタユニット216と、デコードピクチャーバッファ(DBP)218と、エントロピーエンコーディングユニット220とを含んでいる。
[0189]
ビデオデータメモリ230は、ビデオエンコーダ200のコンポーネントによってエンコードされるべきビデオデータを記憶していてもよい。ビデオエンコーダ200は、例えば、ビデオソース104(図1)からのビデオデータメモリ230中に記憶されているビデオデータを受け取ってもよい。DPB218は、ビデオエンコーダ200による後続のビデオデータの予測において使用するための参照ビデオデータを記憶する参照ピクチャーメモリとして機能してもよい。ビデオデータメモリ230およびDPB218は、同期ダイナミックランダムアクセスメモリ(DRAM)(SDRAM)を含むDRAM、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM(登録商標))、または、他のタイプのメモリデバイスのような、さまざまなメモリデバイスのうちのいずれかによって形成されていてもよい。ビデオデータメモリ230およびDPB218は、同じメモリデバイスまたは別個のメモリデバイスによって提供されていてもよい。さまざまな例では、ビデオデータメモリ230は、図示するように、ビデオエンコーダ200の他のコンポーネントとともにオンチップであってもよく、または、これらのコンポーネントに対してオフチップであってもよい。
[0190]
本開示では、ビデオデータメモリ230への参照は、そのように具体的に説明されない限り、ビデオエンコーダ200に対して内部であるメモリ、または、そのように具体的に説明されない限り、ビデオエンコーダ200に対して外部であるメモリに限定されるものとして解釈すべきではない。むしろ、ビデオデータメモリ230への参照は、ビデオエンコーダ200がエンコードするために受け取るビデオデータ(例えば、エンコードされるべき現在ブロックに対するビデオデータ)を記憶するメモリとして理解すべきである。図1のメモリ106はまた、ビデオエンコーダ200のさまざまなユニットからの出力の一時記憶装置を提供してもよい。
[0191]
図2のさまざまなユニットは、ビデオエンコーダ200によって実行される動作の理解を助けるために示されている。ユニットは、固定機能回路、プログラマブル回路、または、これらの組み合わせとして実現してもよい。固定機能回路は、特定の機能性を提供する回路を指し、実行できる動作に対して予め設定される。プログラマブル回路は、さまざまなタスクを実行するようにプログラムでき、実行できる動作において柔軟な機能性を提供できる回路を指している。例えば、プログラマブル回路は、ソフトウェアまたはファームウェアの命令によって規定される方法でプログラマブル回路を動作させるソフトウェアまたはファームウェアを実行してもよい。固定機能回路は、(例えば、パラメータを受け取るまたはパラメータを出力するために)ソフトウェア命令を実行するかもしれないが、固定機能回路が実行する動作のタイプは一般的に不変である。いくつかの例では、ユニットのうちの1つ以上は、別個の回路ブロック(固定機能またはプログラマブル)であってよく、いくつかの例では、1つ以上のユニットは集積回路であってよい。
[0192]
ビデオエンコーダ200は、プログラマブル回路から形成される、算術論理ユニット(ALU)、基本機能ユニット(EFU)、デジタル回路、アナログ回路、および/または、プログラマブルコアを含んでいてもよい。ビデオエンコーダ200の動作がプログラマブル回路によって実行されるソフトウェアを使用して実施される例では、メモリ106(図1)は、ビデオエンコーダ200が受け取って実行するソフトウェアのオブジェクトコードを記憶していてもよく、または、ビデオエンコーダ200内の(図示されていない)別のメモリがこのような命令を記憶していてもよい。
[0193]
ビデオデータメモリ230は、受け取ったビデオデータを記憶するように構成されている。ビデオエンコーダ200は、ビデオデータメモリ230からビデオデータのピクチャーを取り出し、ビデオデータを残差発生ユニット204およびモード選択ユニット202に提供してもよい。ビデオデータメモリ230中のビデオデータは、エンコードされるべき生のビデオデータであってもよい。
[0194]
モード選択ユニット202は、動き推定ユニット222と、動き補償ユニット224と、イントラ予測ユニット226とを含んでいる。モード選択ユニット202は、他の予測モードにしたがってビデオ予測を実行するための追加の機能ユニットを含んでいてもよい。例として、モード選択ユニット202は、パレットユニット、(動き推定ユニット222および/または動き補償ユニット224の一部であってもよい)イントラブロックコピーユニット、アフィンユニット、線形モデル(LM)ユニット、または、これらに類するものを含んでいてもよい。
[0195]
モード選択ユニット202は、一般的に、複数のエンコーディングパスを調整して、エンコーディングパラメータの組み合わせをテストし、結果として、このような組み合わせに対するレート歪み値を得る。エンコーディングパラメータは、CTUのCUへの区分、CUに対する予測モード、CUの残差データに対する変換タイプ、CUの残差データに対する量子化パラメータ等を含んでいてもよい。モード選択ユニット202は、最終的に、他のテストされた組み合わせよりも良好なレート歪み値を有するエンコーディングパラメータの組み合わせを選択してもよい。
[0196]
ビデオエンコーダ200は、ビデオデータメモリ230から取り出されたピクチャーを一連のCTUに区分し、スライス内に1つ以上のCTUをカプセル化してもよい。モード選択ユニット202は、上記で説明したQTBT構造またはHEVCの4分ツリー構造のようなツリー構造にしたがって、ピクチャーのCTUを区分してもよい。上記で説明したように、ビデオエンコーダ200は、ツリー構造にしたがってCTUを区分することから1つ以上のCUを形成してもよい。このようなCUは、一般的に、「ビデオブロック」または「ブロック」として呼ばれることもある。
[0197]
一般的に、モード選択ユニット202はまた、そのコンポーネント(例えば、動き推定ユニット222、動き補償ユニット224、および、イントラ予測ユニット226)を制御して、現在ブロック(例えば、現在CU、または、HEVCでは、PUとTUとのオーバーラップする部分)に対する予測ブロックを発生させる。現在ブロックのインター予測のために、動き推定ユニット222は、動きサーチを実行して、1つ以上の参照ピクチャー(例えば、DPB218中に記憶されている1つ以上の以前にコード化されたピクチャー)中の1つ以上の密接に一致する参照ブロックを識別してもよい。特に、動き推定ユニット222は、例えば、絶対差分の和(SAD)、二乗差分の和(SSD)、平均絶対差分(MAD)、平均二乗差分(MSD)、または、これらに類するものにしたがって、潜在的参照ブロックが現在ブロックにどれだけ類似しているかを表す値を計算してもよい。動き推定ユニット222は、一般的に、現在ブロックと考慮されている参照ブロックとの間のサンプル毎の差分を使用して、これらの計算を実行してもよい。動き推定ユニット222は、現在ブロックに最も密接に一致する参照ブロックを示す、これらの計算から結果的に生じる最低値を有する参照ブロックを識別してもよい。
[0198]
動き推定ユニット222は、現在ピクチャー中の現在ブロックの位置に対する、参照ピクチャー中の参照ブロックの位置を規定する、1つ以上の動きベクトル(MV)を形成してもよい。動き推定ユニット222は、その後、動きベクトルを動き補償ユニット224に提供してもよい。例えば、単方向インター予測に対して、動き推定ユニット222は単一の動きベクトルを提供するかもしれない一方で、双方向インター予測に対して、動き推定ユニット222は2つの動きベクトルを提供するかもしれない。動き補償ユニット224は、その後、動きベクトルを使用して、予測ブロックを発生させてもよい。例えば、動き補償ユニット224は、動きベクトルを使用して、参照ブロックのデータを取り出してもよい。別の例として、動きベクトルがわずかなサンプル精度を有する場合には、動き補償ユニット224は、1つ以上の補間フィルタにしたがって、予測ブロックに対する値を補間してもよい。さらに、双方向インター予測に対して、動き補償ユニット224は、それぞれの動きベクトルによって識別された2つの参照ブロックに対するデータを取り出し、例えば、サンプル毎の平均化または重み付き平均化を通して、取り出されたデータを組み合わせてもよい。
[0199]
本開示の技法によれば、動き推定ユニット222および動き補償ユニット224は、本開示で説明しているインター予測および動きベクトル予測技法を実行してもよい。例えば、以下でより詳細に説明するように、動き推定ユニット222および動き補償ユニット224は、本開示で説明している例示的な技法を利用して、動きベクトル予測子リストを構築するように構成されていてもよい。
[0200]
上記で説明したように、いくつかの例では、ブロックに対する動きベクトル予測子リストは、ブロックと、空間的に隣接するブロックおよび/またはコロケートされたブロックとを含むピクチャーのコーディング順序に基づいていてもよい。例えば、1つの例では、5つの空間的に隣接するブロックは、左から右へのコーディング順序に対して図8Aに図示されているものであってもよく、5つの空間的に隣接するブロックは、右から左へのコーディング順序に対して図8Bに図示されているものであってもよい。
[0201]
例えば、左から右へのコーディング順序を有する第1のピクチャー中の第1のブロックに対して、動き推定ユニット222および動き補償ユニット224は、第1の動きベクトル予測子リストを構築してもよい。第1の動きベクトル予測子リスト中の第1のエントリは、第1のブロックに対して左隣接ブロック(例えば、図8Aのブロック0 802)の動きベクトル情報に基づいていてもよい。右から左へのコーディング順序を有する第2のピクチャー中の第2のブロックに対して、動き推定ユニット222および動き補償ユニット224は、第2の動きベクトル予測子リストを構築してもよい。第2の動きベクトル予測子リスト中の第1のエントリは、第2のブロックに対して右隣接ブロック(例えば、図8Bのブロック0 818)の動きベクトル情報に基づいていてもよい。
[0202]
動き推定ユニット222および動き補償ユニット224は、空間的に隣接するブロックのすべてを含む複数に対して、(2つの例として)ビデオデータメモリ230またはデコードピクチャーバッファ218中に記憶されている動きベクトル情報を並列に検査してもよい。言い換えれば、動き推定ユニット222および動き補償ユニット224が空間的に隣接する特定のブロックに対して動きベクトル情報を検査するか否かは、他の何らかのブロックの動きベクトル情報に依存していなくてもよい。
[0203]
空間的に隣接するブロックの動きベクトル情報の検査に基づいて、動き推定ユニット222および動き補償ユニット224は、動きベクトル情報の利用可能性に基づいている順序で動きベクトル情報を有する動きベクトル予測子リストを構築してもよい。左から右へのコーディング順序に対する動きベクトル予測子リスト中の動きベクトル情報の順序は、左隣接ブロック(例えば、図8Aのブロック0 802)の動きベクトル情報、上隣接ブロック(例えば、図8Aのブロック1 804)の動きベクトル情報、右上隣接ブロック(例えば、図8Aのブロック2 806)の動きベクトル情報、左下隣接ブロック(例えば、図8Aのブロック3 808)の動きベクトル情報、および、左上隣接ブロック(例えば、図8Aのブロック4 810)の動きベクトル情報であってもよい。右から左へのコーディング順序に対する動きベクトル予測子リスト中の動きベクトル情報の順序は、右隣接ブロック(例えば、図8Bのブロック0 818)の動きベクトル情報、上隣接ブロック(例えば、図8Bのブロック1 820)の動きベクトル情報、左上隣接ブロック(例えば、図8Bのブロック2 822)の動きベクトル情報、右下隣接ブロック(例えば、図8Bのブロック3 824)の動きベクトル情報、および、右上隣接ブロック(例えば、図8Bのブロック4 826)の動きベクトル情報であってもよい。
[0204]
上記の順序付けは、動きベクトル情報の利用可能性に基づいている。動きベクトル情報が特定のブロックに対して利用可能でない場合には、その動きベクトル情報は、動きベクトル予測子リストに追加されない。いくつかの例では、次に利用可能な動きベクトル情報は、何らの動きベクトル情報がなかったブロックに対して確保された空間中に含まれてもよい。例えば、図8Aのブロック1 804に対する動きベクトル情報が動きベクトル予測子リスト中の第2のエントリであってもよく、図8Aのブロック2 806に対する動きベクトル情報が動きベクトル予測子リスト中の第3エントリであってもよい。図8Aのブロック1 804に対する動きベクトル情報が利用可能でなく、図8Aのブロック2 806に対する動きベクトル情報が利用可能である場合には、ブロック2 806に対する動きベクトル情報は、動きベクトル予測子リストの第2のエントリ中にあってもよい。
[0205]
上記の例では、動き推定ユニット222および動き補償ユニット224は、空間的に隣接するブロックに基づいて、第1の動きベクトル予測子リストおよび第2の動きベクトル予測子リストを決定した。いくつかの例では、動き推定ユニット222および動き補償ユニット224は、(2つの例として)ビデオデータメモリ230またはデコードピクチャーバッファ218中に記憶されている、コロケートされたブロックの動きベクトル情報を、第1の動きベクトル予測子リストおよび第2の動きベクトル予測子リスト中に含めてもよい。
[0206]
1つの例として、動き推定ユニット222および動き補償ユニット224は、第1のピクチャー以外のピクチャー中に位置する他の何らかのコロケートされたブロック中の動きベクトル情報が利用可能であるか否かを決定する前に、第1のピクチャー以外のピクチャー中に位置する中央コロケートされたブロック(例えば、図8Aのブロック5 812)に対する動きベクトル情報が利用可能であるか否かを決定してもよく、中央コロケートされたブロックに対する動きベクトル情報が利用可能であることに基づいて、動き推定ユニット222および動き補償ユニット224は、中央コロケートされたブロックに対する動きベクトル情報を第1の動きベクトル予測子リストに追加してもよい。
[0207]
いくつかの例では、動き推定ユニット222および動き補償ユニット224は、第1のピクチャー以外のピクチャー中に位置する中央コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定してもよい。このような例では、中央コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定したことに後続して、動き推定ユニット222および動き補償ユニット224は、第1のピクチャー以外のピクチャー中に位置する下コロケートされたブロック(例えば、図8Aのブロック6 814)に対する動きベクトル情報が利用可能であるか否かを決定してもよく、下コロケートされたブロックに対する動きベクトル情報が利用可能であることに基づいて、動き推定ユニット222および動き補償ユニット224は、下コロケートされたブロックに対する動きベクトル情報を第1の動きベクトル予測子リストに追加してもよい。
[0208]
いくつかの例では、動き推定ユニット222および動き補償ユニット224は、第1のピクチャー以外のピクチャー中に位置する中央コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定してもよい。いくつかのケースでは、中央コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定したことに後続して、動き推定ユニット222および動き補償ユニット224は、第1のピクチャー以外のピクチャー中に位置する下コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定してもよい。このようなケースでは、下コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定したことに後続して、動き推定ユニット222および動き補償ユニット224は、第1のピクチャー以外のピクチャー中に位置する右コロケートされたブロック(例えば、図8Aのブロック7 816)に対する動きベクトル情報が利用可能であるか否かを決定してもよく、右コロケートされたブロックに対する動きベクトル情報が利用可能であることに基づいて、動き推定ユニット222および動き補償ユニット224は、右コロケートされたブロックに対する動きベクトル情報を第1の動きベクトル予測子リストに追加してもよい。
[0209]
動き推定ユニット222および動き補償ユニット224は、第2の動きベクトル予測子リストを構築するために、コロケートされたブロックに対する動きベクトル情報を追加する類似する動作を実行してもよい。しかしながら、第2の動きベクトル予測子リストに対して、動き推定ユニット222および動き補償ユニット224は、図8Bの中央コロケートされたブロック5 828、下コロケートされたブロック6 830、および、左コロケートされたブロック7 832の利用可能性に基づいて、動きベクトル情報を追加してもよい。
[0210]
動きベクトル予測子リストを構築する際に、動き推定ユニット222および動き補償ユニット224は、いくつかの例では、ブロックのサイズに基づいて、動きベクトル予測子リストを構築してもよい。例えば、動き推定ユニット222および動き補償ユニット224は、しきい値サイズよりも大きいサイズを有する第1のブロックに基づいて、第1の最大サイズを有する第1の動きベクトル予測子リストを構築してもよい。動き推定ユニット222および動き補償ユニット224は、しきい値サイズよりも小さいサイズを有する、第1のピクチャー中の第3のブロックに基づいて、第3のブロックに対して、第1の最大サイズよりも小さい第2の最大サイズを有する第3の動きベクトル予測子リストを構築してもよい。1つの例として、第1の最大サイズは6に等しく、第2の最大サイズは4に等しく、しきい値サイズはNx4または4xNに等しく、ここでNは8以下である。
[0211]
動き推定ユニット222および動き補償ユニット224は、第1のブロックおよび第2のブロックをエンコードするように構成されていてもよい。例えば、動き推定ユニット222および動き補償ユニット224は、第1のブロックに対する予測ブロックを決定し、予測ブロックを識別する第1のブロックに対する動きベクトルを決定してもよい。動き推定ユニット222および動き補償ユニット224は、動きベクトルに基づいて、第1の動きベクトル予測子リスト中のエントリを決定してもよい。動き推定ユニット222および動き補償ユニット224は、エントロピーエンコーディングユニット220に、第1の動きベクトル予測子リスト中のエントリを示す情報をシグナリングさせてもよい。加えて、残差発生ユニット204は、第1のブロックと予測ブロックとの間の差分を表す残差データを決定してもよい。エントロピーエンコーディングユニット220は、残差データを示す情報をシグナリングしてもよい。動き推定ユニット222および動き補償ユニット224は、第2の動きベクトル予測子リストを使用して、第2のブロックをエンコードするために、類似する動作を実行してもよい。
[0212]
別の例として、イントラ予測またはイントラ予測コーディングに対して、イントラ予測ユニット226は、現在ブロックに隣接するサンプルから予測ブロックを発生させてもよい。例えば、方向モードに対して、イントラ予測ユニット226は、一般的に、隣接サンプルの値を数学的に組み合わせ、現在ブロックに渡って規定された方向でこれらの計算された値を格納して、予測ブロックを生成させてもよい。別の例として、DCモードに対して、イントラ予測ユニット226は、現在ブロックに対する隣接サンプルの平均を計算し、予測ブロックの各サンプルに対するこの結果として得られる平均を含むように予測ブロックを発生させてもよい。
[0213]
モード選択ユニット202は、予測ブロックを残差発生ユニット204に提供する。残差発生ユニット204は、ビデオデータメモリ230から現在ブロックの生のコード化されていないバージョンを受け取り、モード選択ユニット202から予測ブロックを受け取る。残差発生ユニット204は、現在ブロックと予測ブロックとの間のサンプル毎の差分を計算する。結果として得られるサンプル毎の差分は、現在ブロックに対する残差ブロックを規定する。いくつかの例では、残差発生ユニット204はまた、残差ブロック中のサンプル値間の差分を決定して、残差パルスコード変調(RDPCM)を使用して、残差ブロックを発生させてもよい。いくつかの例では、残差発生ユニット204は、バイナリ減算を実行する1つ以上の減算器回路を使用して形成されていてもよい。
[0214]
モード選択ユニット202がCUをPUに区分する例では、各PUは、ルーマ予測ユニットおよび対応するクロマ予測ユニットに関係していてもよい。ビデオエンコーダ200およびビデオデコーダ300は、さまざまなサイズを有するPUをサポートしていてもよい。上記で示したように、CUのサイズは、CUのルーマコーディングブロックのサイズを指してもよく、PUのサイズは、PUのルーマ予測ユニットのサイズを指していてもよい。特定のCUのサイズが2N×2Nであると仮定すると、ビデオエンコーダ200は、イントラ予測に対する2N×2NまたはN×NのPUサイズと、インター予測に対する2N×2N、2N×N、N×2N、N×N、または、これらに類する対称PUサイズとをサポートしていてもよい。ビデオエンコーダ200およびビデオデコーダ300はまた、インター予測に対する2N×nU、2N×nD、nL×2N、および、nR×2NのPUサイズに対する非対称区分をサポートしていてもよい。
[0215]
モード選択ユニット202がCUをPUにさらに区分しない例では、各CUは、ルーマコーディングブロックおよび対応するクロマコーディングブロックに関係していてもよい。上記のように、CUのサイズは、CUのルーマコーディングブロックのサイズを指していてもよい。ビデオエンコーダ200およびビデオデコーダ300は、2N×2N、2N×N、または、N×2NのCUサイズをサポートしていてもよい。
[0216]
イントラブロックコピーモードコーディング、アフィンモードコーディング、および、線形モデル(LM)モードコーディングのような、他のビデオコーディング技法に対して、いくつかの例として、モード選択ユニット202は、コーディング技法に関係するそれぞれのユニットを介して、エンコードされている現在ブロックに対する予測ブロックを発生させる。パレットモードコーディングのようないくつかの例では、モード選択ユニット202は、予測ブロックを発生させず、代わりに、選択されたパレットに基づいて、ブロックを再構築する方法を示すシンタックス要素を発生させてもよい。このようなモードでは、モード選択ユニット202は、これらのシンタックス要素を、エンコードされるようにエントロピーエンコーディングユニット220に提供してもよい。
[0217]
上記で説明したように、残差発生ユニット204は、現在ブロックおよび対応する予測ブロックに対するビデオデータを受け取る。残差発生ユニット204は、その後、現在ブロックに対する残差ブロックを発生させる。残差ブロックを発生させるために、残差発生ユニット204は、予測ブロックと現在ブロックとの間のサンプル毎の差分を計算する。
[0218]
変換処理ユニット206は、残差ブロックに1つ以上の変換を適用して、(ここでは「変換係数ブロック」として呼ばれる)変換係数のブロックを発生させる。変換処理ユニット206は、残差ブロックにさまざまな変換を適用して、変換係数ブロックを形成してもよい。例えば、変換処理ユニット206は、離散コサイン変換(DCT)、方向変換、カルーネンレーベ変換(KLT)、または、概念的に類似する変換を、残差ブロックに適用してもよい。いくつかの例では、変換処理ユニット206は、残差ブロックに対して複数の変換、例えば、回転変換のような、1次変換と2次変換とを実行してもよい。いくつかの例では、変換処理ユニット206は、残差ブロックに変換を適用しない。
[0219]
量子化ユニット208は、変換係数ブロック中の変換係数を量子化して、量子化された変換係数ブロックを生成させてもよい。量子化ユニット208は、現在ブロックに関係する量子化パラメータ(QP)値にしたがって、変換係数ブロックの変換係数を量子化してもよい。ビデオエンコーダ200は(例えば、モード選択ユニット202を介して)、CUに関係するQP値を調節することによって、現在ブロックに関係する係数ブロックに適用される量子化の程度を調節してもよい。量子化は、情報の損失をもたらすかもしれず、したがって、量子化された変換係数は、変換処理ユニット206によって生成された元の変換係数よりも低い精度を有するかもしれない。
[0220]
逆量子化ユニット210および逆変換処理ユニット212は、逆量子化および逆変換をそれぞれ量子化された変換係数ブロックに適用して、変換係数ブロックから残差ブロックを再構築してもよい。再構築ユニット214は、再構築された残差ブロックと、モード選択ユニット202によって発生させた予測ブロックとに基づいて、(潜在的にある程度の歪みを有するが)現在ブロックに対応する再構築されたブロックを生成させてもよい。例えば、再構築ユニット214は、再構築された残差ブロックのサンプルを、モード選択ユニット202によって発生させた予測ブロックからの対応するサンプルに追加して、再構築されたブロックを生成させてもよい。
[0221]
フィルタユニット216は、再構築されたブロックに対して1つ以上のフィルタ動作を実行してもよい。例えば、フィルタユニット216は、デブロッキング動作を実行して、CUのエッジに沿ったブロッキネスアーティファクトを低減させてもよい。いくつかの例では、フィルタユニット216の動作はスキップしてもよい。
[0222]
ビデオエンコーダ200は、再構築されたブロックをDPB218中に記憶させる。例えば、フィルタユニット216の動作が必要とされない例では、再構築ユニット214は、再構築されたブロックをDPB218中に記憶させてもよい。フィルタユニット216の動作が必要とされる例では、フィルタユニット216は、再構築されフィルタされたブロックをDPB218中に記憶させてもよい。動き推定ユニット222および動き補償ユニット224は、再構築された(そして、潜在的にフィルタ処理された)ブロックから形成された参照ピクチャーをDPB218から取り出して、後にエンコードされるピクチャーのブロックをインター予測してもよい。加えて、イントラ予測ユニット226は、現在ピクチャーのDPB218中の再構築されたブロックを使用して、現在ピクチャー中の他のブロックをイントラ予測してもよい。
[0223]
一般的に、エントロピーエンコーディングユニット220は、ビデオエンコーダ200の他の機能的なコンポーネントから受け取ったシンタックス要素をエントロピーエンコードしてもよい。例えば、エントロピーエンコーディングユニット220は、量子化ユニット208からの量子化された変換係数ブロックをエントロピーエンコードしてもよい。別の例として、エントロピーエンコーディングユニット220は、モード選択ユニット202からの予測シンタックス要素(例えば、インター予測に対する動き情報またはイントラ予測に対するイントラモード情報)をエントロピーエンコードしてもよい。エントロピーエンコーディングユニット220は、ビデオデータの別の例であるシンタックス要素に関して、1つ以上のエントロピーエンコーディング動作を実行して、エントロピーエンコードされたデータを発生させてもよい。例えば、エントロピーエンコーディングユニット220は、データに、コンテキスト適応可変長コーディング(CAVLC)動作、CABAC動作、可変対可変(V2V)長コーディング動作、シンタックスベースのコンテキスト適応2値算術コードディング(SBAC)動作、確率区間区分化エントロピー(PIPE)コーディング動作、指数ゴロムエンコーディング動作、または、別のタイプのエントロピーエンコーディング動作を実行してもよい。いくつかの例では、エントロピーエンコーディングユニット220は、シンタックス要素がエントロピーエンコードされないバイパスモードで動作してもよい。
[0224]
ビデオエンコーダ200は、スライスまたはピクチャーのブロックを再構築するのに必要とされるエントロピーエンコードされたシンタックス要素を含むビットストリームを出力してもよい。特に、エントロピーエンコーディングユニット220は、ビットストリームを出力してもよい。
[0225]
上記で説明している動作は、ブロックに関して説明している。このような説明は、ルーマコーディングブロックおよび/またはクロマコーディングブロックに対する動作として理解すべきである。上述したように、いくつかの例では、ルーマコーディングブロックおよびクロマコーディングブロックは、CUのルーマ成分およびクロマ成分である。いくつかの例では、ルーマコーディングブロックおよびクロマコーディングブロックは、PUのルーマ成分およびクロマ成分である。
[0226]
いくつかの例では、ルーマコーディングブロックに関して実行される動作は、クロマコーディングブロックに対して繰り返す必要はない。1つの例として、ルーマコーディングブロックに対する動きベクトル(MV)および参照ピクチャーを識別する動作は、クロマブロックに対するMVおよび参照ピクチャーを識別するために繰り返す必要はない。むしろ、ルーマコーディングブロックに対するMVをスケーリングして、クロマブロックに対するMVを決定してもよく、参照ピクチャーは同じであってもよい。別の例として、イントラ予測プロセスは、ルーマコーディングブロックおよびクロマコーディングブロックに対して同じであってもよい。
[0227]
図3は、本開示の技法を利用してもよい、例示的なビデオデコーダ300を図示するブロック図である。図3は、説明の目的のために提供されており、本開示で広く例示し説明しているような技法には限定されない。説明の目的で、本開示は、H.266/VVC、JEMおよびHEVCの技法にしたがうビデオデコーダ300を説明する。しかしながら、本開示の技法は、他のビデオコーディング標準規格に構成されているビデオコーディングデバイスによって実行してもよい。
[0228]
図3の例では、ビデオデコーダ300は、コード化ピクチャーバッファ(CPB)メモリ320と、エントロピーデコーディングユニット302と、予測処理ユニット304と、逆量子化ユニット306と、逆変換処理ユニット308と、再構築ユニット310と、フィルタユニット312と、デコードピクチャーバッファ(DPB)314とを含んでいる。予測処理ユニット304は、動き補償ユニット316とイントラ予測ユニット318とを含んでいる。予測処理ユニット304は、他の予測モードにしたがって予測を実行するための追加ユニットを含んでいてもよい。例として、予測処理ユニット304は、パレットユニット、(動き補償ユニット316の一部を形成していてもよい)イントラブロックコピーユニット、アフィンユニット、線形モデル(LM)ユニット、または、これらに類するものを含んでいてもよい。他の例では、ビデオデコーダ300は、より多い、より少ない、または、異なる機能的コンポーネントを含んでいてもよい。
[0229]
CPBメモリ320は、ビデオデコーダ300のコンポーネントによってデコードされるべき、エンコードされたビデオビットストリームのようなビデオデータを記憶してもよい。CPBメモリ320中に記憶されているビデオデータは、例えば、コンピュータ読取可能媒体110(図1)から取得されてもよい。CPBメモリ320は、エンコードされたビデオビットストリームからのエンコードされたビデオデータ(例えば、シンタックス要素)を記憶するCPBを含んでいてもよい。また、CPBメモリ320は、ビデオデコーダ300のさまざまなユニットからの出力を表す一時データのような、コード化されたピクチャーのシンタックス要素以外のビデオデータを記憶してもよい。DPB314は、一般的に、デコードされたピクチャーを記憶し、エンコードされたビデオビットストリームの後続のデータまたはピクチャーをデコードするときに、ビデオデコーダ300が、このデコードされたピクチャーを、参照ビデオデータとして出力および/または使用してもよい。CPBメモリ320およびDPB314は、同期ダイナミックランダムアクセスメモリ(DRAM)(SDRAM)を含むDRAM、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM(登録商標))、または、他のタイプのメモリデバイスのような、さまざまなメモリデバイスのいずれかによって形成されていてもよい。CPBメモリ320およびDPB314は、同じメモリデバイスまたは別個のメモリデバイスによって提供されてもよい。さまざまな例では、CPBメモリ320は、ビデオデコーダ300の他のコンポーネントとともにオンチップであるか、または、これらのコンポーネントに対してオフチップであってもよい。
[0230]
追加的にまたは代替的に、いくつかの例では、ビデオデコーダ300は、メモリ120(図1)からコード化されたビデオデータを取り出してもよい。すなわち、メモリ120は、CPBメモリ320を用いて上記で説明したようなデータを記憶していてもよい。同様に、ビデオデコーダ300の機能の一部またはすべてが、ビデオデコーダ300の処理回路によって実行されるソフトウェアで実現されるとき、メモリ120は、ビデオデコーダ300によって実行されるべき命令を記憶していてもよい。
[0231]
図3に示されているさまざまなユニットは、ビデオデコーダ300によって実行される動作の理解を助けるために図示されている。ユニットは、固定機能回路、プログラマブル回路、または、これらの組み合わせとして実現してもよい。図2と同様に、固定機能回路は、特定の機能性を提供する回路を指し、実行できる動作に対して予め設定される。プログラマブル回路は、さまざまなタスクを実行するようにプログラムでき、実行できる動作において柔軟な機能性を提供できる回路を指している。例えば、プログラマブル回路は、ソフトウェアまたはファームウェアの命令によって規定される方法でプログラマブル回路を動作させるソフトウェアまたはファームウェアを実行してもよい。固定機能回路は、(例えば、パラメータを受け取るまたはパラメータを出力するために)ソフトウェア命令を実行するかもしれないが、固定機能回路が実行する動作のタイプは一般的に不変である。いくつかの例では、ユニットのうちの1つ以上は、別個の回路ブロック(固定機能またはプログラマブル)であってもよく、いくつかの例では、1つ以上のユニットは集積回路であってもよい。
[0232]
ビデオデコーダ300は、ALU、EFU、デジタル回路、アナログ回路、および/または、プログラマブル回路から形成されているプログラマブルコアを含んでいてもよい。ビデオデコーダ300の動作がプログラマブル回路上で実行するソフトウェアによって実行される例では、オンチップまたはオフチップメモリが、ビデオデコーダ300が受け取って実行するソフトウェアの命令(例えば、オブジェクトコード)を記憶していてもよい。
[0233]
エントロピーデコーディングユニット302は、CPBからエンコードされたビデオデータを受け取り、ビデオデータをエントロピーデコードして、シンタックス要素を再生させてもよい。予測処理ユニット304、逆量子化ユニット306、逆変換処理ユニット308、再構築ユニット310、および、フィルタユニット312は、ビットストリームから抽出されたシンタックス要素に基づいて、デコードされたビデオデータを発生させてもよい。
[0234]
一般的に、ビデオデコーダ300は、ブロック毎のベースでピクチャーを再構築する。ビデオデコーダ300は、各ブロックに対して個別に再構築動作を実行してもよい(現在再構築されている、すなわち、デコードされているブロックは、「現在ブロック」として呼ばれることがある)。
[0235]
エントロピーデコーディングユニット302は、量子化された変換係数ブロックの量子化された変換係数を規定するシンタックス要素とともに、量子化パラメータ(QP)および/または変換モード表示のような変換情報をエントロピーデコードしてもよい。逆量子化ユニット306は、量子化変換係数ブロックに関係するQPを使用して、量子化の程度を、そして、同様に逆量子化ユニット306が適用する逆量子化の程度を決定してもよい。逆量子化ユニット306は、例えば、ビット単位の左シフト演算を実行して、量子化変換係数を逆量子化してもよい。それによって、逆量子化ユニット306は、変換係数を含む変換係数ブロックを形成してもよい。
[0236]
逆量子化ユニット306が変換係数ブロックを形成した後、逆変換処理ユニット308は、変換係数ブロックに1つ以上の逆変換を適用して、現在ブロックに関係する残差ブロックを発生させてもよい。例えば、逆変換処理ユニット308は、係数ブロックに、逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT)、逆回転変換、逆方向変換、または、別の逆変換を適用してもよい。
[0237]
さらに、予測処理ユニット304は、エントロピーデコーディングユニット302によってエントロピーデコードされた予測情報シンタックス要素にしたがって、予測ブロックを発生させる。例えば、現在ブロックがインター予測されることを予測情報シンタックス要素が示す場合、動き補償ユニット316が予測ブロックを発生させてもよい。このケースでは、予測情報シンタックス要素は、参照ブロックを取り出すべきDPB314中の参照ピクチャーとともに、現在ピクチャー中の現在ブロックのロケーションに対する、参照ピクチャー中の参照ブロックのロケーションを識別する動きベクトルを示していてもよい。動き補償ユニット316は、一般的に、動き補償ユニット224(図2)に関して説明した方法と実質的に類似する方法で、インター予測プロセスを実行してもよい。
[0238]
本開示の技法によれば、動き補償ユニット316は、本開示で説明しているブロックをコード化するとき、インター予測技法と動きベクトル予測技法とを実行してもよい。例えば、以下でより詳細に説明するように、動き補償ユニット316は、本開示で説明している例示的な技法を利用して、動きベクトル予測子リストを構築するように構成されていてもよい。
[0239]
上記で説明したように、いくつかの例では、ブロックに対する動きベクトル予測子リストは、ブロックと、空間的に隣接するブロックおよび/またはコロケートされたブロックとを含むピクチャーのコーディング順序に基づいていてもよい。例えば、1つの例では、5つの空間的に隣接するブロックは、左から右へのコーディング順序に対して図8Aに図示されているものであってもよく、5つの空間的に隣接するブロックは、右から左へのコーディング順序に対して図8Bに図示されているものであってもよい。
[0240]
例えば、左から右へのコーディング順序を有する第1のピクチャー中の第1のブロックに対して、動き補償ユニット316は、第1の動きベクトル予測子リストを構築してもよい。第1の動きベクトル予測子リスト中の第1のエントリは、第1のブロックに対して左隣接ブロック(例えば、図8Aのブロック0 802)の動きベクトル情報に基づいていてもよい。右から左へのコーディング順序を有する第2のピクチャー中の第2のブロックに対して、動き補償ユニット316は、第2の動きベクトル予測子リストを構築してもよい。第2の動きベクトル予測子リスト中の第1のエントリは、第2のブロックに対して右隣接ブロック(例えば、図8Bのブロック0 818)の動きベクトル情報に基づいていてもよい。
[0241]
動き補償ユニット316は、空間的に隣接するブロックのすべてを含む複数に対して、(1つの例として)デコードピクチャーバッファ314中に記憶されている動きベクトル情報を並列に検査してもよい。言い換えれば、動き補償ユニット316が空間的に隣接する特定のブロックに対して動きベクトル情報を検査するか否かは、他の何らかのブロックの動きベクトル情報に依存していなくてもよい。
[0242]
空間的に隣接するブロックの動きベクトル情報の検査に基づいて、動き補償ユニット316は、動きベクトル情報の利用可能性に基づいている順序で動きベクトル情報を有する動きベクトル予測子リストを構築してもよい。左から右へのコーディング順序に対する動きベクトル予測子リスト中の動きベクトル情報の順序は、左隣接ブロック(例えば、図8Aのブロック0 802)の動きベクトル情報、上隣接ブロック(例えば、図8Aのブロック1 804)の動きベクトル情報、右上隣接ブロック(例えば、図8Aのブロック2 806)の動きベクトル情報、左下隣接ブロック(例えば、図8Aのブロック3 808)の動きベクトル情報、および、左上隣接ブロック(例えば、図8Aのブロック4 810)の動きベクトル情報であってもよい。右から左へのコーディング順序に対する動きベクトル予測子リスト中の動きベクトル情報の順序は、右隣接ブロック(例えば、図8Bのブロック0 818)の動きベクトル情報、上隣接ブロック(例えば、図8Bのブロック1 820)の動きベクトル情報、左上隣接ブロック(例えば、図8Bのブロック2 822)の動きベクトル情報、右下隣接ブロック(例えば、図8Bのブロック3 824)の動きベクトル情報、および、右上隣接ブロック(例えば、図8Bのブロック4 826)の動きベクトル情報であってもよい。
[0243]
上記の順序付けは、動きベクトル情報の利用可能性に基づいている。動きベクトル情報が特定のブロックに対して利用可能でない場合には、その動きベクトル情報は、動きベクトル予測子リストに追加されない。いくつかの例では、次に利用可能な動きベクトル情報は、何らの動きベクトル情報がなかったブロックに対して確保された空間中に含まれてもよい。例えば、図8Aのブロック1 804に対する動きベクトル情報が動きベクトル予測子リスト中の第2のエントリであってもよく、図8Aのブロック2 806に対する動きベクトル情報が動きベクトル予測子リスト中の第3エントリであってもよい。図8Aのブロック1 804に対する動きベクトル情報が利用可能でなく、図8Aのブロック2 806に対する動きベクトル情報が利用可能である場合には、ブロック2 806に対する動きベクトル情報は、動きベクトル予測子リストの第2のエントリ中にあってもよい。
[0244]
上記の例では、動き補償ユニット316は、空間的に隣接するブロックに基づいて、第1の動きベクトル予測子リストおよび第2の動きベクトル予測子リストを決定した。いくつかの例では、動き補償ユニット316は、(1つの例として)デコードピクチャーバッファ314中に記憶されている、コロケートされたブロックの動きベクトル情報を、第1の動きベクトル予測子リストおよび第2の動きベクトル予測子リスト中に含めてもよい。
[0245]
1つの例として、動き補償ユニット316は、第1のピクチャー以外のピクチャー中に位置する他の何らかのコロケートされたブロック中の動きベクトル情報が利用可能であるか否かを決定する前に、第1のピクチャー以外のピクチャー中に位置する中央コロケートされたブロック(例えば、図8Aのブロック5 812)に対する動きベクトル情報が利用可能であるか否かを決定してもよく、中央コロケートされたブロックに対する動きベクトル情報が利用可能であることに基づいて、動き補償ユニット316は、中央コロケートされたブロックに対する動きベクトル情報を第1の動きベクトル予測子リストに追加してもよい。
[0246]
いくつかの例では、動き補償ユニット316は、第1のピクチャー以外のピクチャー中に位置する中央コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定してもよい。このような例では、中央コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定したことに後続して、動き補償ユニット316は、第1のピクチャー以外のピクチャー中に位置する下コロケートされたブロック(例えば、図8Aのブロック6 814)に対する動きベクトル情報が利用可能であるか否かを決定してもよく、下コロケートされたブロックに対する動きベクトル情報が利用可能であることに基づいて、動き補償ユニット316は、下コロケートされたブロックに対する動きベクトル情報を第1の動きベクトル予測子リストに追加してもよい。
[0247]
いくつかの例では、動き補償ユニット316は、第1のピクチャー以外のピクチャー中に位置する中央コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定してもよい。いくつかのケースでは、中央コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定したことに後続して、動き補償ユニット316は、第1のピクチャー以外のピクチャー中に位置する下コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定してもよい。このようなケースでは、下コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定したことに後続して、動き補償ユニット316は、第1のピクチャー以外のピクチャー中に位置する右コロケートされたブロック(例えば、図8Aのブロック7 816)に対する動きベクトル情報が利用可能であるか否かを決定してもよく、右コロケートされたブロックに対する動きベクトル情報が利用可能であることに基づいて、動き補償ユニット316は、右コロケートされたブロックに対する動きベクトル情報を第1の動きベクトル予測子リストに追加してもよい。
[0248]
動き補償ユニット316は、第2の動きベクトル予測子リストを構築するために、コロケートされたブロックに対する動きベクトル情報を追加する類似する動作を実行してもよい。しかしながら、第2の動きベクトル予測子リストに対して、動き補償ユニット316は、図8Bの中央コロケートされたブロック5 828、下コロケートされたブロック6 830、および、左コロケートされたブロック7 832の利用可能性に基づいて、動きベクトル情報を追加してもよい。
[0249]
動きベクトル予測子リストを構築する際に、動き補償ユニット316は、いくつかの例では、ブロックのサイズに基づいて、動きベクトル予測子リストを構築してもよい。例えば、動き補償ユニット316は、しきい値サイズよりも大きいサイズを有する第1のブロックに基づいて、第1の最大サイズを有する第1の動きベクトル予測子リストを構築してもよい。動き補償ユニット316は、しきい値サイズよりも小さいサイズを有する、第1のピクチャー中の第3のブロックに基づいて、第3のブロックに対して、第1の最大サイズよりも小さい第2の最大サイズを有する第3の動きベクトル予測子リストを構築してもよい。1つの例として、第1の最大サイズは6に等しく、第2の最大サイズは4に等しく、しきい値サイズはNx4または4xNに等しく、ここでNは8以下である。
[0250]
動き補償ユニット316は、再構築ユニット310とともに、第1のブロックと第2のブロックとをデコードするように構成されていてもよい。例えば、動き補償ユニット316は、第1の動きベクトル予測子リスト中のエントリを示す情報を受け取り、エントリに基づいて、第1のブロックに対する動きベクトルを決定してもよい。動き補償ユニット316は、動きベクトルに基づいて、第1のブロックに対して、デコードピクチャーバッファ314中に記憶されている予測ブロックを決定してもよい。再構築ユニット310は、予測ブロックと、予測ブロックと第1のブロックとの間の差分を表す残差データを示す受け取られた情報とに基づいて、第1のブロックを再構築するように構成されていてもよい。動き補償ユニット316および再構築ユニット310は、第2のブロックを同様にデコードするように構成されていてもよい。
[0251]
別の例として、現在ブロックがイントラ予測されることを予測情報シンタックス要素が示している場合、イントラ予測ユニット318は、予測情報シンタックス要素によって示されているイントラ予測モードにしたがって、予測ブロックを発生させてもよい。再度説明すると、イントラ予測ユニット318は、一般的に、イントラ予測ユニット226(図2)に関して説明した方法と実質的に類似する方法で、イントラ予測プロセスを実行してもよい。イントラ予測ユニット318は、現在ブロックに対する隣接するサンプルのデータをDPB314から取り出してもよい。
[0252]
再構築ユニット310は、予測ブロックと残差ブロックとを使用して、現在ブロックを再構築してもよい。例えば、再構築ユニット310は、残差ブロックのサンプルを予測ブロックの対応するサンプルに追加して、現在ブロックを再構築してもよい。
[0253]
フィルタユニット312は、再構築されたブロックに対して1つ以上のフィルタ動作を実行してもよい。例えば、フィルタユニット312は、デブロッキング動作を実行して、再構築されたブロックのエッジに沿ったブロッキネスアーティファクトを低減させてもよい。フィルタユニット312の動作は、必ずしもすべての例において実行する必要はない。
[0254]
ビデオデコーダ300は、再構築されたブロックをDPB314中に記憶させてもよい。上記で説明したように、DPB314は、イントラ予測に対する現在ピクチャーと、後続の動き補償のための以前にデコードされたピクチャーとのサンプルのような参照情報を、予測処理ユニット304に提供してもよい。さらに、ビデオデコーダ300は、図1のディスプレイデバイス118のようなディスプレイデバイス上での後続の提示のために、DPBからデコードされたピクチャーを出力してもよい。
[0255]
図9は、データをコード化する例示的な方法を図示するフローチャートである。説明を容易にするために、図9の例は、処理回路に関して説明している。処理回路の1つの例はビデオエンコーダ200である。処理回路の別の例はビデオデコーダ300である。処理回路は、固定機能回路、プログラマブル回路、または、固定機能回路とプログラマブル回路との組み合わせであってもよい。
[0256]
1つ以上の例では、メモリは、空間的に隣接するブロックおよびコロケートされたブロックの動きベクトル情報のような、動きベクトル情報を記憶するように構成されていてもよい。1つの例として、メモリは、ビデオデータメモリ230、デコードピクチャーバッファ218、または、メモリ106であってもよい。別の例として、メモリは、デコードピクチャーバッファ314またはメモリ120であってもよい。
[0257]
左から右へのコーディング順序を有する第1のピクチャー中の第1のブロックに対して、処理回路は、第1の動きベクトル予測子リストを構築するように構成されていてもよい(400)。第1の動きベクトル予測子リスト中の第1のエントリは、メモリ中に記憶されている第1のブロックに対する左隣接ブロックの動きベクトル情報に基づいていてもよい。左隣接ブロックの1つの例は、図8Aのブロック0 802であり、図8Aのブロック0 802は、図8Aの現在ブロック800の左に位置し、図8Aの現在ブロック800の左境界を共有する(例えば、左隣接ブロックは、第1のブロックの下境界と同じ下境界を有する第1のブロックの左のブロックである)。いくつかの例では、処理回路は、動きベクトル情報利用可能性に基づいて、左隣接ブロック(例えば、ブロック0 802)の動きベクトル情報、上隣接ブロック(例えば、ブロック1 804)の動きベクトル情報、右上隣接ブロック(例えば、ブロック2 806)の動きベクトル情報、左下隣接ブロック(例えば、ブロック3 808)の動きベクトル情報、左上隣接ブロック(例えば、ブロック4 810)の動きベクトル情報の順序で動きベクトル情報を有する第1の動きベクトル予測子リストを構築するように構成されていてもよい。
[0258]
いくつかの例では、第1の動きベクトル予測子リストを構築するために、処理回路は、第1のピクチャー以外のピクチャー中に位置する他の何らかのコロケートされたブロック中の動きベクトル情報が利用可能であるか否かを決定する前に、第1のピクチャー以外のピクチャー中に位置する中央コロケートされたブロック(例えば、ブロック812)に対する動きベクトル情報が利用可能であるか否かを決定し、中央コロケートされたブロックに対する動きベクトル情報が利用可能であることに基づいて、中央コロケートされたブロックに対する動きベクトル情報を第1の動きベクトル予測子リストに追加するように構成されていてもよい。いくつかの例では、第1の動きベクトル予測子リストを構築するために、処理回路は、第1のピクチャー以外のピクチャー中に位置する中央コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定し、中央コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定したことに後続して、第1のピクチャー以外のピクチャー中に位置する下コロケートされたブロック(例えば、図8Aの現在ブロック800の下にあり、図8Aの現在ブロック800の右に最も近いブロック6 814)に対する動きベクトル情報が利用可能であるか否かを決定し、下コロケートされたブロックに対する動きベクトル情報が利用可能であることに基づいて、下コロケートされたブロックに対する動きベクトル情報を第1の動きベクトル予測子リストに追加するように構成されていてもよい。いくつかの例では、下コロケートされたブロック(例えば、ブロック6 814)の右境界は、第1のピクチャー中の第1のブロックの右境界と、第1のピクチャー以外のピクチャー中で、同じロケーションにある。
[0259]
いくつかの例では、第1の動きベクトル予測子リストを構築するために、処理回路は、第1のピクチャー以外のピクチャー中に位置する中央コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定し、中央コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定したことに後続して、第1のピクチャー以外のピクチャー中に位置する下コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定し、下コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定したことに後続して、第1のピクチャー以外のピクチャー中に位置する右コロケートされたブロック(例えば、図8Aの現在ブロック800の右にあり、図8Aの現在ブロック800の下に最も近いブロック7 816)に対する動きベクトル情報が利用可能であるか否かを決定し、右コロケートされたブロックに対する動きベクトル情報が利用可能であることに基づいて、右コロケートされたブロックに対する動きベクトル情報を第1の動きベクトル予測子リストに追加するように構成されていてもよい。いくつかの例では、右コロケートされたブロック(例えば、ブロック7 816)の下境界は、第1のピクチャー中の第1のブロックの下境界と、第1のピクチャー以外のピクチャー中で、同じロケーションにある。
[0260]
処理回路は、第1の動きベクトル予測子リストに基づいて、第1のピクチャー中の第1のブロックをコード化するように構成されていてもよい(402)。1つの例として、第1の動きベクトル予測子リストに基づいて、第1のピクチャー中の第1のブロックをコード化するために、処理回路は、第1の動きベクトル予測子リストに基づいて、第1のピクチャー中の第1のブロックをデコードするように構成されていてもよい。第1のブロックをデコードするために、処理回路は、第1の動きベクトル予測子リスト中のエントリを示す情報を受け取り、エントリに基づいて、第1のブロックに対する動きベクトルを決定し、動きベクトルに基づいて、第1のブロックに対する予測ブロックを決定し、予測ブロックと、予測ブロックと第1のブロックとの間の差分を表す残差データを示す受け取られた情報とに基づいて、第1のブロックを再構築するように構成されていてもよい。別の例として、第1の動きベクトル予測子リストに基づいて、第1のピクチャー中の第1のブロックをコード化するために、処理回路は、第1の動きベクトル予測子リストに基づいて、第1のピクチャー中の第1のブロックをエンコードするように構成されていてもよい。第1のブロックをエンコードするために、処理回路は、第1のブロックに対する予測ブロックを決定し、予測ブロックを識別する第1のブロックに対する動きベクトルを決定し、動きベクトルに基づいて、第1の動きベクトル予測子リスト中のエントリを決定し、エントリを示す情報をシグナリングし、第1のブロックと予測ブロックとの間の差分を表す残差データを示す情報をシグナリングするように構成されていてもよい。
[0261]
右から左へのコーディング順序を有する第2のピクチャー中の第2のブロックに対して、処理回路は、第2の動きベクトル予測子リストを構築するように構成されていてもよい(404)。第2の動きベクトル予測子リスト中の第1のエントリは、メモリ中に記憶されている第2のブロックに対する右隣接ブロックの動きベクトル情報に基づいていてもよい。右隣接ブロックの1つの例は、図8Bのブロック0 818であり、図8Bのブロック0 818は、図8Bの現在ブロック800の右に位置し、図8Bの現在ブロック800の右境界を共有する(例えば、右隣接ブロックは、第2のブロックの下境界と同じ下境界を有する第2のブロックの右のブロックである)。いくつかの例では、処理回路は、動きベクトル情報利用可能性に基づいて、右隣接ブロック(例えば、ブロック0 818)の動きベクトル情報、上隣接ブロック(例えば、ブロック1 820)の動きベクトル情報、左上隣接ブロック(例えば、ブロック2 822)の動きベクトル情報、右下隣接ブロック(例えば、ブロック3 824)の動きベクトル情報、右上隣接ブロック(例えば、ブロック4 826)の動きベクトル情報の順序で動きベクトル情報を有する第2の動きベクトル予測子リストを構築するように構成されていてもよい。
[0262]
いくつかの例では、第2の動きベクトル予測子リストを構築するために、処理回路は、第2のピクチャー以外のピクチャー中に位置する他の何らかのコロケートされたブロック中の動きベクトル情報が利用可能であるか否かを決定する前に、第2のピクチャー以外のピクチャー中に位置する中央コロケートされたブロック(例えば、ブロック5 828)に対する動きベクトル情報が利用可能であるか否かを決定し、中央コロケートされたブロックに対する動きベクトル情報が利用可能であることに基づいて、中央コロケートされたブロックに対する動きベクトル情報を第2の動きベクトル予測子リストに追加するように構成されていてもよい。いくつかの例では、第2の動きベクトル予測子リストを構築するために、処理回路は、第2のピクチャー以外のピクチャー中に位置する中央コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定し、中央コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定したことに後続して、第2のピクチャー以外のピクチャー中に位置する下コロケートされたブロック(例えば、図8Bの現在ブロック800の下にあり、図8Bの現在ブロック800の左に最も近いブロック6 830)に対する動きベクトル情報が利用可能であるか否かを決定し、下コロケートされたブロックに対する動きベクトル情報が利用可能であることに基づいて、下コロケートされたブロックに対する動きベクトル情報を第2の動きベクトル予測子リストに追加するように構成されていてもよい。いくつかの例では、下コロケートされたブロック(例えば、ブロック6 830)の左境界は、第2のピクチャー中の第2のブロックの左境界と、第2のピクチャー以外のピクチャー中で、同じロケーションにある。
[0263]
いくつかの例では、第2の動きベクトル予測子リストを構築するために、処理回路は、第2のピクチャー以外のピクチャー中に位置する中央コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定し、中央コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定したことに後続して、第2のピクチャー以外のピクチャー中に位置する下コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定し、下コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定したことに後続して、第2のピクチャー以外のピクチャー中に位置する左コロケートされたブロック(例えば、図8Bの現在ブロック800の左にあり、図8Bの現在ブロック800の下に最も近いブロック7 832)に対する動きベクトル情報が利用可能であるか否かを決定し、左コロケートされたブロックに対する動きベクトル情報が利用可能であることに基づいて、左コロケートされたブロックに対する動きベクトル情報を第2の動きベクトル予測子リストに追加するように構成されていてもよい。いくつかの例では、左コロケートされたブロック(例えば、ブロック7 832)の下境界は、第2のピクチャー中の第2のブロックの下境界と、第2のピクチャー以外のピクチャー中で、同じロケーションにある。
[0264]
処理回路は、第2の動きベクトル予測子リストに基づいて、第2のピクチャー中の第2のブロックをコード化するように構成されていてもよい(406)。1つの例として、第2の動きベクトル予測子リストに基づいて、第2のピクチャー中の第2のブロックをコード化するために、処理回路は、第2の動きベクトル予測子リストに基づいて、第2のピクチャー中の第2のブロックをデコードするように構成されていてもよい。第2のブロックをデコードするために、処理回路は、第2の動きベクトル予測子リスト中のエントリを示す情報を受け取り、エントリに基づいて、第2のブロックに対する動きベクトルを決定し、動きベクトルに基づいて、第2のブロックに対する予測ブロックを決定し、予測ブロックと、予測ブロックと第2のブロックとの間の差分を表す残差データを示す受け取られた情報とに基づいて、第2のブロックを再構築するように構成されていてもよい。別の例として、第2の動きベクトル予測子リストに基づいて、第2のピクチャー中の第2のブロックをコード化するために、処理回路は、第2の動きベクトル予測子リストに基づいて、第2のピクチャー中の第2のブロックをエンコードするように構成されていてもよい。第2のブロックをエンコードするために、処理回路は、第2のブロックに対する予測ブロックを決定し、予測ブロックを識別する第2のブロックに対する動きベクトルを決定し、動きベクトルに基づいて、第2の動きベクトル予測子リスト中のエントリを決定し、エントリを示す情報をシグナリングし、第2のブロックと予測ブロックとの間の差分を表す残差データを示す情報をシグナリングするように構成されていてもよい。
[0265]
以下は、本開示で説明している技法のいずれかとともにおよび/または組み合わせて実行してもよりいくつかの例示的な技法である。以下の例は、単なるいくつかの例であり、すべての例において限定的または必要なものとして見なされるべきではない。
[0266]
例1.ビデオデータをコード化する方法において、方法は、5つの空間候補と3つまでのコロケートされた時間候補とを含む動きベクトル予測子リストを構築することと、動きベクトル予測子リストを使用して、ビデオデータのブロックをコード化することとを含む。
[0267]
例2.動きベクトル予測子リストを構築することは、コロケートされた時間候補の利用可能性を検査する前に、空間候補の利用可能性を検査することを含む例1の方法。
[0268]
例3.5つの空間候補と3つのコロケートされた時間候補は、図8A中に示されているパターンで配置される例1の方法。
[0269]
例4.5つの空間候補と3つのコロケートされた時間候補は、図8B中に示されているパターンで位置する例1の方法。
[0270]
例5.5つの空間候補と3つのコロケートされた時間候補は、図8C中に示されているパターンで位置する例1の方法。
[0271]
例6.ブロックに対するコーディングモード、ブロックの区分のタイプ、または、ブロックのコーディング方向のうちの1つ以上に基づいて、5つの空間候補と3つのコロケートされた時間候補とを決定することをさらに含む例1の方法。
[0272]
例7.動きベクトル予測子リストを構築することは、コロケートされた時間候補の利用可能性を検査することと並行して、空間候補の利用可能性を検査することを含む例1の方法。
[0273]
例8.空間候補およびコロケートされた時間候補のそれぞれの位置の有効性を決定することと、有効であると決定された候補からの動き情報を動きベクトル予測子リストに追加することとをさらに含む例7の方法。
[0274]
例9.動きベクトル予測子リストを構築することは、ビデオデータのブロックのサイズに基づいて、動きベクトル予測子リストの最大有効サイズを決定することと、最大有効サイズに基づいて、動きベクトル予測子リストを構築することとを含む例1の方法。
[0275]
例10.例1~9の技法のいずれかの組み合わせの方法。
[0276]
例11.コード化することは、デコードすることを含む例1~10のいずれかの方法。
[0277]
例12.コード化することは、エンコードすることを含む例1~10のいずれかの方法。
[0278]
例13.ビデオデータをコード化するためのデバイスにおいて、デバイスが、例1~10のいずれかの方法を実行するための1つ以上の手段を具備する。
[0279]
例14.1つ以上の手段は、回路中で実現される1つ以上のプロセッサを備える例13のデバイス。
[0280]
例15.ビデオデータを記憶するメモリをさらに具備する例13および14のいずれかのデバイス。
[0281]
例16.デコードされたビデオデータを表示するように構成されているディスプレイをさらに具備する例13~15のいずれかの組み合わせのデバイス。
[0282]
例17.デバイスが、カメラ、コンピュータ、移動体デバイス、ブロードキャスト受信機デバイス、または、セットトップボックスのうちの1つ以上を具備する例13~16のいずれかの組み合わせのデバイス。
[0283]
例18.デバイスが、ビデオデコーダを具備する例13~17のいずれかの組み合わせのデバイス。
[0284]
例19.デバイスが、ビデオエンコーダを具備する例13~18のいずれかの組み合わせのデバイス。
[0285]
例20.実行されるときに、1つ以上のプロセッサに、例1~10のいずれかの方法を実行させる命令を記憶するコンピュータ読取可能記憶媒体。
[0286]
例21.本開示で説明している技法の任意の組み合わせ。
[0287]
例に依存して、ここで説明した技法のうちのいずれかのある動作またはイベントは、異なるシーケンスで実行でき、追加してもよく、マージしてもよく、または、完全に省略してもよい(例えば、説明した動作またはイベントのすべてが本技法の実施のために必要であるとは限らない)ことを認識されたい。さらに、ある例では、動作またはイベントは、シーケンシャルによりもむしろ、例えば、マルチスレッド処理、割り込み処理、または、複数のプロセッサを通して、同時に実行してもよい。
[0288]
1つ以上の例において、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、または、これらの任意の組み合わせで実現してもよい。ソフトウェアで実現される場合には、機能は、1つ以上の命令またはコードとしてコンピュータ読取可能媒体上に記憶されていてもよく、あるいは、1つ以上の命令またはコードとしてコンピュータ読取可能媒体上で送信されてもよく、ハードウェアベースの処理ユニットによって実行してもよい。コンピュータ読取可能媒体はまた、例えば、通信プロトコルにしたがって、コンピュータプログラムの1つの場所から別の場所への転送を容易にする何らかの媒体を含む通信媒体、または、データ記憶媒体のような有形の媒体に対応するコンピュータ読取可能記憶媒体を含んでいてもよい。このように、コンピュータ読取可能媒体は、一般的に、(1)有形コンピュータ読取可能記憶媒体、または、(2)信号または搬送波のような通信媒体に対応していてもよい。データ記憶媒体は、本開示で説明した技法を実現するための命令、コードおよび/またはデータ構造を取り出すために、1つ以上のコンピュータまたは1つ以上のプロセッサによってアクセスすることができる任意の利用可能な媒体であってもよい。コンピュータプログラム製品は、コンピュータ読取可能媒体を含んでいてもよい。
[0289]
限定ではなく例として、このようなコンピュータ読取可能記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD-ROMまたは他の光学ディスク記憶媒体、磁気ディスク記憶媒体または他の磁気記憶デバイス、フラッシュメモリ、あるいは、命令またはデータ構造の形態で望ましいプログラムコードを記憶するために使用され、コンピュータによってアクセスすることができる他の何らかの媒体を備えることができる。また、任意の接続は、コンピュータ読取可能媒体と適切に呼ばれる。例えば、命令が、ウェブサイトから、サーバから、あるいは、同軸ケーブル、光ファイバケーブル、撚り対、デジタル加入者線(DSL)、または、赤外線、無線、マイクロ波のようなワイヤレステクノロジーを使用している他の遠隔ソースから送信される場合、同軸ケーブル、光ファイバケーブル、撚り対、DSL、または、赤外線、無線およびマイクロ波のようなワイヤレステクノロジーは、媒体の規定に含まれる。しかしながら、コンピュータ読取可能記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または、他の一時的な媒体を含まないが、代わりに、非一時的な、有形の記憶媒体に向けられていることを理解すべきである。ここで使用するようなディスク(diskおよびdisc)は、コンパクトディスク(CD)、レーザーディスク(登録商標)、光ディスク、デジタル汎用ディスク(DVD)、フロッピー(登録商標)ディスク、および、ブルーレイ(登録商標)ディスクを含むが、通常、ディスク(disk)はデータを磁気的に再生する一方で、ディスク(disc)はデータをレーザにより光学的に再生する。上記の組み合わせも、コンピュータ読取可能媒体の範囲内に含むべきである。
[0290]
命令は、1つ以上のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または、他の同等な集積またはディスクリート論理回路のような1つ以上のプロセッサによって実行してもよい。したがって、ここで使用されるように、用語「プロセッサ」は、前述の構造、または、ここで説明した技術のインプリメンテーションに適した他の何らかの構造のいずれかを指していてもよい。加えて、いくつかの態様では、ここで説明した機能性は、エンコードおよびデコードするように構成されている専用のハードウェアおよび/またはソフトウェアモジュール内に提供してもよく、あるいは、組み合わされたコーデック中に組み込んでもよい。また、技法は、1つ以上の回路または論理エレメントにおいて、完全に実現することができる。
[0291]
本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(例えば、チップセット)を含む、幅広い種類のデバイスまたは装置において実施してもよい。さまざまなコンポーネント、モジュール、または、ユニットは、開示した技法を実行するように構成されているデバイスの機能的な態様を強調するためにここ説明しているが、それらは、異なるハードウェアユニットによる実現を必ずしも要求するわけではない。むしろ、上記で説明したように、さまざまなユニットは、コーデックハードウェアユニットにおいて組み合わされるか、または、適切なソフトウェアおよび/またはファームウェアとともに、上記で説明したような1つ以上のプロセッサを含む、相互動作可能ハードウェアユニットの集合によって提供されてもよい。
[0292]
さまざまな例を説明してきた。これらおよび他の例は、以下の特許請求の範囲の範囲内にある。

Claims (30)

  1. ビデオデータをコード化する方法において、
    左から右へのコーディング順序を有する第1のピクチャー中の第1のブロックに対して、第1の動きベクトル予測子リストを構築し、前記第1の動きベクトル予測子リスト中の第1のエントリは、前記第1のブロックに対する左隣接ブロックの動きベクトル情報に基づいていることと、
    前記第1の動きベクトル予測子リストに基づいて、前記第1のピクチャー中の前記第1のブロックをコード化することと、
    右から左へのコーディング順序を有する第2のピクチャー中の第2のブロックに対して、第2の動きベクトル予測子リストを構築し、前記第2の動きベクトル予測子リスト中の第1のエントリは、前記第2のブロックに対する右隣接ブロックの動きベクトル情報に基づいていることと、
    前記第2の動きベクトル予測子リストに基づいて、前記第2のピクチャー中の前記第2のブロックをコード化することとを含む方法。
  2. 前記第1の動きベクトル予測子リストを構築することは、動きベクトル情報の利用可能性に基づいて、
    前記左隣接ブロックの動きベクトル情報、
    上隣接ブロックの動きベクトル情報、
    右上隣接ブロックの動きベクトル情報、
    左下隣接ブロックの動きベクトル情報、
    左上隣接ブロックの動きベクトル情報、
    の順序で動きベクトル情報を有する前記第1の動きベクトル予測子リストを構築することを含む請求項1記載の方法。
  3. 前記第2の動きベクトル予測子リストを構築することは、動きベクトル情報の利用可能性に基づいて、
    前記右隣接ブロックの動きベクトル情報、
    上隣接ブロックの動きベクトル情報、
    左上隣接ブロックの動きベクトル情報、
    右下隣接ブロックの動きベクトル情報、
    右上隣接ブロックの動きベクトル情報、
    の順序で動きベクトル情報を有する前記第2の動きベクトル予測子リストを構築することを含む請求項1記載の方法。
  4. 前記第1のブロックに対する前記左隣接ブロックは、前記第1のブロックの下境界と同じである下境界を有する前記第1のブロックの左のブロックを含み、前記右隣接ブロックは、前記第2のブロックの下境界と同じである下境界を有する前記第2のブロックの右のブロックを含む請求項1記載の方法。
  5. 前記第1の動きベクトル予測子リストを構築することは、前記第1の動きベクトル予測子リストを構築するのに使用される複数の空間的に隣接するブロックに対する動きベクトル情報を並列に検査することを含む請求項1記載の方法。
  6. 前記第1の動きベクトル予測子リストを構築することは、
    前記第1のピクチャー以外のピクチャー中に位置する他の何らかのコロケートされたブロック中の動きベクトル情報が利用可能であるか否かを決定する前に、前記第1のピクチャー以外の前記ピクチャー中に位置する中央コロケートされたブロックに対する動きベクトル情報が利用可能であるか否かを決定することと、
    前記中央コロケートされたブロックに対する動きベクトル情報が利用可能であることに基づいて、前記中央コロケートされたブロックに対する動きベクトル情報を前記第1の動きベクトル予測子リストに追加することとを含む請求項1記載の方法。
  7. 前記第1の動きベクトル予測子リストを構築することは、
    前記第1のピクチャー以外のピクチャー中に位置する中央コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定することと、
    前記中央コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定したことに後続して、前記第1のピクチャー以外の前記ピクチャー中に位置する下コロケートされたブロックに対する動きベクトル情報が利用可能であるか否かを決定することと、
    前記下コロケートされたブロックに対する動きベクトル情報が利用可能であることに基づいて、前記下コロケートされたブロックに対する動きベクトル情報を前記第1の動きベクトル予測子リストに追加することとを含む請求項1記載の方法。
  8. 前記下コロケートされたブロックの右境界は、前記第1のピクチャー中の前記第1のブロックの右境界と、前記第1のピクチャー以外の前記ピクチャー中で、同じロケーションにある請求項7記載の方法。
  9. 前記第2の動きベクトル予測子リストを構築することは、
    前記第2のピクチャー以外のピクチャー中に位置する中央コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定することと、
    前記中央コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定したことに後続して、前記第2のピクチャー以外の前記ピクチャー中に位置する下コロケートされたブロックに対する動きベクトル情報が利用可能であるか否かを決定することと、
    前記下コロケートされたブロックに対する動きベクトル情報が利用可能であることに基づいて、前記下コロケートされたブロックに対する動きベクトル情報を前記第2の動きベクトル予測子リストに追加することとを含む請求項1記載の方法。
  10. 前記下コロケートされたブロックの左境界は、前記第2のピクチャー中の前記第2のブロックの左境界と、前記第2のピクチャー以外の前記ピクチャー中で、同じロケーションにある請求項9記載の方法。
  11. 前記第1の動きベクトル予測子リストを構築することは、
    前記第1のピクチャー以外のピクチャー中に位置する中央コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定することと、
    前記中央コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定したことに後続して、前記第1のピクチャー以外の前記ピクチャー中に位置する下コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定することと、
    前記下コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定したことに後続して、前記第1のピクチャー以外の前記ピクチャー中に位置する右コロケートされたブロックに対する動きベクトル情報が利用可能であるか否かを決定することと、
    前記右コロケートされたブロックに対する動きベクトル情報が利用可能であることに基づいて、前記右コロケートされたブロックに対する動きベクトル情報を前記第1の動きベクトル予測子リストに追加することとを含む請求項1記載の方法。
  12. 前記右コロケートされたブロックの下境界は、前記第1のピクチャー中の前記第1のブロックの下境界と、前記第1のピクチャー以外の前記ピクチャー中で、同じロケーションにある請求項11記載の方法。
  13. 前記第2の動きベクトル予測子リストを構築することは、
    前記第2のピクチャー以外のピクチャー中に位置する中央コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定することと、
    前記中央コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定したことに後続して、前記第2のピクチャー以外の前記ピクチャー中に位置する下コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定することと、
    前記下コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定したことに後続して、前記第2のピクチャー以外の前記ピクチャー中に位置する左コロケートされたブロックに対する動きベクトル情報が利用可能であるか否かを決定することと、
    前記左コロケートされたブロックに対する動きベクトル情報が利用可能であることに基づいて、前記左コロケートされたブロックに対する動きベクトル情報を前記第2の動きベクトル予測子リストに追加することとを含む請求項1記載の方法。
  14. 前記左コロケートされたブロックの下境界は、前記第2のピクチャー中の前記第2のブロックの下境界と、前記第2のピクチャー以外の前記ピクチャー中で、同じロケーションにある請求項13記載の方法。
  15. 前記第1の動きベクトル予測子リストを構築することは、しきい値サイズよりも大きいサイズを有する前記第1のブロックに基づいて、第1の最大サイズを有する前記第1の動きベクトル予測子リストを構築することを含み、
    前記方法は、
    前記しきい値サイズよりも小さいサイズを有する、前記第1のピクチャー中の第3のブロックに基づいて、前記第3のブロックに対して、前記第1の最大サイズよりも小さい第2の最大サイズを有する第3の動きベクトル予測子リストを構成することをさらに含む請求項1記載の方法。
  16. 前記第1の最大サイズは6に等しく、前記第2の最大サイズは4に等しく、前記しきい値サイズはNx4または4xNに等しく、Nは8以下である請求項15記載の方法。
  17. 前記第1の動きベクトル予測子リストに基づいて、前記第1のピクチャー中の前記第1のブロックをコード化することは、前記第1の動きベクトル予測子リストに基づいて、前記第1のピクチャー中の前記第1のブロックをデコードすることを含み、
    前記第1のブロックをデコードすることは、
    前記第1の動きベクトル予測子リスト中のエントリを示す情報を受け取ることと、
    前記エントリに基づいて、前記第1のブロックに対する動きベクトルを決定することと、
    前記動きベクトルに基づいて、前記第1のブロックに対する予測ブロックを決定することと、
    前記予測ブロックと、前記予測ブロックと前記第1のブロックとの間の差分を表す残差データを示す受け取られた情報とに基づいて、前記第1のブロックを再構築することとを含む請求項1記載の方法。
  18. 前記第1の動きベクトル予測子リストに基づいて、前記第1のピクチャー中の前記第1のブロックをコード化することは、前記第1の動きベクトル予測子リストに基づいて、前記第1のピクチャー中の前記第1のブロックをエンコードすることを含み、
    前記第1のブロックをエンコードすることは、
    前記第1のブロックに対する予測ブロックを決定することと、
    前記予測ブロックを識別する前記第1のブロックに対する動きベクトルを決定することと、
    前記動きベクトルに基づいて、前記第1の動きベクトル予測子リスト中のエントリを決定することと、
    前記エントリを示す情報をシグナリングすることと、
    前記第1のブロックと前記予測ブロックとの間の差分を表す残差データを示す情報をシグナリングすることとを含む請求項1記載の方法。
  19. ビデオデータをコード化するためのデバイスにおいて、
    動きベクトル情報を記憶するように構成されているメモリと、
    前記メモリに結合されている処理回路とを具備し、
    前記処理回路は、
    左から右へのコーディング順序を有する第1のピクチャー中の第1のブロックに対して、第1の動きベクトル予測子リストを構築し、前記第1の動きベクトル予測子リスト中の第1のエントリは、前記メモリ中に記憶されている前記第1のブロックに対する左隣接ブロックの動きベクトル情報に基づいているようにと、
    前記第1の動きベクトル予測子リストに基づいて、前記第1のピクチャー中の前記第1のブロックをコード化するようにと、
    右から左へのコーディング順序を有する第2のピクチャー中の第2のブロックに対して、第2の動きベクトル予測子リストを構築し、前記第2の動きベクトル予測子リスト中の第1のエントリは、前記メモリ中に記憶されている前記第2のブロックに対する右隣接ブロックの動きベクトル情報に基づいているようにと、
    前記第2の動きベクトル予測子リストに基づいて、前記第2のピクチャー中の前記第2のブロックをコード化するように構成されているデバイス。
  20. 前記第1の動きベクトル予測子リストを構築するために、前記処理回路は、動きベクトル情報の利用可能性に基づいて、
    前記左隣接ブロックの動きベクトル情報、
    上隣接ブロックの動きベクトル情報、
    右上隣接ブロックの動きベクトル情報、
    左下隣接ブロックの動きベクトル情報、
    左上隣接ブロックの動きベクトル情報、
    の順序で動きベクトル情報を有する前記第1の動きベクトル予測子リストを構築するように構成されている請求項19記載のデバイス。
  21. 前記第2の動きベクトル予測子リストを構築するために、前記処理回路は、動きベクトル情報の利用可能性に基づいて、
    前記右隣接ブロックの動きベクトル情報、
    上隣接ブロックの動きベクトル情報、
    左上隣接ブロックの動きベクトル情報、
    右下隣接ブロックの動きベクトル情報、
    右上隣接ブロックの動きベクトル情報、
    の順序で動きベクトル情報を有する前記第2の動きベクトル予測子リストを構築するように構成されている請求項19記載のデバイス。
  22. 前記第1のブロックに対する前記左隣接ブロックは、前記第1のブロックの下境界と同じである下境界を有する前記第1のブロックの左のブロックを含み、前記右隣接ブロックは、前記第2のブロックの下境界と同じである下境界を有する前記第2のブロックの右のブロックを含む請求項19記載のデバイス。
  23. 前記第1の動きベクトル予測子リストを構築するために、前記処理回路は、前記第1の動きベクトル予測子リストを構築するのに使用される複数の空間的に隣接するブロックに対する動きベクトル情報を並列に検査するように構成されている請求項19記載のデバイス。
  24. 前記第1の動きベクトル予測子リストを構築するために、前記処理回路は、
    前記第1のピクチャー以外のピクチャー中に位置する他の何らかのコロケートされたブロック中の動きベクトル情報が利用可能であるか否かを決定する前に、前記第1のピクチャー以外の前記ピクチャー中に位置する中央コロケートされたブロックに対する動きベクトル情報が利用可能であるか否かを決定するようにと、
    前記中央コロケートされたブロックに対する動きベクトル情報が利用可能であることに基づいて、前記中央コロケートされたブロックに対する動きベクトル情報を前記第1の動きベクトル予測子リストに追加するように構成されている請求項19記載のデバイス。
  25. 前記第1の動きベクトル予測子リストを構築するために、前記処理回路は、
    前記第1のピクチャー以外のピクチャー中に位置する中央コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定するようにと、
    前記中央コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定したことに後続して、前記第1のピクチャー以外の前記ピクチャー中に位置する下コロケートされたブロックに対する動きベクトル情報が利用可能であるか否かを決定するようにと、
    前記下コロケートされたブロックに対する動きベクトル情報が利用可能であることに基づいて、前記下コロケートされたブロックに対する動きベクトル情報を前記第1の動きベクトル予測子リストに追加するように構成され、
    前記下コロケートされたブロックの右境界は、前記第1のピクチャー中の前記第1のブロックの右境界と、前記第1のピクチャー以外の前記ピクチャー中で、同じロケーションにある請求項19記載のデバイス。
  26. 前記第2の動きベクトル予測子リストを構築するために、前記処理回路は、
    前記第2のピクチャー以外のピクチャー中に位置する中央コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定するようにと、
    前記中央コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定したことに後続して、前記第2のピクチャー以外の前記ピクチャー中に位置する下コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定するようにと、
    前記下コロケートされたブロックに対する動きベクトル情報が利用可能でないことを決定したことに後続して、前記第2のピクチャー以外の前記ピクチャー中に位置する左コロケートされたブロックに対する動きベクトル情報が利用可能であるか否かを決定するようにと、
    前記左コロケートされたブロックに対する動きベクトル情報が利用可能であることに基づいて、前記左コロケートされたブロックに対する動きベクトル情報を前記第2の動きベクトル予測子リストに追加するように構成され、
    前記左コロケートされたブロックの下境界は、前記第2のピクチャー中の前記第2のブロックの下境界と、前記第2のピクチャー以外の前記ピクチャー中で、同じロケーションにある請求項19記載のデバイス。
  27. 前記第1の動きベクトル予測子リストを構築するために、前記処理回路は、しきい値サイズよりも大きいサイズを有する前記第1のブロックに基づいて、第1の最大サイズを有する前記第1の動きベクトル予測子リストを構築するように構成され、
    前記処理回路は、前記しきい値サイズよりも小さいサイズを有する、前記第1のピクチャー中の第3のブロックに基づいて、前記第3のブロックに対して、前記第1の最大サイズよりも小さい第2の最大サイズを有する第3の動きベクトル予測子リストを構成するように構成されている請求項19記載のデバイス。
  28. 前記第1の最大サイズは6に等しく、前記第2の最大サイズは4に等しく、前記しきい値サイズはNx4または4xNに等しく、Nは8以下である請求項27記載のデバイス。
  29. 前記デバイスは、ワイヤレス通信デバイスを備える請求項19記載のデバイス。
  30. 命令を記憶するコンピュータ読取可能記憶媒体において、
    前記命令は、実行されるとき、1つ以上のプロセッサに、
    左から右へのコーディング順序を有する第1のピクチャー中の第1のブロックに対して、第1の動きベクトル予測子リストを構築させ、前記第1の動きベクトル予測子リスト中の第1のエントリは、前記第1のブロックに対する左隣接ブロックの動きベクトル情報に基づいており、
    前記第1の動きベクトル予測子リストに基づいて、前記第1のピクチャー中の前記第1のブロックをコード化させ、
    右から左へのコーディング順序を有する第2のピクチャー中の第2のブロックに対して、第2の動きベクトル予測子リストを構築させ、前記第2の動きベクトル予測子リスト中の第1のエントリは、前記第2のブロックに対する右隣接ブロックの動きベクトル情報に基づいており、
    前記第2の動きベクトル予測子リストに基づいて、前記第2のピクチャー中の前記第2のブロックをコード化させるコンピュータ読取可能記憶媒体。

JP2021531233A 2018-12-06 2019-12-06 ビデオコード化に対する空間-時間動きベクトル予測パターン Pending JP2022511809A (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862776373P 2018-12-06 2018-12-06
US62/776,373 2018-12-06
US16/704,827 US11122288B2 (en) 2018-12-06 2019-12-05 Spatio-temporal motion vector prediction patterns for video coding
US16/704,827 2019-12-05
PCT/US2019/064953 WO2020118191A1 (en) 2018-12-06 2019-12-06 Spatio-temporal motion vector prediction patterns for video coding

Publications (2)

Publication Number Publication Date
JP2022511809A true JP2022511809A (ja) 2022-02-01
JPWO2020118191A5 JPWO2020118191A5 (ja) 2022-11-15

Family

ID=70971310

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021531233A Pending JP2022511809A (ja) 2018-12-06 2019-12-06 ビデオコード化に対する空間-時間動きベクトル予測パターン

Country Status (9)

Country Link
US (1) US11122288B2 (ja)
EP (1) EP3891988A1 (ja)
JP (1) JP2022511809A (ja)
KR (1) KR20210091190A (ja)
CN (1) CN113170185B (ja)
BR (1) BR112021009732A2 (ja)
SG (1) SG11202104366WA (ja)
TW (1) TW202038614A (ja)
WO (1) WO2020118191A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020141914A1 (ko) * 2019-01-01 2020-07-09 엘지전자 주식회사 히스토리 기반 모션 벡터 예측을 기반으로 비디오 신호를 처리하기 위한 방법 및 장치
US11166015B2 (en) * 2019-03-06 2021-11-02 Tencent America LLC Method and apparatus for video coding
US11451809B2 (en) * 2019-08-28 2022-09-20 Tencent America LLC Method and apparatus for video coding
EP4032297A4 (en) * 2019-09-19 2022-11-23 Alibaba Group Holding Limited METHODS FOR CONSTRUCTING A LIST OF MERGER CANDIDATES
WO2023025178A1 (en) * 2021-08-24 2023-03-02 Beijing Bytedance Network Technology Co., Ltd. Method, apparatus, and medium for video processing
WO2023097019A1 (en) * 2021-11-23 2023-06-01 Beijing Dajia Internet Information Technology Co., Ltd. Methods and devices for candidate derivation for affine merge mode in video coding
WO2023109899A1 (en) * 2021-12-15 2023-06-22 FG Innovation Company Limited Device and method for coding video data

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010029850A1 (ja) * 2008-09-09 2010-03-18 日本電気株式会社 画像符号化装置、画像復号化装置、画像符号化方法、画像復号化方法、及びそのプログラム
JP2011217082A (ja) * 2010-03-31 2011-10-27 Jvc Kenwood Corp 画像符号化装置、画像符号化方法、画像符号化プログラム、画像復号装置、画像復号方法及び画像復号プログラム
US20130107964A1 (en) * 2011-10-28 2013-05-02 Panasonic Corporation Image coding method, image decoding method, image coding apparatus, and image decoding apparatus
WO2013108631A1 (ja) * 2012-01-18 2013-07-25 株式会社Jvcケンウッド 動画像符号化装置、動画像符号化方法及び動画像符号化プログラム、並びに動画像復号装置、動画像復号方法及び動画像復号プログラム
US20160105681A1 (en) * 2011-06-27 2016-04-14 Samsung Electronics Co., Ltd. Method and apparatus for encoding motion information, and method and apparatus for decoding same
US20170347117A1 (en) * 2011-11-04 2017-11-30 Nokia Technologies Oy Method for coding and an apparatus
US20180103265A1 (en) * 2011-02-09 2018-04-12 Lg Electronics Inc. Method for encoding and decoding image and device using same

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10412387B2 (en) * 2014-08-22 2019-09-10 Qualcomm Incorporated Unified intra-block copy and inter-prediction
US11477477B2 (en) * 2015-01-26 2022-10-18 Qualcomm Incorporated Sub-prediction unit based advanced temporal motion vector prediction

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010029850A1 (ja) * 2008-09-09 2010-03-18 日本電気株式会社 画像符号化装置、画像復号化装置、画像符号化方法、画像復号化方法、及びそのプログラム
JP2011217082A (ja) * 2010-03-31 2011-10-27 Jvc Kenwood Corp 画像符号化装置、画像符号化方法、画像符号化プログラム、画像復号装置、画像復号方法及び画像復号プログラム
US20180103265A1 (en) * 2011-02-09 2018-04-12 Lg Electronics Inc. Method for encoding and decoding image and device using same
US20160105681A1 (en) * 2011-06-27 2016-04-14 Samsung Electronics Co., Ltd. Method and apparatus for encoding motion information, and method and apparatus for decoding same
US20130107964A1 (en) * 2011-10-28 2013-05-02 Panasonic Corporation Image coding method, image decoding method, image coding apparatus, and image decoding apparatus
US20170347117A1 (en) * 2011-11-04 2017-11-30 Nokia Technologies Oy Method for coding and an apparatus
WO2013108631A1 (ja) * 2012-01-18 2013-07-25 株式会社Jvcケンウッド 動画像符号化装置、動画像符号化方法及び動画像符号化プログラム、並びに動画像復号装置、動画像復号方法及び動画像復号プログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JOEL JUNG AND GUILLAUME LAROCHE: "ITU - Telecommunications Standardization Sector STUDY GROUP 16 Question 6 Video Coding Experts Group", COMPETITION-BASED SCHEME FOR MOTION VECTOR SELECTION AND CODING, vol. VCEG-AC06, JPN6020001352, July 2006 (2006-07-01), pages 1 - 7, ISSN: 0005165664 *

Also Published As

Publication number Publication date
EP3891988A1 (en) 2021-10-13
KR20210091190A (ko) 2021-07-21
CN113170185A (zh) 2021-07-23
TW202038614A (zh) 2020-10-16
US20200186825A1 (en) 2020-06-11
WO2020118191A1 (en) 2020-06-11
CN113170185B (zh) 2024-05-28
BR112021009732A2 (pt) 2021-08-17
SG11202104366WA (en) 2021-06-29
US11122288B2 (en) 2021-09-14

Similar Documents

Publication Publication Date Title
JP7367018B2 (ja) 履歴ベースの動きベクトル予測の簡略化
US11172229B2 (en) Affine motion compensation with low bandwidth
JP7000565B2 (ja) ビデオコーディングのためのアフィン予測動き情報をコーディングすること
CN113196749B (zh) 用于译码视频数据的方法和设备
JP6783788B2 (ja) ビデオコーディングにおけるサブブロックの動き情報の導出
US20200112715A1 (en) History-based motion vector prediction for inter prediction coding
JP2021534627A (ja) 分類を有する履歴ベース候補リスト
JP2022504073A (ja) 履歴ベースの動きベクトル予測子の改善
JP2022507683A (ja) デコーダ側動きベクトル改良
JP2022533664A (ja) ビデオコーディングのためのマージモードコーディング
JP7474774B2 (ja) ビデオコーディングにおけるイントラブロックコピーモードのための動きベクトル予測子リスト生成
JP2022510297A (ja) ビデオコーディングのための三角形動き情報
JP6855242B2 (ja) ビデオコーディングのためのディスパリティベクトルおよび/または高度残差予測
CN113170185B (zh) 用于视频译码的空间-时间运动向量预测模式
JP2022538061A (ja) ビデオコーディングのための組み合わされたインターおよびイントラ予測モード
JP7379391B2 (ja) シグナリングサブ予測ユニット動きベクトル予測子
JP2015514340A (ja) ビデオコード化における視差ベクトル予測
US20200260107A1 (en) Virtual pipeline data unit design for intra block copy mode for video coding
US11064192B2 (en) Simplification of spatial-temporal motion vector prediction
JP2022539005A (ja) ビデオコーディングにおける時間動きベクトル予測候補の導出

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221107

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221107

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20230104

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231003

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231226

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240213