本文書は、様々な変更を加えることができ、様々な実施例を有し得るところ、特定実施例を図面に例示して詳細に説明する。ただし、これは、本文書の実施例を特定の実施例に限定しようとするものではない。本明細書で常用する用語は、特定の実施例を説明するために使われるだけで、本文書の技術的思想を限定する意図で使われるものではない。単数の表現は、文脈において別に断らない限り、複数の表現をも含む。本明細書において、「含む」または「有する」などの用語は、明細書上に記載された特徴、数字、段階、動作、構成要素、部品またはそれらを組み合わせたものが存在することを指定するためのものであり、1つもしくは複数の他の特徴、数字、段階、動作、構成要素、部品またはそれらを組み合わせたものの存在または付加の可能性を予め排除しないものとして理解されるべきである。
一方、本文書で説明される図面上の各構成は、それぞれ異なる特徴的な機能に関する説明の便宜のために独立して示すものであり、各構成が互いに別個のハードウェアや別個のソフトウェアとして具現されることを意味するものではない。例えば、各構成のうちの2つ以上の構成が合わせられて一つの構成をなしてもよく、一つの構成が複数の構成に分けられてもよい。各構成が統合および/または分離された実施例も、本文書の本質から逸脱しない限り、本文書の権利範囲に含まれる。
以下、添付の図面を参照して、本文書の好ましい実施例をより詳細に説明する。以下、図面上の同一の構成要素には同一の参照符号を付し、同一の構成要素について重複する説明は省略する。
図1には、本文書の実施例が適用可能なビデオ/映像コーディングシステムの例を概略的に示す。
図1を参照すると、ビデオ/映像コーディングシステムは、第1装置(デバイス)(ソースデバイス)および第2装置(受信デバイス)を含むことができる。ソースデバイスは、エンコードされたビデオ(video)/映像(image)情報またはデータをファイルまたはストリーミングの形態でデジタル記憶媒体またはネットワークを介して受信デバイスに伝達することができる。
上記ソースデバイスは、ビデオソース、エンコード(エンコーディング)装置、送信部を含むことができる。上記受信デバイスは、受信部、デコード(デコーディング)装置およびレンダラを含むことができる。上記エンコード装置は、ビデオ/映像エンコード装置と呼ばれてもよく、上記デコード装置は、ビデオ/映像デコード装置と呼ばれてもよい。送信器(機)は、エンコード装置に含まれてよい。受信器(機)は、デコード装置に含まれてよい。レンダラは、ディスプレイ部を含むこともでき、ディスプレイ部は、別個のデバイスまたは外部コンポーネントとして構成されてもよい。
ビデオソースは、ビデオ/映像のキャプチャ、合成または生成過程(処理、プロセス、process)などによってビデオ/映像を取得できる。ビデオソースは、ビデオ/映像キャプチャデバイスおよび/またはビデオ/映像生成デバイスを含むことができる。ビデオ/映像キャプチャデバイスは、例えば、1つまたは複数のカメラ、以前にキャプチャされたビデオ/映像を含むビデオ/映像アーカイブなどを含むことができる。ビデオ/映像生成デバイスは、例えば、コンピュータ、タブレットおよびスマートフォンなどを含むことができ、(電子的に)ビデオ/映像を生成することができる。例えば、コンピュータなどによって仮想のビデオ/映像が生成されてよく、この場合、関連データが生成される過程でビデオ/映像のキャプチャ過程に代えてよい。
エンコード装置は、入力ビデオ/映像をエンコードすることができる。エンコード装置は、圧縮およびコーディング効率のために予測、変換、量子化などの一連の手順を行うことができる。エンコードされたデータ(エンコードされたビデオ/映像情報)は、ビットストリーム(bitstream)の形態で出力されてよい。
送信部は、ビットストリームの形態で出力されたエンコードされたビデオ/映像情報またはデータをファイルまたはストリーミングの形態で、デジタル記憶媒体またはネットワークを介して受信デバイスの受信部に伝達することができる。デジタル記憶媒体は、USB、SD、CD、DVD、ブルーレイ、HDD、SSDなどの様々な記憶媒体を含むことができる。送信部は、予め定められたファイルフォーマットによってメディアファイルを生成するためのエレメントを含むことができ、放送/通信ネットワークを介した伝送のためのエレメントを含むことができる。受信部は、上記ビットストリームを受信/抽出してデコード装置に伝達できる。
デコード装置は、エンコード装置の動作に対応する逆量子化、逆変換、予測などの一連の手順を行ってビデオ/映像をデコードすることができる。
レンダラは、デコードされたビデオ/映像をレンダリング(レンダー)することができる。レンダリングされたビデオ/映像は、ディスプレイ部で表示(ディスプレイされ)されてよい。
この文書は、ビデオ/映像コーディングに関する。例えば、この文書に開示の方法/実施例は、VVC(Versatile Video Coding)標準、EVC(Essential Video Coding)標準、AV1(AOMedia Video 1)標準、AVS2(2nd Generation of Audio Video coding Standard)または次世代ビデオ/映像コーディング標準(例えば、H.267またはH.268など)に開示される方法に適用されてよい。
この文書では、ビデオ/映像コーディングに関する様々な実施例を提示し、特に言及がない限り、上記実施例は互いに組み合わせられて行われてもよい。
この文書において、ビデオ(video)は、時間の流れによる一連の映像(image)の集合を意味できる。ピクチャ(picture)は、一般に、特定の時間帯の1つの映像を表す単位を意味し、サブピクチャ(subpicture)/スライス(slice)/タイル(tile)は、コーディングにおいてピクチャの一部を構成する単位である。サブピクチャ/スライス/タイルは、1つまたは複数のCTU(Coding Tree Unit)を含むことができる。1つのピクチャは、1つまたは複数のサブピクチャ/スライス/タイルで構成されてよい。1つのピクチャは、1つまたは複数のタイルグループで構成されてよい。1つのタイルグループは、1つまたは複数のタイルを含むことができる。ブリックは、ピクチャのタイル内でCTU行の四角領域を表すことができる。タイルは、複数のブリックにパーティショニングされてよく、各ブリック(brick)は、上記タイル内で1つまたは複数のCTU行で構成されてよい。複数のブリックにパーティショニングされていないタイルもブリックと呼ぶことができる。ブリックスキャンは、ピクチャをパーティショニングするCTUの特定のシーケンシャル(順次的)オーダリングを表すことができ、これらのCTUは、ブリック内でCTUラスタスキャンで整列されてよく、タイル内のブリックは、上記タイルの上記ブリックのラスタスキャンで連続して整列されてよく、そしてピクチャ内のタイルは、上記ピクチャの上記タイルのラスタスキャンで連続して整列されてよい。また、サブピクチャは、ピクチャ内の1つまたは複数のスライスの四角領域を表すことができる。すなわち、サブピクチャは、ピクチャの長方形の領域をまとめてカバーする1つまたは複数のスライスを含むことができる。タイルは、ピクチャにおいて特定タイル行および特定タイル列以内のCTUの四角領域である。上記タイル列は、CTUの四角領域であり、上記四角領域は、上記ピクチャの高さと同じ高さを有し、幅は、ピクチャパラメータセット内のシンタックス要素によって明示されてよい。上記タイル行は、CTUの四角領域であり、上記四角領域は、ピクチャパラメータセット内のシンタックス要素によって明示される幅を有し、高さは、上記ピクチャの高さと同一であってよい。タイルスキャンは、ピクチャをパーティショニングするCTUの特定のシーケンシャルオーダリングを表すことができ、上記CTUは、タイル内にCTUラスタスキャンで連続して整列されてよく、ピクチャ内のタイルは、上記ピクチャの上記タイルのラスタスキャンで連続して整列されてよい。スライスは、ピクチャの整数個のブリックを含むことができ、上記整数個のブリックは、単一NALユニットに含まれてよい。スライスは、複数の完全なタイルで構成されてよく、または1つのタイルの完全なブリックの連続したシーケンスであってよい。この文書において、タイルグループとスライスとは、同じ意味で使われてよい。例えば、本文書において、タイルグループ/タイルグループヘッダは、スライス/スライスヘッダと呼ばれてよい。
ピクセル(pixel)またはPEL(Pel)は、1つのピクチャ(または、映像)を構成する最小の単位を意味できる。また、ピクセルに対応する用語として「サンプル(sample)」が使われてよい。サンプルは、一般に、ピクセルまたはピクセルの値を表すことができ、ルマ(luma)成分のピクセル/ピクセル値のみを表してもよく、クロマ(chroma)成分のピクセル/ピクセル値のみを表してもよい。
ユニット(unit)は、映像処理の基本単位を表すことができる。ユニットは、ピクチャの特定領域および当該領域に関連する情報のうちの少なくとも一つを含むことができる。1つのユニットは、1つのルマブロックおよび2つのクロマ(例えば、cb,cr)ブロックを含むことができる。ユニットは、場合によってブロック(block)または領域(area)などの用語と同じ意味で使われてよい。一般の場合、MxNブロックは、M個の列およびN個の行からなるサンプル(または、サンプルアレイ)または変換係数(transform coefficient)の集合(または、アレイ)を含むことができる。
本明細書において、「AまたはB(A or B)」は、「Aのみ」、「Bのみ」または「AおよびBの両方」を意味できる。言い換えると、本明細書において「AまたはB(A or B)」は、「Aおよび/またはB(A and/or B)」と解釈できる。例えば、本明細書において「A、BまたはC(A,B or C)」は、「Aのみ」、「Bのみ」、「Cのみ」、または「A、BおよびCの任意の全ての組合せ(any combination of A,B and C)」を意味できる。
本明細書で使われるスラッシュ(/)やコンマ(comma)は、「および/または(and/or)」を意味できる。例えば、「A/B」は、「Aおよび/またはB」を意味できる。したがって、「A/B」は、「Aのみ」、「Bのみ」、または「AおよびBの両方」を意味できる。例えば、「A、B、C」は、「A、BまたはC」を意味できる。
本明細書において「AおよびBのうちの少なくとも一つ(at least one of A and B)」は、「Aのみ」、「Bのみ」または「AおよびBの両方」を意味できる。また、本明細書において「AまたはBのうちの少なくとも一つ(at least one of A or B)」や「Aおよび/またはBのうちの少なくとも一つ(at least one of A and/or B)」という表現は、「AおよびBのうちの少なくとも一つ(at least one of A and B)」と同一に解釈されてよい。
また、本明細書において「A、BおよびCのうちの少なくとも一つ(at least one of A,B and C)」は、「Aのみ」、「Bのみ」、「Cのみ」、または「A、BおよびCの任意の全ての組合せ(any combination of A,B and C)」を意味できる。また、「A、BまたはCのうちの少なくとも一つ(at least one of A,B or C)」や「A、Bおよび/またはCのうちの少なくとも一つ(at least one of A,B and/or C)」は、「A、BおよびCのうちの少なくとも一つ(at least one of A,B and C)」を意味できる。
また、本明細書で使われる括弧は、「例えば(for example)」を意味できる。具体的には、「予測(イントラ予測)」と表示された場合に、「予測」の一例として「イントラ予測」が提案されたものであってよい。言い換えると、本明細書における「予測」は、「イントラ予測」に制限(limit)されず、「イントラ予測」が「予測」の一例として提案されたものであろう。また、「予測(すなわち、イントラ予測)」と表示された場合にも、「予測」の一例として「イントラ予測」が提案されたものであろう。
本明細書において、1つの図面で個別に説明される技術的特徴は、個別に具現されてもよく、同時に具現されてもよい。
以下の図面は、本明細書の具体的な一例を説明するために作成されたものである。図面に記載された具体的な装置の名称または具体的な信号/メッセージ/フィールドの名称は、例示的に提示されたものであり、本明細書の技術的特徴は、以下の図面における具体的な名称に制限されない。
図2は、本文書の実施例が適用可能なビデオ/映像エンコード装置の構成を概略的に説明する図である。以下、ビデオエンコード装置は、映像エンコード装置を含むことができる。
図2を参照すると、エンコード装置200は、映像分割部(image partitioner,210)、予測部(predictor,220)、残差処理部(residual processor,230)、エントロピ符号化(エンコーディング)部(entropy encoder,240)、加算部(adder,250)、フィルタリング部(filter,260)およびメモリ(memory,270)を含んで構成されてよい。予測部220は、インター予測部221およびイントラ予測部222を含むことができる。残差処理部230は、変換部(transformer,232)、量子化部(quantizer233)、逆量子化部(dequantizer,234)、逆変換部(inverse transformer,235)を含むことができる。残差処理部230は、減算部(subtractor,231)をさらに含むことができる。加算部250は、復元部(reconstructor)または復元ブロック生成部(reconstructed block generator)と呼ばれてもよい。上述した映像分割部210、予測部220、残差処理部230、エントロピ符号化部240、加算部250およびフィルタリング部260は、実施例によって1つまたは複数のハードウェアコンポーネント(例えば、エンコーダチップセットまたはプロセッサ)によって構成されてよい。また、メモリ270は、DPB(Decoded Picture Buffer)を含むことができ、デジタル記憶媒体によって構成されてもよい。上記ハードウェアコンポーネントは、メモリ270を内/外部コンポーネントとしてさらに含むこともできる。
映像分割部210は、エンコード装置200に入力された入力映像(または、ピクチャ、フレーム)を1つまたは複数の処理ユニット(processing unit)に分割することができる。一例として、上記処理ユニットは、コーディングユニット(Coding Unit,CU)と呼ぶことができる。この場合、コーディングユニットは、コーディングツリーユニット(Coding Tree Unit,CTU)または最大コーディングユニット(Largest Coding Unit,LCU)からQTBTTT(Quad-Tree Binary-Tree Ternary-Tree)構造によって再帰的に(recursively)分割されてよい。例えば、1つのコーディングユニットは、四分木(クアッドツリー)構造、二分木(バイナリツリー)構造、および/または三分木(タナーリー)構造に基づいて下位(deeper)デプスの複数のコーディングユニットに分割されてよい。この場合、例えば、四分木構造が先に適用され、二分木構造および/または三分木構造が後で適用されてよい。あるいは、二分木構造が先に適用されてもよい。それ以上分割されない最終コーディングユニットに基づいて、本文書によるコーディング手順が行われてよい。この場合、映像特性によるコーディング効率などに基づいて、最大コーディングユニットが直ちに最終コーディングユニットとして用いられてよく、または、必要によってコーディングユニットは、再帰的に(recursively)さらに下位デプスのコーディングユニットに分割され、最適なサイズのコーディングユニットが最終コーディングユニットとして用いられてよい。ここで、コーディング手順とは、後述する予測、変換、および復元などの手順を含むことができる。他の例として、上記処理ユニットは、予測ユニット(PU:Prediction Unit)または変換ユニット(TU:Transform Unit)をさらに含むことができる。この場合、上記予測ユニットおよび上記変換ユニットは、それぞれ、上述した最終コーディングユニットから分割またはパーティショニングされてよい。上記予測ユニットは、サンプル予測の単位であってよく、上記変換ユニットは、変換係数を導出(誘導)する単位および/または変換係数から残差信号(residual signal)を導出する単位であってよい。
ユニットは、場合によって、ブロック(block)または領域(area)などの用語と同じ意味で使われてよい。一般の場合、MxNブロックは、M個の列およびN個の行からなるサンプルまたは変換係数(transform coefficient)の集合を表すことができる。サンプルは、一般に、ピクセルまたはピクセルの値を表すことができ、輝度(luma)成分のピクセル/ピクセル値のみを表すこともでき、彩度(chroma)成分のピクセル/ピクセル値のみを表すこともできる。サンプルは、ピクセル(pixel)またはペル(pel)に対する1つのピクチャ(または、映像)に対応する用語として使われてよい。
エンコード装置200は、入力映像信号(オリジナル(原本)ブロック、オリジナルサンプルアレイ)から、インター予測部221またはイントラ予測部222から出力された予測信号(予測ブロック、予測サンプルアレイ)を減算して残差信号(residual signal;残差(残余)ブロック、残差サンプルアレイ)を生成でき、生成された残差信号は、変換部232に伝送される。この場合、図示のようにエンコード装置200において、入力映像信号(オリジナルブロック、オリジナルサンプルアレイ)から予測信号(予測ブロック、予測サンプルアレイ)を減算するユニットは、減算部231と呼ばれてよい。予測部は、処理対象ブロック(以下、現ブロックという)に対する予測を行い、上記現ブロックに対する予測サンプルを含む予測ブロック(predicted block)を生成できる。予測部は、現ブロックまたはCU単位でイントラ予測が適用されるかまたはインター予測が適用されるかを決定できる。予測部は、各予測モードに関する説明で後述するように、予測モード情報などの予測に関する様々な情報を生成してエントロピ符号化部240に伝達できる。予測に関する情報は、エントロピ符号化部240でエンコードされてビットストリームの形態で出力されてよい。
イントラ予測部222は、現ピクチャ内のサンプルを参照して現ブロックを予測できる。上記参照されるサンプルは、予測モードによって、上記現ブロックの周辺(neighbor)に位置してよく、離れて位置してもよい。イントラ予測において予測モードは、複数の非方向性モードおよび複数の方向性モードを含むことができる。非方向性モードは、例えば、DCモードおよび平面(プレーナー)モード(Planar mode)を含むことができる。方向性モードは、予測方向の細密な程度によって、例えば33個の方向性予測モードまたは65個の方向性予測モードを含むことができる。ただし、これは例示であり、設定によってそれ以上またはそれ以下の個数の方向性予測モードが用いられてもよい。イントラ予測部222は、周辺ブロックに適用された予測モードを用いて、現ブロックに適用される予測モードを決定することもできる。
インター予測部221は、参照ピクチャ上で動きベクトルによって特定される参照ブロック(参照サンプルアレイ)に基づいて、現ブロックに対する予測ブロックを導出することができる。このとき、インター予測モードで伝送される動き情報の量を減らすために、周辺ブロックと現ブロックとの間の動き情報の相関性に基づき、動き情報をブロック、サブブロックまたはサンプル単位で予測できる。上記動き情報は、動きベクトルおよび参照ピクチャインデックスを含むことができる。上記動き情報は、インター予測方向情報(L0予測、L1予測、Bi予測など)をさらに含むことができる。インター予測において、周辺ブロックは、現ピクチャ内に存在する空間周辺ブロック(spatial neighboring block)と、参照ピクチャに存在する時間周辺ブロック(temporal neighboring block)と、を含むことができる。上記参照ブロックを含む参照ピクチャと上記時間周辺ブロックを含む参照ピクチャとは、同一であってもよく、異なってもよい。上記時間周辺ブロックは、コロケート(同一位置)参照ブロック(collocated reference block)、コロケートCU(colCU)などと呼ぶこともでき、上記時間周辺ブロックを含む参照ピクチャは、コロケートピクチャ(collocated picture,colPic)と呼ぶこともできる。例えば、インター予測部221は、周辺ブロックに基づいて動き情報候補リストを構成し、上記現ブロックの動きベクトルおよび/または参照ピクチャインデックスを導出するためにどの候補が用いられるかを指示する情報を生成することができる。様々な予測モードに基づいてインター予測が行われてよく、例えば、スキップモードおよびマージモードでは、インター予測部221は、周辺ブロックの動き情報を現ブロックの動き情報として用いることができる。スキップモードでは、マージモードとは違い、残差信号が伝送されなくてよい。動き情報予測(Motion Vector Prediction,MVP)モードでは、周辺ブロックの動きベクトルを動きベクトル予測子(motion vector predictor)として用い、動きベクトル差分(motion vector difference)をシグナリングすることによって現ブロックの動きベクトルを指示することができる。
予測部220は、後述する様々な予測方法に基づいて予測信号を生成できる。例えば、予測部は、1つのブロックに対する予測のためにイントラ予測またはインター予測を適用できる他に、イントラ予測とインター予測とを同時に適用することもできる。これをCIIP(Combined Inter and Intra Prediction)と呼ぶことができる。また、予測部は、ブロックに対する予測のためにイントラブロックコピー(Intra Block Copy,IBC)予測モードに基づいてもよく、またはパレットモード(palette mode)に基づいてもよい。上記IBC予測モードまたはパレットモードは、例えばSCC(Screen Content Coding)などのようにゲームなどのコンテンツ映像/動映像のコーディングのために用いられてよい。IBCは、基本的に現ピクチャ内で予測を行うが、現ピクチャ内で参照ブロックを導出する点でインター予測と同様に行われてよい。すなわち、IBCは、本文書で説明されるインター予測手法のうちの少なくとも一つを用いることができる。パレットモードは、イントラコーディングまたはイントラ予測の一例と見なすことができる。パレットモードが適用される場合に、パレットテーブルおよびパレットインデックスに関する情報に基づいてピクチャ内サンプル値をシグナリングすることができる。
上記予測部(インター予測部221および/または上記イントラ予測部222を含む)で生成された予測信号は、復元信号を生成するために用いられるか、残差信号を生成するために用いられてよい。変換部232は、残差信号に変換手法を適用して変換係数(transform coefficients)を生成することができる。例えば、変換手法は、DCT(Discrete Cosine Transform)、DST(Discrete Sine Transform)、KLT(Karhunen-Loeve Transform)、GBT(Graph-Based Transform)、またはCNT(Conditionally Non-linear Transform)のうちの少なくとも一つを含むことができる。ここで、GBTは、ピクセル間の関係情報をグラフで表現するとき、このグラフから得られた変換を意味する。CNTは、以前に復元された全てのピクセル(all previously reconstructed pixel)を用いて予測信号を生成し、それに基づいて取得される変換を意味する。また、変換過程は、正方形の同一サイズを有するピクセルブロックに適用されてもよく、正方形以外の可変サイズのブロックに適用されてもよい。
量子化部233は、変換係数を量子化してエントロピ符号化部240に伝送し、エントロピ符号化部240は、量子化された信号(量子化された変換係数に関する情報)をエンコードしてビットストリームとして出力できる。上記量子化された変換係数に関する情報は、残差情報と呼ぶことができる。量子化部233は、係数スキャン順序(scan order)に基づき、ブロック形態の量子化された変換係数を1次元ベクトルの形態で再整列でき、上記1次元ベクトル形態の量子化された変換係数に基づき、上記量子化された変換係数に関する情報を生成することもできる。エントロピ符号化部240は、例えば、指数ゴロム(exponential Golomb)、CAVLC(Context-Adaptive Variable Length Coding)、CABAC(Context-Adaptive Binary Arithmetic Coding)などの様々なエンコード方法を行うことができる。エントロピ符号化部240は、量子化された変換係数の他にも、ビデオ/イメージ復元に必要な情報(例えば、シンタックス要素(syntax elements)の値など)を共にまたは別にエンコードすることもできる。エンコードされた情報(例えば、エンコードされたビデオ/映像情報)は、ビットストリームの形態でNAL(Network Abstraction Layer)ユニット単位で伝送または記憶されてよい。上記ビデオ/映像情報は、アダプテーションパラメータセット(APS)、ピクチャパラメータセット(PPS)、シーケンスパラメータセット(SPS)またはビデオパラメータセット(VPS)などの様々なパラメータセットに関する情報をさらに含むことができる。また、上記ビデオ/映像情報は、一般制限情報(general constraint information)をさらに含むことができる。本文書において、エンコード装置でデコード装置に伝達/シグナリングされる情報および/またはシンタックス要素は、ビデオ/映像情報に含まれてよい。上記ビデオ/映像情報は、上述のエンコーディング手順によってエンコードされて上記ビットストリームに含まれてよい。上記ビットストリームは、ネットワークを介して伝送されてよく、またはデジタル記憶媒体に記憶されてよい。ここで、ネットワークは、放送網および/または通信網などを含むことができ、デジタル記憶媒体は、USB、SD、CD、DVD、ブルーレイ、HDD、SSDなどの様々な記憶媒体を含むことができる。エントロピ符号化部240から出力された信号を伝送する送信部(図示せず)および/または記憶する記憶部(図示せず)がエンコード装置200の内/外部エレメントとして構成されてよく、または送信部は、エントロピ符号化部240に含まれてもよい。
量子化部233から出力された量子化された変換係数は、予測信号を生成するために用いられてよい。例えば、量子化された変換係数に、逆量子化部234および逆変換部235で逆量子化および逆変換を適用することによって、残差信号(残差ブロックまたは残差サンプル)を復元することができる。加算部250は、復元された残差信号を、インター予測部221またはイントラ予測部222から出力された予測信号に加算することによって、復元(reconstructed)信号(復元ピクチャ、復元ブロック、復元サンプルアレイ)を生成することができる。スキップモードが適用された場合のように処理対象ブロックに対する残差がない場合に、予測されたブロックが復元ブロックとして用いられてよい。加算部250は、復元部または復元ブロック生成部と呼ぶことができる。生成された復元信号は、現ピクチャ内の次の処理対象ブロックのイントラ予測のために用いられてよく、後述するように、フィルタリングを経て次のピクチャのインター予測のために用いられてもよい。
一方、ピクチャエンコーディングおよび/または復元過程においてLMCS(Luma Mapping with Chroma Scaling)が適用されてもよい。
フィルタリング部260は、復元信号にフィルタリングを適用して主観的/客観的画質を向上させることができる。例えば、フィルタリング部260は、復元ピクチャに様々なフィルタリング方法を適用し、修正された(modified)復元ピクチャを生成でき、上記修正された復元ピクチャをメモリ270、具体的にはメモリ270のDPBに記憶させることができる。上記様々なフィルタリング方法は、例えば、デブロックフィルタリング、サンプル適応オフセット(sample adaptive offset)、適応ループフィルタ(adaptive loop filter)、両方向フィルタ(bilateral filter)などを含むことができる。フィルタリング部260は、各フィルタリング方法に関する説明で後述されるように、フィルタリングに関する様々な情報を生成してエントロピ符号化部240に伝達することができる。フィルタリング関する情報は、エントロピ符号化部240でエンコードされてビットストリームの形態で出力されてよい。
メモリ270に伝送された修正された復元ピクチャは、インター予測部221で参照ピクチャとして用いられてよい。エンコード装置は、これによってインター予測が適用される場合に、エンコード装置200とデコード装置300とにおける予測ミスマッチを避けることができ、符号化効率も向上させることができる。
メモリ270のDPBは、修正された復元ピクチャをインター予測部221における参照ピクチャとして使用するために記憶することができる。メモリ270は、現ピクチャ内の動き情報が導出された(または、エンコードされた)ブロックの動き情報および/または既に復元されたピクチャ内ブロックの動き情報を記憶することができる。上記記憶された動き情報は、空間周辺ブロックの動き情報または時間周辺ブロックの動き情報として活用(利用)するためにインター予測部221に伝達することができる。メモリ270は、現ピクチャ内の復元されたブロックの復元サンプルを記憶することができ、イントラ予測部222に伝達することができる。
図3は、本文書の実施例が適用可能なビデオ/映像デコード装置の構成を概略的に説明する図である。
図3を参照すると、デコード装置300は、エントロピ復号(デコーディング)部(entropy decoder,310)、残差処理部(residual processor,320)、予測部(predictor,330)、加算部(adder,340)、フィルタリング部(filter,350)およびメモリ(memory,360)を含んで構成されてよい。予測部330は、インター予測部331およびイントラ予測部332を含むことができる。残差処理部320は、逆量子化部(dequantizer,321)および逆変換部(inverse transformer,322)を含むことができる。上述したエントロピ復号部310、残差処理部320、予測部330、加算部340およびフィルタリング部350は、一実施例によれば、一つのハードウェアコンポーネント(例えば、デコーダチップセットまたはプロセッサ)によって構成されてもよい。また、メモリ360は、DPB(Decoded Picture Buffer)を含むことができ、デジタル記憶媒体によって構成されてもよい。上記ハードウェアコンポーネントは、メモリ360を内/外部コンポーネントとしてさらに含むこともできる。
ビデオ/映像情報を含むビットストリームが入力されると、デコード装置300は、図2のエンコード装置でビデオ/映像情報が処理されたプロセスに対応して映像を復元することができる。例えば、デコード装置300は、上記ビットストリームから取得したブロック分割関連情報に基づいてユニット/ブロックを導出することができる。デコード装置300は、エンコード装置で適用された処理ユニットを用いてデコーディングを行うことができる。したがって、デコーディングの処理ユニットは、例えばコーディングユニットであってよく、コーディングユニットは、コーディングツリーユニットまたは最大コーディングユニットから、四分木構造、二分木構造および/または三分木構造に従って分割されてよい。コーディングユニットから1つまたは複数の変換ユニットが導出されてよい。そして、デコード装置300でデコーディングおよび出力された復元映像信号は、再生装置で再生されてよい。
デコード装置300は、図2のエンコード装置から出力された信号をビットストリームの形態で受信することができ、受信した信号は、エントロピ復号部310でデコードされてよい。例えば、エントロピ復号部310は、上記ビットストリームをパージングし、映像復元(または、ピクチャ復元)に必要な情報(例えば、ビデオ/映像情報)を導出することができる。上記ビデオ/映像情報は、アダプテーションパラメータセット(APS)、ピクチャパラメータセット(PPS)、シーケンスパラメータセット(SPS)またはビデオパラメータセット(VPS)などの様々なパラメータセットに関する情報をさらに含むことができる。また、上記ビデオ/映像情報は、一般制限情報(general constraint information)をさらに含むことができる。デコード装置は、上記パラメータセットに関する情報および/または上記一般制限情報にさらに基づいてピクチャをデコードすることができる。本文書で後述されるシグナリング/受信される情報および/またはシンタックス要素は、上記デコーディング手順によってデコードされ、上記ビットストリームから取得されてよい。例えば、エントロピ復号部310は、指数ゴロム符号化、CAVLCまたはCABACなどのコーディング方法に基づいてビットストリーム内の情報をデコードし、映像復元に必要なシンタックスエレメントの値、残差に関する変換係数の量子化された値を出力することができる。より詳細には、CABACエントロピ復号方法は、ビットストリームから各構文要素に該当するビン(bin)を受信し、デコーディング対象構文要素情報、周辺およびデコーディング対象ブロックのデコーディング情報、または以前の段階でデコードされたシンボル/ビンの情報を用いてコンテキスト(文脈)(context)モデルを決定し、決定されたコンテキストモデルによってビン(bin)の発生確率を予測してビンの算術復号(arithmetic decoding)を行い、各構文要素の値に該当するシンボルを生成することができる。このとき、CABACエントロピ復号方法は、コンテキストモデル決定後に、次のシンボル/ビンのコンテキストモデルのためにデコードされたシンボル/ビンの情報を用いてコンテキストモデルをアップデートすることができる。エントロピ復号部310でデコードされた情報のうちの予測に関する情報は、予測部330(インター予測部332およびイントラ予測部331)に提供され、エントロピ復号部310でエントロピ復号が行われた残差値、すなわち、量子化された変換係数および関連パラメータ情報は、残差処理部320に入力されてよい。残差処理部320は、残差信号(残差ブロック、残差サンプル、残差サンプルアレイ)を導出することができる。また、エントロピ復号部310でデコードされた情報のうちのフィルタリングに関する情報は、フィルタリング部350に提供されてよい。一方、エンコード装置から出力された信号を受信する受信部(図示せず)がデコード装置300の内/外部エレメントとしてさらに構成されてよく、または受信部は、エントロピ復号部310の構成要素であってよい。一方、本文書に係るデコード装置は、ビデオ/映像/ピクチャデコード装置と呼ぶことができ、該デコード装置は、情報デコーダ(ビデオ/映像/ピクチャ情報デコーダ)とサンプルデコーダ(ビデオ/映像/ピクチャサンプルデコーダ)とに区別できる。上記情報デコーダは、上記エントロピ復号部310を含むことができ、上記サンプルデコーダは、上記逆量子化部321、逆変換部322、加算部340、フィルタリング部350、メモリ360、インター予測部332およびイントラ予測部331のうちの少なくとも一つを含むことができる。
逆量子化部321では、量子化された変換係数を逆量子化して変換係数を出力できる。逆量子化部321は、量子化された変換係数を、2次元ブロックの形態で再整列できる。この場合、上記再整列は、エンコード装置で行われた係数スキャン順序に基づいて再整列を行うことができる。逆量子化部321は、量子化パラメータ(例えば、量子化ステップサイズ情報)を用いて量子化された変換係数に対する逆量子化を行い、変換係数(transform coefficient)を取得することができる。
逆変換部322では、変換係数を逆変換して残差信号(残差ブロック、残差サンプルアレイ)を取得する。
予測部は、現ブロックに対する予測を行い、上記現ブロックに対する予測サンプルを含む予測されたブロック(predicted block)を生成することができる。予測部は、エントロピ復号部310から出力された上記予測に関する情報に基づいて、上記現ブロックにイントラ予測が適用されるかまたはインター予測が適用されるかを決定することができ、具体的なイントラ/インター予測モードを決定することができる。
予測部320は、後述する様々な予測方法に基づいて予測信号を生成できる。例えば、予測部は、一つのブロックに対する予測のためにイントラ予測またはインター予測を適用できる他に、イントラ予測とインター予測とを同時に適用することもできる。これをCIIP(Combined Inter and Intra Prediction)モードと呼ぶことができる。また、予測部は、ブロックに対する予測のために、イントラブロックコピー(Intra Block Copy,IBC)予測モードに基づいてもよく、またはパレットモード(palette mode)に基づいてもよい。上記IBC予測モードまたはパレットモードは、例えば、SCC(Screen Content Coding)などのようにゲームなどのコンテンツ映像/動映像のコーディングのために用いられてよい。IBCは、基本的に現ピクチャ内で予測を行うが、現ピクチャ内で参照ブロックを導出する点でインター予測と同様に行われてよい。すなわち、IBCは、本文書で説明されるインター予測手法のうちの少なくとも一つを用いることができる。パレットモードは、イントラコーディングまたはイントラ予測の一例と見なすことができる。パレットモードが適用される場合に、パレットテーブルおよびパレットインデックスに関する情報が上記ビデオ/映像情報に含まれてシグナリングされてよい。
イントラ予測部331は、現ピクチャ内のサンプルを参照して現ブロックを予測できる。上記参照されるサンプルは、予測モードによって、上記現ブロックの周辺(neighbor)に位置してもよく、または離れて位置してもよい。イントラ予測において、予測モードは、複数の非方向性モードおよび複数の方向性モードを含むことができる。イントラ予測部331は、周辺ブロックに適用された予測モードを用いて、現ブロックに適用される予測モードを決定することもできる。
インター予測部332は、参照ピクチャ上で動きベクトルによって特定される参照ブロック(参照サンプルアレイ)に基づいて、現ブロックに対する予測されたブロックを導出することができる。このとき、インター予測モードで伝送される動き情報の量を減らすために、周辺ブロックと現ブロックとの間の動き情報の相関性に基づいて動き情報をブロック、サブブロックまたはサンプル単位で予測することができる。上記動き情報は、動きベクトルおよび参照ピクチャインデックスを含むことができる。上記動き情報は、インター予測方向情報(L0予測、L1予測、Bi予測など)をさらに含むことができる。インター予測において、周辺ブロックは、現ピクチャ内に存在する空間周辺ブロック(spatial neighboring block)と、参照ピクチャに存在する時間周辺ブロック(temporal neighboring block)と、を含むことができる。例えば、インター予測部332は、周辺ブロックに基づいて動き情報候補リストを構成し、受信した候補選択情報に基づいて上記現ブロックの動きベクトルおよび/または参照ピクチャインデックスを導出することができる。様々な予測モードに基づいてインター予測が行われてよく、上記予測に関する情報は、上記現ブロックに対するインター予測モードを指示する情報を含むことができる。
加算部340は、取得された残差信号を、予測部(インター予測部332および/またはイントラ予測部331含む)から出力された予測信号(予測ブロック、予測サンプルアレイ)に足すことにより、復元信号(復元ピクチャ、復元ブロック、復元サンプルアレイ)を生成することができる。スキップモードが適用された場合のように、処理対象ブロックに対する残差がない場合に、予測されたブロックが復元ブロックとして用いられてよい。
加算部340は、復元部または復元ブロック生成部と呼ぶことができる。生成された復元信号は、現ピクチャ内の次の処理対象ブロックのイントラ予測のために用いられてよく、後述するように、フィルタリングを経て出力されてもよく、または次のピクチャのインター予測のために用いられてもよい。
一方、ピクチャデコーディング過程でLMCS(Luma Mapping with Chroma Scaling)が適用されてもよい。
フィルタリング部350は、復元信号にフィルタリングを適用して、主観的/客観的画質を向上させることができる。例えば、フィルタリング部350は、復元ピクチャに様々なフィルタリング方法を適用して、修正された(modified)復元ピクチャを生成でき、上記修正された復元ピクチャを、メモリ360、具体的にはメモリ360のDPBに伝送することができる。上記様々なフィルタリング方法は、例えば、デブロックフィルタリング、サンプル適応オフセット(sample adaptive offset)、適応ループフィルタ(adaptive loop filter)、両方向フィルタ(bilateral filter)などを含むことができる。
メモリ360のDPBに記憶された(修正された)復元ピクチャは、インター予測部332で参照ピクチャとして用いられてよい。メモリ360は、現ピクチャ内の動き情報が導出された(または、デコードされた)ブロックの動き情報、および/または既に復元されたピクチャ内のブロックの動き情報を記憶することができる。該記憶された動き情報は、空間周辺ブロックの動き情報または時間周辺ブロックの動き情報として活用するためにインター予測部260に伝達できる。メモリ360は、現ピクチャ内の復元されたブロックの復元サンプルを記憶でき、イントラ予測部331に伝達することができる。
本明細書において、エンコード装置200のフィルタリング部260、インター予測部221およびイントラ予測部222で説明された実施例は、それぞれ、デコード装置300のフィルタリング部350、インター予測部332およびイントラ予測部331にも同一にまたは対応するように適用されてよい。
本文書において、量子化/逆量子化および/または変換/逆変換のうちの少なくとも一つは省略されてよい。上記量子化/逆量子化が省略される場合に、上記量子化された変換係数は、変換係数と呼ぶことができる。上記変換/逆変換が省略される場合に、上記変換係数は、係数もしくは残差係数と呼ぶこともでき、または表現の統一性のために変換係数と相変らず呼ぶこともできる。
また、本文書において、量子化された変換係数および変換係数は、それぞれ、変換係数およびスケーリングされた(scaled)変換係数と呼ぶことができる。この場合、残差情報は、変換係数に関する情報を含むことができ、上記変換係数に関する情報は、残差コーディングシンタックスによってシグナリングされてよい。上記残差情報(または、上記変換係数に関する情報)に基づいて変換係数が導出されてよく、上記変換係数に対する逆変換(スケーリング)によってスケーリングされた変換係数が導出されてよい。上記スケーリングされた変換係数に対する逆変換(変換)に基づいて残差サンプルが導出されてよい。これは、本文書の他の部分でも、同一に適用/表現されてよい。
上述したように、ビデオコーディングを行うとき、圧縮効率を上げるために予測を行う。これにより、コーディング対象ブロックである現ブロックに対する予測サンプルを含む予測されたブロックを生成できる。ここで、上記予測されたブロックは、空間領域(ドメイン)(または、ピクセル領域)における予測サンプルを含む。上記予測されたブロックは、エンコード装置とデコード装置とで同一に導出され、上記エンコード装置は、オリジナルブロックのオリジナルサンプル値自体ではなく、上記オリジナルブロックと上記予測されたブロックとの間の残差に関する情報(残差情報)をデコード装置にシグナリングすることによって映像コーディング効率を上げることができる。デコード装置は、上記残差情報に基づいて、残差サンプルを含む残差ブロックを導出し、上記残差ブロックと上記予測されたブロックとを合わせて復元サンプルを含む復元ブロックを生成でき、復元ブロックを含む復元ピクチャを生成できる。
上記残差情報は、変換および量子化手順によって生成されてよい。例えば、エンコード装置は、上記オリジナルブロックと上記予測されたブロックとの間の残差ブロックを導出し、上記残差ブロックに含まれる残差サンプル(残差サンプルアレイ)に変換手順を行って変換係数を導出し、上記変換係数に量子化手順を行って量子化された変換係数を導出することにより、関連する残差情報を(ビットストリームを用いて)デコード装置にシグナリングすることができる。ここで、上記残差情報は、上記量子化された変換係数の値情報、位置情報、変換手法、カーネル、量子化パラメータなどの情報を含むことができる。デコード装置は、上記残差情報に基づいて逆量子化/逆変換手順を行い、残差サンプル(または、残差ブロック)を導出することができる。デコード装置は、予測されたブロックおよび上記残差ブロックに基づいて復元ピクチャを生成できる。エンコード装置は、また、以後のピクチャのインター予測のための参照のために、量子化された変換係数を逆量子化/逆変換して残差ブロックを導出し、これに基づいて復元ピクチャを生成できる。
イントラ予測は、現ブロックが属するピクチャ(以下、現ピクチャ)内の参照サンプルに基づいて現ブロックに対する予測サンプルを生成する予測を表すことができる。現ブロックにイントラ予測が適用される場合に、現ブロックのイントラ予測に用いる周辺参照サンプルが導出されてよい。上記現ブロックの周辺参照サンプルは、nWxnHサイズの現ブロックの左側(left)境界に隣接する(1個の)サンプルおよび左下側(bottom-left)に隣接する合計2xnH個のサンプル、現ブロックの上側(top)境界に隣接する(1個の)サンプルおよび右上側(top-right)に隣接する合計2xnW個のサンプル、および現ブロックの左上側(top-left)に隣接する1個のサンプルを含むことができる。あるいは、上記現ブロックの周辺参照サンプルは、複数列の上側周辺サンプルおよび複数行の左側周辺サンプルを含むこともできる。また、上記現ブロックの周辺参照サンプルは、nWxnHサイズの現ブロックの右側(right)境界に隣接する合計nH個のサンプル、現ブロックの下側(bottom)境界に隣接する合計nW個のサンプル、および現ブロックの右下側(bottom-right)に隣接する1個のサンプルを含むこともできる。
ただし、現ブロックの周辺参照サンプルのうちの一部は、まだデコードされていないか、利用可能でないことがある。この場合、デコーダは、利用可能なサンプルで利用可能でないサンプルを代替(substitution)し、予測に用いる周辺参照サンプルを構成することができる。あるいは、利用可能なサンプルの補間(interpolation)を用いて予測に用いる周辺参照サンプルを構成することができる。
周辺参照サンプルが導出された場合に、(i)現ブロックの周辺(neighboring)参照サンプルの平均(average)または補間(interpolation)に基づいて予測サンプルを導出することもでき、(ii)現ブロックの周辺参照サンプルのうちの予測サンプルに対して特定(予測)方向に存在する参照サンプルに基づいて上記予測サンプルを導出することもできる。(i)の場合は、非方向性(non-directional)モードまたは非角度(non-angular)モード、(ii)の場合は、方向性(directional)モードまたは角度(angular)モードと呼ぶことができる。
また、上記周辺参照サンプルのうちの上記現ブロックの予測サンプルを基準に上記現ブロックのイントラ予測モードの予測方向に位置する第1周辺サンプルと上記予測方向の反対方向に位置する第2周辺サンプルとの補間によって上記予測サンプルが生成されてもよい。この場合は、線形補間イントラ予測(Linear Interpolation Intra Prediction,LIP)と呼ぶことができる。また、線形モデル(Linear Model,LM)を用いてルマサンプルに基づいてクロマ予測サンプルが生成されてもよい。この場合は、LMモードまたはCCLM(Chroma Component LM)モードと呼ぶことができる。
また、フィルタリングされた周辺参照サンプルに基づいて上記現ブロックの一時(臨時、temporary)予測サンプルを導出し、上記既存の(existing)周辺参照サンプル、すなわち、フィルタリングされていない周辺参照サンプルのうちの上記イントラ予測モードによって導出された少なくとも一つの参照サンプルと上記一時予測サンプルとを加重和(weighted sum)して上記現ブロックの予測サンプルを導出することができる。この場合は、PDPC(Position Dependent Intra Prediction)と呼ぶことができる。
また、現ブロックの周辺多重参照サンプルラインのうち、最も予測精度(正確度)の高い参照サンプルラインを選択し、当該ラインで予測方向に位置する参照サンプルを用いて予測サンプルを導出し、このとき、用いられた参照サンプルラインをデコード装置に指示(シグナル)する方法でイントラ予測符号化を行うことができる。この場合は、多重参照ライン(multi-reference line)イントラ予測またはMRLベースイントラ予測と呼ぶことができる。
また、現ブロックを垂直または水平のサブパーティションに分け、同一のイントラ予測モードに基づいてイントラ予測を行うが、上記サブパーティション単位で周辺参照サンプルを導出して用いることができる。すなわち、この場合、現ブロックに対するイントラ予測モードが上記サブパーティションに同一に適用されるが、上記サブパーティション単位で周辺参照サンプルを導出して用いることにより、場合によってイントラ予測性能を高めることができる。このような予測方法は、ISP(Intra Sub-Partitions)ベースイントラ予測と呼ぶことができる。
上述したイントラ予測方法は、イントラ予測モードと区分(区別)してイントラ予測タイプと呼ぶことができる。上記イントラ予測タイプは、イントラ予測手法または付加イントラ予測モードなどの様々な用語で呼ぶことができる。例えば、上記イントラ予測タイプ(または、付加イントラ予測モードなど)は、上述したLIP、PDPC、MRL、ISPのうちの少なくとも一つを含むことができる。上記LIP、PDPC、MRL、ISPなどの特定のイントラ予測タイプを除く一般のイントラ予測方法は、ノーマルイントラ予測タイプと呼ぶことができる。ノーマルイントラ予測タイプは、上記のような特定のイントラ予測タイプが適用されない場合に一般的に適用されてよく、上述したイントラ予測モードに基づいて予測が行われてよい。一方、必要によって、導出された予測サンプルに対する後処理フィルタリングが行われてもよい。
具体的には、イントラ予測手順は、イントラ予測モード/タイプ決定段階、周辺参照サンプル導出段階、イントラ予測モード/タイプベース予測サンプル導出段階を含むことができる。また、必要によって、導出された予測サンプルに対する後処理フィルタリング(post-filtering)段階が行われてもよい。
イントラ予測が適用される場合に、周辺ブロックのイントラ予測モードを用いて、現ブロックに適用されるイントラ予測モードが決定されてよい。例えば、デコード装置は、現ブロックの周辺ブロック(例えば、左側および/または上側の周辺ブロック)のイントラ予測モードおよび追加の候補モードに基づいて導出されたMPM(Most Probable Mode)リスト内のMPM候補のうちの一つを、受信したMPMインデックスに基づいて選択でき、または、上記MPM候補(および、平面(プランナー、planar)モード)に含まれていない残りイントラ予測モードのうちの一つを、残りの(リメイニング)イントラ予測モード情報に基づいて選択できる。上記MPMリストは、平面モードを候補として含むまたは含まないように構成されてよい。例えば、上記MPMリストが平面モードを候補として含む場合に、上記MPMリストは、6個の候補を有し、上記MPMリストが平面モードを候補として含まない場合に、上記MPMリストは、5個の候補を有し得る。上記MPMリストが平面モードを候補として含まない場合に、現ブロックのイントラ予測モードが平面モードでないか否かを示すnot(非)平面フラグ(例えば、intra_luma_not_planar_flag)がシグナリングされてよい。例えば、MPMフラグがまずシグナリングされ、MPMインデックスおよびnot平面フラグは、MPMフラグの値が1である場合にシグナリングされてよい。また、上記MPMインデックスは、上記not平面フラグの値が1である場合にシグナリングされてよい。ここで、上記MPMリストが平面モードを候補として含まないように構成されることは、上記平面モードがMPMでないというより、MPMとして常に平面モードが考慮されるので、まず、フラグ(not planar flag)をシグナリングして平面モードであるか否かをまず確認するためである。
例えば、現ブロックに適用されるイントラ予測モードがMPM候補(および平面モード)中にあるか、または残りのモード中にあるかは、MPMフラグ(例えば、intra_luma_mpm_flag)に基づいて指示されてよい。MPMフラグの値1は、上記現ブロックに対するイントラ予測モードがMPM候補(および、平面モード)内にあることを示しことができ、MPMフラグの値0は、上記現ブロックに対するイントラ予測モードがMPM候補(および、平面モード)内にないことを示すことができる。上記not平面フラグ(例えば、intra_luma_not_planar_flag)値0は、上記現ブロックに対するイントラ予測モードが平面モードであることを示すことができ、上記not平面フラグ値1は、上記現ブロックに対するイントラ予測モードが平面モードでないことを示すことができる。上記MPMインデックスは、mpm_idxまたはintra_luma_mpm_idxシンタックス要素の形態でシグナリングされてよく、上記残りのイントラ予測モード情報は、rem_intra_luma_pred_modeまたはintra_luma_mpm_remainderシンタックス要素の形態でシグナリングされてよい。例えば、上記残りのイントラ予測モード情報は、全体イントラ予測モードのうち、上記MPM候補(および、平面モード)に含まれない残りのイントラ予測モードを予測モード番号の順にインデクスし、そのうちの一つを示すことができる。上記イントラ予測モードは、ルマ成分(サンプル)に対するイントラ予測モードであってよい。以下、イントラ予測モード情報は、上記MPMフラグ(例えば、intra_luma_mpm_flag)、上記not平面フラグ(例えば、intra_luma_not_planar_flag)、上記MPMインデックス(例えば、mpm_idxまたはintra_luma_mpm_idx)、上記残りのイントラ予測モード情報(rem_intra_luma_pred_modeまたはintra_luma_mpm_remainder)のうちの少なくとも一つを含むことができる。本文書において、MPMリストは、MPM候補リスト、candModeListなどの様々な用語で呼ぶことができる。MIPが現ブロックに適用される場合に、MIPのための別個のmpmフラグ(例えば、intra_mip_mpm_flag)、mpmインデックス(例えば、intra_mip_mpm_idx)、残りのイントラ予測モード情報(例えば、intra_mip_mpm_remainder)がシグナリングされてよく、上記not平面フラグは、シグナリングされない。
言い換えると、一般に、映像に対するブロック分割がされると、コーディングしようとする現ブロックと周辺(neighboring)ブロックとは、類似の映像特性を有する。したがって、現ブロックと周辺ブロックとは、互いに同一または類似のイントラ予測モードを有する確率が高い。したがって、エンコーダは、現ブロックのイントラ予測モードをエンコードするために周辺ブロックのイントラ予測モードを用いることができる。
例えば、エンコーダ/デコーダは、現ブロックに対するMPM(Most Probable Modes)リストを構成することができる。上記MPMリストは、MPM候補リストと表すこともできる。ここで、MPMとは、イントラ予測モードコーディングのときに、現ブロックと周辺ブロックとの類似性を考慮してコーディング効率を向上させるために用いられるモードを意味できる。上述したように、MPMリストは、平面モードを含んで構成されてよく、または平面モードを除いて構成されてよい。例えば、MPMリストが平面モードを含む場合に、MPMリストの候補の個数は6個であってよい。また、MPMリストが平面モードを含まない場合に、MPMリストの候補の個数は5個であってよい。
エンコーダ/デコーダは、5個または6個のMPMを含むMPMリストを構成することができる。
MPMリストを構成するために、デフォルトイントラモード(Default intra modes)、周辺イントラモード(Neighbour intra modes)および導出されたイントラモード(Derived intra modes)の3種類のモードが考慮されてよい。
上記周辺イントラモードのために、2つの周辺ブロック、すなわち、左側周辺ブロックおよび上側周辺ブロックが考慮されてよい。
上述したように、MPMリストが平面モードを含まないように構成する場合に、上記リストにおいて平面(planar)モードが除外され、上記MPMリスト候補の個数は5個に設定されてよい。
また、イントラ予測モードのうちの非方向性モード(または、非角度モード)は、現ブロックの周辺(neighboring)参照サンプルの平均(average)ベースのDCモードまたは補間(interpolation)ベースの平面(planar)モードを含むことができる。
一方、インター予測が適用される場合に、エンコード装置/デコード装置の予測部は、ブロック単位でインター予測を行って予測サンプルを導出することができる。インター予測は、現ピクチャ以外のピクチャのデータ要素(例えば、サンプル値または動き情報)に依存する方法で導出される予測を表すことができる(Inter prediction can be a prediction derived in a manner that is dependent on data elements(ex, sample values or motion information)of picture(s) other than the current picture)。現ブロックにインター予測が適用される場合に、参照ピクチャインデックスが示す参照ピクチャ上で動きベクトルによって特定される参照ブロック(参照サンプルアレイ)に基づいて、現ブロックに対する予測されたブロック(予測サンプルアレイ)を導出することができる。このとき、インター予測モードで伝送される動き情報の量を減らすために、周辺ブロックと現ブロックとの間の動き情報の相関性に基づいて、現ブロックの動き情報をブロック、サブブロックまたはサンプル単位で予測することができる。上記動き情報は、動きベクトルおよび参照ピクチャインデックスを含むことができる。上記動き情報は、インター予測タイプ(L0予測、L1予測、Bi予測など)情報をさらに含むことができる。インター予測が適用される場合に、周辺ブロックは、現ピクチャ内に存在する空間周辺ブロック(spatial neighboring block)と参照ピクチャに存在する時間周辺ブロック(temporal neighboring block)とを含むことができる。上記参照ブロックを含む参照ピクチャと上記時間周辺ブロックを含む参照ピクチャとは同一であってもよく、異なってもよい。上記時間周辺ブロックは、コロケート参照ブロック(collocated reference block)、コロケートCU(colCU)などと呼ぶことができ、上記時間周辺ブロックを含む参照ピクチャは、コロケートピクチャ(collocated picture,colPic)と呼ぶことができる。例えば、現ブロックの周辺ブロックに基づいて動き情報候補リストが構成されてよく、上記現ブロックの動きベクトルおよび/または参照ピクチャインデックスを導出するためにどの候補が選択(使用)されるかを示すフラグまたはインデックス情報がシグナリングされてよい。様々な予測モードに基づいてインター予測が行われてよく、例えば、スキップモードおよびマージモードにおいて、現ブロックの動き情報は、選択された周辺ブロックの動き情報と同一であってよい。スキップモードにおいて、マージモードとは違い、残差信号が伝送されなくてよい。動き情報予測(Motion Vector Prediction,MVP)モードでは、選択された周辺ブロックの動きベクトルを動きベクトル予測子(motion vector predictor)として用い、動きベクトル差分(motion vector difference)はシグナリングされてよい。この場合、上記動きベクトル予測子と動きベクトル差分との和を用いて上記現ブロックの動きベクトルを導出することができる。
上記動き情報は、インター予測タイプ(L0予測、L1予測、Bi予測など)によってL0動き情報および/またはL1動き情報を含むことができる。L0方向の動きベクトルは、L0動きベクトルまたはMVL0と呼ぶことができ、L1方向の動きベクトルは、L1動きベクトルまたはMVL1と呼ぶことができる。L0動きベクトルに基づく予測は、L0予測と呼び、L1動きベクトルに基づく予測は、L1予測と呼び、上記L0動きベクトルおよび上記L1動きベクトルの両方に基づく予測は、対(Bi)予測と呼ぶことができる。ここで、L0動きベクトルは、参照ピクチャリストL0(L0)に関連する動きベクトルを表すことができ、L1動きベクトルは、参照ピクチャリストL1(L1)に関連する動きベクトルを表すことができる。参照ピクチャリストL0は、出力順序において上記現ピクチャよりも前のピクチャを参照ピクチャとして含むことができ、参照ピクチャリストL1は、出力順序において上記現ピクチャよりも後のピクチャを含むことができる。上記前のピクチャは、順方向(参照)ピクチャと呼ぶことができ、上記後のピクチャは、逆方向(参照)ピクチャと呼ぶことができる。上記参照ピクチャリストL0は、出力順序において上記現ピクチャよりも後のピクチャを参照ピクチャとしてさらに含むことができる。この場合、上記参照ピクチャリストL0内で上記前のピクチャがまずインデクスされ、上記後のピクチャは、その次にインデクスされてよい。上記参照ピクチャリストL1は、出力順序において上記現ピクチャよりも前のピクチャを参照ピクチャとしてさらに含むことができる。この場合、上記参照ピクチャリスト1内で上記後のピクチャがまずインデクスされ、上記前のピクチャは、その次にインデクスされてよい。ここで、出力順序は、POC(Picture Order Count)順序(order)に対応してよい。
インター予測に基づくビデオ/映像エンコーディング手順は、概略的に、例えば次を含むことができる。
図4には、インター予測ベースビデオ/映像エンコード方法の例を示す。
エンコード装置は、現ブロックに対するインター予測を行う(S400)。エンコード装置は、現ブロックのインター予測モードおよび動き情報を導出し、上記現ブロックの予測サンプルを生成することができる。ここで、インター予測モード決定、動き情報導出および予測サンプル生成手順は、同時に行われてもよく、いずれか一手順が他の手順よりも先に行われてもよい。例えば、エンコード装置のインター予測部は、予測モード決定部、動き情報導出部、予測サンプル導出部を含むことができ、予測モード決定部で上記現ブロックに対する予測モードを決定し、動き情報導出部で上記現ブロックの動き情報を導出し、予測サンプル導出部で上記現ブロックの予測サンプルを導出することができる。例えば、エンコード装置のインター予測部は、動き推定(motion estimation)によって参照ピクチャの一定領域(サーチ領域)内で上記現ブロックと類似のブロックをサーチし、上記現ブロックとの差が最小または一定基準以下である参照ブロックを導出することができる。これに基づいて、上記参照ブロックの位置する参照ピクチャを示す参照ピクチャインデックスを導出し、上記参照ブロックと上記現ブロックとの位置差に基づいて動きベクトルを導出することができる。エンコード装置は、様々な予測モードのうち、上記現ブロックに対して適用されるモードを決定できる。エンコード装置は、上記様々な予測モードに対するRDコスト(cost)を比較し、上記現ブロックに対する最適な予測モードを決定することができる。
例えば、エンコード装置は、上記現ブロックにスキップモードまたはマージモードが適用される場合に、後述するマージ候補リストを構成し、上記マージ候補リストに含まれるマージ候補が示す参照ブロックのうち、上記現ブロックとの差が最小または一定基準以下である参照ブロックを導出することができる。この場合、上記導出された参照ブロックと関連するマージ候補が選択され、上記選択されたマージ候補を示すマージインデックス情報が生成されてデコード装置にシグナリングされてよい。上記選択されたマージ候補の動き情報を用いて上記現ブロックの動き情報を導出することができる。
他の例として、エンコード装置は、上記現ブロックに(A)MVPモードが適用される場合に、後述する(A)MVP候補リストを構成し、上記(A)MVP候補リストに含まれるmvp(motion vector predictor)候補から選択されたmvp候補の動きベクトルを上記現ブロックのmvpとして用いることができる。この場合、例えば、上述した動き推定によって導出された参照ブロックを示す動きベクトルが上記現ブロックの動きベクトルとして用いられてよく、上記mvp候補のうち、上記現ブロックの動きベクトルとの差が最も小さい動きベクトルを有するmvp候補が、上記選択されたmvp候補になり得る。上記現ブロックの動きベクトルから上記mvpを引いた差分であるMVD(Motion Vector Difference)が導出されてよい。この場合、上記MVDに関する情報がデコード装置にシグナリングされてよい。また、(A)MVPモードが適用される場合に、上記参照ピクチャインデックスの値は、参照ピクチャインデックス情報として構成され、別個に上記デコード装置にシグナリングされてよい。
エンコード装置は、上記予測サンプルに基づいて残差サンプルを導出することができる(S410)。エンコード装置は、上記現ブロックのオリジナルサンプルと上記予測サンプルとの比較によって上記残差サンプルを導出することができる。
エンコード装置は、予測情報および残差情報を含む映像情報をエンコードする(S420)。エンコード装置は、エンコードされた映像情報をビットストリームの形態で出力できる。上記予測情報は、上記予測手順に関連する情報として予測モード情報(例えば、スキップフラグ、マージフラグ、またはモデルインデックスなど)および動き情報に関する情報を含むことができる。上記動き情報に関する情報は、動きベクトルを導出するための情報である候補選択情報(例えば、マージインデックス、mvpフラグ、またはmvpインデックス)を含むことができる。また、上記動き情報に関する情報は、上述したMVDに関する情報および/または参照ピクチャインデックス情報を含むことができる。また、上記動き情報に関する情報は、L0予測、L1予測、または対(bi)予測が適用されるか否かを示す情報を含むことができる。上記残差情報は、上記残差サンプルに関する情報である。上記残差情報は、上記残差サンプルに対する量子化された変換係数に関する情報を含むことができる。
出力されたビットストリームは、(デジタル)記憶媒体に記憶され、デコード装置に伝達されてよく、またはネットワークを通じてデコード装置に伝達されてもよい。
一方、上述したように、エンコード装置は、上記参照サンプルおよび上記残差サンプルに基づいて復元ピクチャ(復元サンプルおよび復元ブロックを含む)を生成できる。これは、デコード装置で行われるのと同じ予測結果をエンコード装置で導出するためであり、これによってコーディング効率を上げることができるためである。したがって、エンコード装置は、復元ピクチャ(または、復元サンプル、復元ブロック)をメモリに記憶し、インター予測のための参照ピクチャとして活用することができる。上記復元ピクチャにインループフィルタリング手順などがさらに適用されてもよいことは、上述した通りである。
インター予測に基づくビデオ/映像デコーディング手順は、概略的に、例えば次を含むことができる。
図5には、インター予測ベースビデオ/映像デコード方法の例を示す。
図5を参照すると、デコード装置は、上記エンコード装置で行われた動作と対応する動作を行うことができる。デコード装置は、受信した予測情報に基づいて現ブロックに予測を行い、予測サンプルを導出することができる。
具体的には、デコード装置は、受信した予測情報に基づいて上記現ブロックに対する予測モードを決定することができる(S500)。デコード装置は、上記予測情報内の予測モード情報に基づいて、上記現ブロックにどのようなインター予測モードが適用されるかを決定できる。
例えば、上記マージフラグに基づいて、上記現ブロックに上記マージモードが適用されるかまたは(A)MVPモードが決定されるかが決定されることができる。あるいは、上記モードインデックスに基づいて、様々なインター予測モード候補のうちの一つを選択できる。上記インター予測モード候補は、スキップモード、マージモードおよび/もしくは(A)MVPモードを含んでよく、または、後述する様々なインター予測モードを含んでもよい。
デコード装置は、上記決定されたインター予測モードに基づいて上記現ブロックの動き情報を導出する(S510)。例えば、デコード装置は、上記現ブロックにスキップモードまたはマージモードが適用される場合に、後述するマージ候補リストを構成し、上記マージ候補リストに含まれるマージ候補がのうちの一つのマージ候補を選択できる。上記選択は、上述した選択情報(merge index)に基づいて行われてよい。上記選択されたマージ候補の動き情報を用いて上記現ブロックの動き情報を導出することができる。上記選択されたマージ候補の動き情報が上記現ブロックの動き情報として用いられてよい。
他の例として、デコード装置は、上記現ブロックに(A)MVPモードが適用される場合に、後述する(A)MVP候補リストを構成し、上記(A)MVP候補リストに含まれるmvp(motion vector predictor)候補のうち、選択されたmvp候補の動きベクトルを上記現ブロックのmvpとして用いることができる。上記選択は、上述した選択情報(mvp flag or mvp index)に基づいて行われてよい。この場合、上記MVDに関する情報に基づいて上記現ブロックのMVDを導出することができ、上記現ブロックのmvpおよび上記MVDに基づいて上記現ブロックの動きベクトルを導出することができる。また、上記参照ピクチャインデックス情報に基づいて上記現ブロックの参照ピクチャインデックスを導出することができる。上記現ブロックに関する参照ピクチャリスト内で上記参照ピクチャインデックスが示すピクチャが、上記現ブロックのインター予測のために参照される参照ピクチャとして導出されてよい。
一方、後述するように、候補リスト構成無しで上記現ブロックの動き情報が導出されてもよく、この場合、後述する予測モードで開示された手順によって上記現ブロックの動き情報が導出されてよい。この場合、上述したような候補リスト構成は省略されてよい。
デコード装置は、上記現ブロックの動き情報に基づいて上記現ブロックに対する予測サンプルを生成することができる(S520)。この場合、上記現ブロックの参照ピクチャインデックスに基づいて上記参照ピクチャを導出し、上記現ブロックの動きベクトルが上記参照ピクチャ上で示す参照ブロックのサンプルを用いて、上記現ブロックの予測サンプルを導出することができる。この場合、後述するように、場合によって、上記現ブロックの予測サンプルの全部または一部に対する予測サンプルフィルタリング手順がさらに行われてよい。
例えば、デコード装置のインター予測部は、予測モード決定部、動き情報導出部、予測サンプル導出部を含むことができ、予測モード決定部で受信した予測モード情報に基づいて上記現ブロックに対する予測モードを決定し、動き情報導出部で受信した動き情報に関する情報に基づいて上記現ブロックの動き情報(動きベクトルおよび/または参照ピクチャインデックスなど)を導出し、予測サンプル導出部で上記現ブロックの予測サンプルを導出することができる。
デコード装置は、受信した残差情報に基づいて上記現ブロックに対する残差サンプルを生成する(S530)。デコード装置は、上記予測サンプルおよび上記残差サンプルに基づいて上記現ブロックに対する復元サンプルを生成し、これに基づいて復元ピクチャを生成できる(S540)。その後、上記復元ピクチャにインループフィルタリング手順などがさらに適用されてよいことは、上述した通りである。
図6には、インター予測手順を例示的に示す。
図6を参照すると、上述したように、インター予測手順は、インター予測モード決定段階、決定された予測モードによる動き情報導出段階、導出された動き情報に基づく予測(予測サンプル生成)段階を含むことができる。上記インター予測手順は、上述したようにエンコード装置およびデコード装置で行われてよい。本文書において、コーディング装置とは、エンコード装置および/またはデコード装置を含むことができる。
図6を参照すると、コーディング装置は、現ブロックに対するインター予測モードを決定する(S600)。ピクチャ内の現ブロックの予測のために様々なインター予測モードが用いられてよい。例えば、マージモード、スキップモード、MVP(Motion Vector Prediction)モード、アフィン(Affine)モード、サブブロックマージモード、MMVD(merge with MVD)モードなどの様々なモードが用いられてよい。DMVR(Decoder Side Motion Vector Refinement)モード、AMVR(Adaptive Motion Vector Resolution)モード、BCW(Bi-prediction with CU-level Weight)、BDOF(Bi-Directional Optical Flow)などが付随のモードとしてさらにまたは代わりに用いられてよい。アフィンモードは、アフィン動き予測(affine motion prediction)モードと呼ぶことができる。MVPモードは、AMVP(Advanced Motion Vector Prediction)モードと呼ぶことができる。本文書において、一部のモードおよび/または一部のモードによって導出された動き情報候補は、他のモードの動き情報関連候補のうちの一つとして含まれてもよい。例えば、HMVP候補は、上記マージ/スキップモードのマージ候補として追加されてよく、または上記MVPモードのmvp候補として追加されてもよい。上記HMVP候補が上記マージモードまたはスキップモードの動き情報候補として用いられる場合に、上記HMVP候補は、HMVPマージ候補と呼ぶことができる。
現ブロックのインター予測モードを示す予測モード情報が、エンコード装置からデコード装置にシグナリングされてよい。上記予測モード情報は、ビットストリームに含まれてデコード装置に受信されてよい。上記予測モード情報は、複数の候補モードのうちの一つを指示するインデックス情報を含むことができる。あるいは、フラグ情報の階層的シグナリングによってインター予測モードを指示することもできる。この場合、上記予測モード情報は、一つまたは複数のフラグを含むことができる。例えば、スキップフラグをシグナリングして、スキップモードが適用されるか否かを指示し、スキップモードが適用されない場合には、マージフラグをシグナリングしてマージモードが適用されか否かを指示し、マージモードが適用されない場合に、MVPモードが適用される旨指示するか、追加の区分のためのフラグをさらにシグナリングすることもできる。アフィンモードは、独立したモードとしてシグナリングされてもよく、またはマージモードもしくはMVPモードなどに従属するモードとしてシグナリングされてもよい。例えば、アフィンモードは、アフィンマージモードおよびアフィンMVPモードを含むことができる。
コーディング装置は、上記現ブロックに対する動き情報を導出する(S610)。上記動き情報導出を上記インター予測モードに基づいて導出することができる。
コーディング装置は、現ブロックの動き情報を用いてインター予測を行うことができる。エンコード装置は、動き推定(motion estimation)手順によって現ブロックに対する最適な動き情報を導出することができる。例えば、エンコード装置は、現ブロックに対するオリジナルピクチャ内のオリジナルブロックを用いて、相関性の高い類似の参照ブロックを、参照ピクチャ内の定められた探索範囲内で分数(端数、fractional)ピクセル単位で探索でき、これによって動き情報を導出することができる。ブロックの類似性は、位相(phase)ベースサンプル値の差に基づいて導出することができる。例えば、ブロックの類似性は、現ブロック(または、現ブロックのテンプレート)と参照ブロック(または、参照ブロックのテンプレート)との間のSADに基づいて計算されてよい。この場合、サーチ(探索)領域内SADが最も小さい参照ブロックに基づいて動き情報を導出することができる。導出された動き情報は、インター予測モードに基づいて様々な方法によってデコード装置にシグナリングされてよい。
コーディング装置は、上記現ブロックに対する動き情報に基づいてインター予測を行う(S620)。コーディング装置は、上記動き情報に基づいて上記現ブロックに対する予測サンプルを導出することができる。上記予測サンプルを含む現ブロックは、予測されたブロックと呼ぶことができる。
一方、上述の内容のように、エンコード装置は、例えば、指数ゴロム(exponential Golomb)、CAVLC(Context-Adaptive Variable Length Coding)、CABAC(Context-Adaptive Binary Arithmetic Coding)などの様々なエンコード方法を行うことができる。また、デコード装置は、指数ゴロム符号化、CAVLCまたはCABACなどのコーディング方法に基づいてビットストリーム内情報をデコードし、映像復元に必要なシンタックスエレメントの値、残差に関する変換係数の量子化された値を出力することができる。
例えば、上述したコーディング方法は、後述する内容のように行われてよい。
図7には、シンタックスエレメント(syntax element)をエンコードするためのCABAC(Context-Adaptive Binary Arithmetic Coding)を例示的に示す。例えば、CABACの符号化過程では、エンコード装置は、入力信号が二進値でないシンタックスエレメントである場合には、上記入力信号の値を二進化(binarization)して入力信号を二進値として変換できる。また、上記入力信号が既に二進値である場合(すなわち、上記入力信号の値が二進値である場合)には、二進化が行われずにバイパス(bypass)されてよい。ここで、二進値を構成するそれぞれの二進数0または1をビン(bin)と呼ぶことができる。例えば、二進化された後の二進ストリングが110である場合に、1、1、0のそれぞれを1つのビンと呼ぶ。1つのシンタックスエレメントに対する上記ビンは、上記シンタックスエレメントの値を示すことができる。
その後、上記シンタックスエレメントの二進化されたビンは、正規(regular)符号化エンジンまたはバイパス符号化エンジンに入力されてよい。エンコード装置の正規符号化エンジンは、当該ビンに対して確率値を反映するコンテキストモデル(context model)を割り当てることができ、割り当てられたコンテキストモデルに基づいて当該ビンをエンコードできる。エンコード装置の上記正規符号化エンジンは、各ビンに対するエンコーディングを行った後に当該ビンに対するコンテキストモデルを更新できる。上述の内容のようにエンコードされるビンは、コンテキスト符号化ビン(context-coded bin)と称することができる。
一方、上記シンタックスエレメントの二進化されたビンが上記バイパス符号化エンジンに入力される場合には、次のようにコーディングされてよい。例えば、エンコード装置のバイパス符号化エンジンは、入力されたビンに対して確率を推定する手順と、符号化後に上記ビンに適用した確率モデルを更新する手順と、を省略する。バイパスエンコーディングが適用される場合に、エンコード装置は、コンテキストモデルを割り当てる代わりに均一な確率分布を適用することにより、入力されるビンをエンコードでき、これにより、エンコーディング速度を向上させることができる。上述の内容のようにエンコードされるビンは、バイパスビン(bypass bin)と称することができる。
エントロピ復号は、上述したエントロピ符号化における過程を逆順で行う過程を表すことができる。
例えば、シンタックスエレメントがコンテキストモデルに基づいてデコードされる場合に、デコード装置は、ビットストリームによって上記シンタックスエレメントに該当するビンを受信することができ、上記シンタックスエレメントとデコーディング対象ブロックもしくは周辺ブロックのデコーディング情報または以前の段階でデコードされたシンボル/ビンの情報とを用いて、コンテキストモデル(context model)を決定でき、決定されたコンテキストモデルによって上記受信したビン(bin)の発生確率を予測してビンの算術復号(arithmetic decoding)を行い、上記シンタックスエレメントの値を導出することができる。その後、次にデコードされるビンのコンテキストモデルが上記決定されたコンテキストモデルにアップデートされてよい。
また、例えば、シンタックスエレメントがバイパスデコードされる場合に、デコード装置は、ビットストリームを用いて上記シンタックスエレメントに該当するビンを受信でき、均一な確率分布を適用することによって、入力されるビンをデコードすることができる。この場合、デコード装置は、シンタックスエレメントのコンテキストモデルを導出する手順と、デコーディング後に上記ビンに適用したコンテキストモデルを更新する手順と、を省略することができる。
上述したように、残差サンプルは、変換、量子化過程を経て量子化された変換係数として導出されてよい。量子化された変換係数は、変換係数と呼ぶこともできる。この場合、ブロック内変換係数は、残差情報の形態でシグナリングされてよい。上記残差情報は、残差コーディングシンタックスを含むことができる。すなわち、エンコード装置は、残差情報で残差コーディングシンタックスを構成し、これをエンコードしてビットストリームの形態で出力でき、デコード装置は、ビットストリームから残差コーディングシンタックスをデコードして残差(量子化された)変換係数を導出することができる。上記残差コーディングシンタックスは、後述するように、当該ブロックに対して変換が適用された否か、ブロック内で最後の有効変換係数の位置、サブブロック内に有効変換係数が存在するか否か、有効変換係数のサイズ/符号などを示すシンタックスエレメント(syntax elements)を含むことができる。
例えば、残差データエンコーディング/デコーディングと関連するシンタックスエレメントは、次表のように表すことができる。
transform_skip_flagは、関連するブロック(associated block)において変換が省略されるか否かを示す。上記transform_skip_flagは、変換スキップフラグのシンタックスエレメントであってよい。上記関連するブロックは、CB(Coding Block)またはTB(Transform Block)であってよい。変換(および量子化)および残差コーディング手順に関して、CBとTBとは同じ意味で使われてよい。例えば、CBに対して残差サンプルが導出され、上記残差サンプルに対する変換および量子化によって(量子化された)変換係数が導出され得ることは上述の通りであり、残差コーディング手順によって上記(量子化された)変換係数の位置、サイズ、符号などを効率的に示す情報(例えば、シンタックスエレメント)が生成され、シグナリングされてよい。量子化された変換係数は、簡単に変換係数と呼ぶことができる。一般に、CBが最大TBよりも大きくない場合に、CBのサイズは、TBのサイズと同一であってよく、この場合、変換(および量子化)および残差コーディングされる対象ブロックは、CBまたはTBと呼ぶことができる。一方、CBが最大TBよりも大きい場合には、変換(および量子化)および残差コーディングされる対象ブロックをTBと呼ぶことができる。以下、残差コーディングに関連するシンタックス要素が変換ブロック(TB)単位でシグナリングされるとして説明するが、これは例示であり、上記TBがコーディングブロック(CB)と同じ意味で使われてよいことは上述した通りである。
一方、上記変換スキップフラグがシグナリングされた後にシグナリングされるシンタックスエレメントは、後述する表2および/または表3に開示されたシンタックスエレメントと同一であってよく、上記シンタックスエレメントに関する具体的な説明は、後述する通りである。
本実施例によれば、表1に示すように、変換スキップフラグのシンタックスエレメントtransform_skip_flagの値によって、残差コーディングが分岐されてよい。すなわち、変換スキップフラグの値に基づいて(変換スキップであるか否かに基づいて)、残差コーディングのために互いに異なるシンタックスエレメントが用いられてよい。変換スキップが適用されない場合(すなわち、変換が適用された場合)に用いられる残差コーディングは、レギュラ残差コーディング(Regular Residual Coding,RRC)と呼ぶことができ、変換スキップが適用される場合(すなわち、変換が適用されていない場合)の残差コーディングは、変換スキップ残差コーディング(Transform Skip Residual Coding,TSRC)と呼ぶことができる。また、上記レギュラ残差コーディングは、一般の残差コーディング(general residual coding)と呼ぶこともできる。また、上記レギュラ残差コーディングは、レギュラ残差コーディングシンタックス構造と呼ぶことができ、上記変換スキップ残差コーディングは、変換スキップ残差コーディングシンタックス構造と呼ぶことができる。上記表2は、transform_skip_flagの値が0の場合、すなわち、変換が適用された場合の残差コーディングのシンタックスエレメントを表すことができ、表3は、transform_skip_flagの値が1の場合、すなわち、変換が適用されていない場合の残差コーディングのシンタックスエレメントを表すことができる。
具体的には、例えば、変換ブロックの変換をスキップするか否かを示す変換スキップフラグがパージング(パース)されてよく、上記変換スキップフラグが1か否かが判断されてよい。上記変換スキップフラグの値が0である場合、表2に示すように、変換ブロックの残差係数に関するシンタックスエレメントlast_sig_coeff_x_prefix、last_sig_coeff_y_prefix、last_sig_coeff_x_suffix、last_sig_coeff_y_suffix、sb_coded_flag、sig_coeff_flag、abs_level_gtx_flag、par_level_flag、abs_remainder、coeff_sign_flagおよび/またはdec_abs_levelがパージングされてよく、上記シンタックスエレメントに基づいて上記残差係数が導出されてよい。この場合、上記シンタックスエレメントは順次パージングされてもよく、パージング順序が変更されてもよい。また、上記abs_level_gtx_flagは、abs_level_gt1_flagおよび/またはabs_level_gt3_flagを表すことができる。例えば、abs_level_gtx_flag[n][0]は、第1変換係数レベルフラグ(abs_level_gt1_flag)の一例であってよく、上記abs_level_gtx_flag[n][1]は、第2変換係数レベルフラグ(abs_level_gt3_flag)の一例であってよい。
上記表2を参照すると、last_sig_coeff_x_prefix、last_sig_coeff_y_prefix、last_sig_coeff_x_suffix、last_sig_coeff_y_suffix、sb_coded_flag、sig_coeff_flag、abs_level_gt1_flag、par_level_flag、abs_level_gt3_flag、abs_remainder、coeff_sign_flag、および/またはdec_abs_levelがエンコード/デコードされてよい。一方、上記sb_coded_flagは、coded_sub_block_flagと表すこともできる。
一実施例において、エンコード装置は、シンタックスエレメントlast_sig_coeff_x_prefix、last_sig_coeff_y_prefix、last_sig_coeff_x_suffixおよびlast_sig_coeff_y_suffixに基づいて、変換ブロック内の最後の0でない変換係数の(x,y)位置情報をエンコードすることができる。より具体的には、上記last_sig_coeff_x_prefixは、変換ブロック内スキャン順序(scanning order)における最後の(last)有効係数(significant coefficient)の列位置(column position)のプレフィックス(prefix)を表し、上記last_sig_coeff_y_prefixは、上記変換ブロック内の上記スキャン順序(scanning order)における最後の(last)有効係数(significant coefficient)の行位置(row position)のプレフィックス(prefix)を表し、上記last_sig_coeff_x_suffixは、上記変換ブロック内の上記スキャン順序(scanning order)における最後の(last)有効係数(significant coefficient)の列位置(column position)のサフィックス(suffix)を表し、上記last_sig_coeff_y_suffixは、上記変換ブロック内の上記スキャン順序(scanning order)における最後の(last)有効係数(significant coefficient)の行位置(row position)のサフィックス(suffix)を表す。ここで、有効係数は、上記0でない係数(non-zero coefficient)を表すことができる。また、上記スキャン順序は、右上向き対角スキャン順序であってよい。あるいは、上記スキャン順序は、水平スキャン順序、または垂直スキャン順序であってよい。上記スキャン順序は、対象ブロック(CB、またはTBを含むCB)にイントラ/インター予測が適用されるか否かおよび/または具体的なイントラ/インター予測モードに基づいて決定されてよい。
その後、エンコード装置は、上記変換ブロックを4x4サブブロック(sub-block)に分割した後、各4x4サブブロックごとに1ビットのシンタックス要素coded_sub_block_flagを用いて、現サブブロック内に0でない係数が存在するか否かを示すことができる。
coded_sub_block_flagの値が0であれば、それ以上伝送する情報がないので、エンコード装置は、現サブブロックに対する符号化過程を終了できる。逆に、coded_sub_block_flagの値が1であれば、エンコード装置は、sig_coeff_flagに対する符号化過程を引き続き行うことができる。最後の0でない係数を含むサブブロックは、coded_sub_block_flagに対する符号化が不要であり、変換ブロックのDC情報を含んでいるサブブロックは0でない係数を含む確率が高いので、coded_sub_block_flagは符号化されず、その値が1であると仮定されてよい。
coded_sub_block_flagの値が1であることから、現サブブロック内に0でない係数が存在すると判断されると、エンコード装置は、スキャンされた逆の順序(reverse scanning order)によって、二進値を有するsig_coeff_flagをエンコードすることができる。エンコード装置は、スキャン順序によって、それぞれの変換係数に対する1ビットシンタックスエレメントsig_coeff_flagをエンコードすることができる。現在スキャン位置における変換係数の値が0でなければ、sig_coeff_flagの値は1になり得る。ここで、最後の0でない係数を含んでいるサブブロックの場合、最後の0でない係数に対してはsig_coeff_flagがエンコードされる必要がないので、上記サブブロックに対する符号化過程が省略されてよい。sig_coeff_flagが1である場合にのみレベル情報符号化が行われてよく、レベル情報符号化過程には、4個のシンタックスエレメントが用いられてよい。より具体的には、各sig_coeff_flag[xC][yC]は、現TB内の各変換係数位置(xC,yC)における当該変換係数のレベル(値)が0でない(non-zero)か否かを示すことができる。一実施例において、上記sig_coeff_flagは、量子化された変換係数が0でない有効係数であるか否かを示す有効係数フラグのシンタックスエレメントの一例に該当し得る。
sig_coeff_flagに対する符号化後の残ったレベル値は、次式のように導出されてよい。すなわち、符号化しなければならないレベル値を示すシンタックス要素remAbsLevelは、次式のように導出されてよい。
ここで、coeffは、実際の変換係数値を意味する。
また、abs_level_gt1_flagは、当該スキャン位置(n)におけるremAbsLevelが1よりも大きいか否かを示すことができる。例えば、abs_level_gt1_flagの値が0であれば、当該位置の変換係数の絶対値(absolute value)は1であってよい。また、上記abs_level_gt1_flagの値が1であれば、後で符号化しなければならないレベル値を示す上記remAbsLevelは、次の式のようにアップデートされてよい。
また、上述の式2に記載されたremAbsLevelのleast significant coefficient(LSB)値は、par_level_flagによって次の式3のようにエンコードされてよい。
ここで、par_level_flag[n]は、スキャン位置nにおける変換係数レベル(値)のパリティ(parity)を示すことができる。
par_leve_flagエンコーディング後にエンコードしなければならない変換係数レベル値remAbsLevelは、次の式のようにアップデートされてよい。
abs_level_gt3_flagは、当該スキャン位置(n)におけるremAbsLevelが3よりも大きいか否かを示すことができる。abs_level_gt3_flagが1である場合にのみ、abs_remainderに対するエンコーディングが行われてよい。実際の変換係数値であるcoeffと各シンタックス要素との関係は、次の式の通りでよい。
また、次の表は、上述の式5と関連する例示を表す。
ここで、|coeff|は、変換係数レベル(値)を表し、変換係数に対するAbsLevelとして示されてもよい。また、各係数の符号は、1ビットシンボルであるcoeff_sign_flagを用いてエンコードされてよい。
また、例えば、上記変換スキップフラグの値が1であれば、表3に示すように、変換ブロックの残差係数に関するシンタックスエレメントsb_coded_flag、sig_coeff_flag、coeff_sign_flag、abs_level_gtx_flag、par_level_flagおよび/またはabs_remainderがパージングされてよく、上記シンタックスエレメントに基づいて上記残差係数が導出されてよい。この場合、上記シンタックスエレメントは、順次パージングされてもよく、パージング順序が変更されてもよい。また、上記abs_level_gtx_flagは、abs_level_gt1_flag、abs_level_gt3_flag、abs_level_gt5_flag、abs_level_gt7_flagおよび/またはabs_level_gt9_flagを表すことができる。例えば、abs_level_gtx_flag[n][j]は、スキャン位置nで変換係数の絶対値またはレベル(値)が(j<<1)+1よりも大きいか否かを示すフラグであってよい。上記(j<<1)+1は、場合によって、第1閾値(臨界値)、第2閾値などの所定の閾値に代替されてもよい。
一方、CABACは、高い性能を提供するが、処理量(スループット、throughput)性能がよくないという短所がある。これは、CABACの正規符号化エンジンに起因するものであり、正規符号化(すなわち、CABACの正規符号化エンジンを用いたエンコーディング)は、以前のビン(bin)の符号化によってアップデートされた確率状態および範囲を用いるため、高いデータ依存性を示し、確率区間を読んで現在の状態を判断することに長い時間がかかることがある。CABACの処理量問題は、コンテキスト符号化ビン(context-coded bin)の数を制限することによって解決できる。例えば、上記表2のように、sig_coeff_flag、abs_level_gt1_flag、par_level_flag、abs_level_gt3_flagを表現するために用いられたビンの和が、当該ブロックのサイズによる個数に制限されてよい。また、例えば、上記表3のように、sig_coeff_flag、coeff_sign_flag、abs_level_gt1_flag、par_level_flag、abs_level_gt3_flag、abs_level_gt5_flag、abs_level_gt7_flag、abs_level_gt9_flagを表現するために用いられたビンの和が、当該ブロックのサイズによる個数に制限されてよい。一例として、当該ブロックが4x4サイズのブロックである場合に、上記sig_coeff_flag、abs_level_gt1_flag、par_level_flag、abs_level_gt3_flagまたはsig_coeff_flag、coeff_sign_flag、abs_level_gt1_flag、par_level_flag、abs_level_gt3_flag、abs_level_gt5_flag、abs_level_gt7_flag、abs_level_gt9_flagに対するビンの和は、32個(または、例えば28個)に制限されてよく、当該ブロックが2x2サイズのブロックである場合に、上記sig_coeff_flag、abs_level_gt1_flag、par_level_flag、abs_level_gt3_flagに対するビンの和は、8個(または、例えば7個)に制限されてよい。上記ビンの制限された個数は、remBinsPass1またはRemCcbsで示すことができる。または、一例として、より高いCABAC処理量のために、コンテキスト符号化ビン(context coded bin)の個数がコーディング対象CGを含むブロック(CBまたはTB)に対して制限されてよい。言い換えると、コンテキスト符号化ビンの個数がブロック(CBまたはTB)単位で制限されてよい。例えば、現ブロックのサイズが16x16であれば、現CGに関係なく、現ブロックに対するコンテキスト符号化ビンの個数が上記現ブロックのピクセル個数の1.75倍、すなわち、448個に制限されてよい。
この場合、エンコード装置は、コンテキスト要素の符号化に、制限された個数のコンテキスト符号化ビンを全て使用した場合は、残りの係数を、コンテキストコーディングを用いずに後述の上記係数に対する二進化方法によって二進化し、バイパスコーディングを行うことができる。言い換えると、例えば、4x4 CGに対してコーディングされたコンテキスト符号化ビン(context coded bin)の数が32(または、例えば28)、または2x2 CGに対してコーディングされたコンテキスト符号化ビンの数が8(または、例えば7)になる場合には、それ以上コンテキスト符号化ビンでコーディングされるsig_coeff_flag、abs_level_gt1_flag、par_level_flag、abs_level_gt3_flagは、コーディングされなくてよく、直ちにdec_abs_levelにコーディングされてよい。または、例えば、4x4ブロックに対してコーディングされたコンテキスト符号化ビン(context coded bin)の数が全体ブロックのピクセル個数の1.75倍、すなわち、28に制限される場合に、それ以上コンテキスト符号化ビンとしてコーディングされるsig_coeff_flag、abs_level_gt1_flag、par_level_flag、abs_level_gt3_flagは、コーディングされなくてよく、後述の表5のように直ちにdec_abs_levelとしてコーディングされてよい。
dec_abs_levelに基づいて|coeff|値が導出されてよい。この場合、変換係数値である|coeff|は、次式のように導出されてよい。
また、上記coeff_sign_flagは、当該スキャン位置(n)における変換係数レベルの符号(sign)を示すことができる。すなわち、上記coeff_sign_flagは、当該スキャン位置(n)における変換係数の符号(sign)を示すことができる。
図8は、4x4ブロック内変換係数の例を示す図である。
図8の4x4ブロックは、量子化された係数の一例を表す。図8に示すブロックは、4x4変換ブロックであるか、または8x8、16x16、32x32、64x64変換ブロックの4x4サブブロックであってよい。図8の4x4ブロックは、ルマブロックまたはクロマブロックを表すことができる。
一方、上述の内容のように、エンコード装置は、入力信号が二進値でないシンタックスエレメントである場合には、上記入力信号の値を二進化(binarization)して入力信号を二進値に変換できる。また、デコード装置は、上記シンタックスエレメントをデコードし、上記シンタックスエレメントの二進化された値(すなわち、二進化されたビン)を導出することができ、上記二進化された値を逆二進化して上記シンタックスエレメントの値を導出することができる。上記二進化過程は、後述するトランケイテッドライス(Truncated Rice,TR)二進化プロセス(binarization process)、k次Exp-Golomb(k-th order Exp-Golomb,EGk)二進化プロセス(binarization process)、k次リミテッドExp-Golomb(Limited k-th order Exp-Golomb, Limited EGk)、または固定長(Fixed-Length,FL)二進化プロセス(binarization process)などで行われてよい。また、逆二進化過程は、上記TR二進化プロセス、上記EGk二進化プロセスまたは上記FL二進化プロセスに基づいて行われて上記シンタックスエレメントの値を導出する過程を表すことができる。
例えば、上記TR二進化プロセスは、次のように行われてよい。
上記TR二進化プロセスの入力(input)は、TR二進化に対する要求(要請)とシンタックスエレメントに対するcMaxおよびcRiceParamとであってよい。また、上記TR二進化プロセスの出力(output)は、ビンストリングに対応する値symbolValに対するTR二進化であってよい。
具体的には、一例として、シンタックスエレメントに対する接尾辞(suffix)ビンストリングが存在する場合には、上記シンタックスエレメントに対するTRビンストリングは、接頭辞(prefix)ビンストリングと接尾辞ビンストリングとの結合(concatenation)であってよく、上記接尾辞ビンストリングが存在しない場合には、上記シンタックスエレメントに対する上記TRビンストリングは、上記接頭辞ビンストリングであってよい。例えば、上記接頭辞ビンストリングは、後述のように導出されてよい。
上記シンタックスエレメントに対する上記symbolValの接頭辞値(prefix value)は、次式のように導出されてよい。
ここで、prefixValは、上記symbolValの接頭辞値を表すことができる。上記シンタックスエレメントの上記TRビンストリングの接頭辞(すなわち、接頭辞ビンストリング)は、後述のように導出されてよい。
例えば、上記prefixValがcMax>>cRiceParamよりも小さい場合に、接頭辞ビンストリングは、binIdxによってインデキシングされる(indexed)長さprefixVal+1のビットストリング(bit string)であってよい。すなわち、上記prefixValがcMax>>cRiceParamよりも小さい場合に、上記接頭辞ビンストリングは、binIdxが示すprefixVal+1ビット数のビットストリングであってよい。prefixValよりも小さいbinIdxに対するビンは、1と同一であってよい。また、prefixValと同じbinIdxに対するビンは、0と同一であってよい。
例えば、上記prefixValに対する単項二進化(unary binarization)で導出されるビンストリングは、次表の通りでよい。
一方、上記prefixValがcMax>>cRiceParamよりも小さくない場合に、上記接頭辞ビンストリングは、長さがcMax>>cRiceParamであり、全てのビンが1であるビットストリングであってよい。
また、cMaxがsymbolValよりも大きく、cRiceParamが0よりも大きい場合に、TRビンストリングの接尾辞ビンストリングが存在してよい。例えば、上記接尾辞ビンストリングは、後述のように導出されてよい。
上記シンタックスエレメントに対する上記symbolValの接尾辞値(suffix value)は、次式のように導出されてよい。
ここで、suffixValは、上記symbolValの接尾辞値を表すことができる。
TRビンストリングの接尾辞(すなわち、接尾辞ビンストリング)は、cMax値が(1<<cRiceParam)-1であるsuffixValに対するFL二進化プロセスに基づいて導出されてよい。
一方、入力パラメータであるcRiceParamの値が0であれば、上記TR二進化は、正確にトランケイテッド単項二進化(truncated unary binarization)であってよく、常にデコードされるシンタックスエレメントの可能な最大値と同じcMax値が用いられてよい。
また、例えば、上記EGk二進化プロセスは、次のように行われてよい。ue(v)でコーディングされたシンタックスエレメントは、Exp-Golombコーディングされたシンタックスエレメントであってよい。
一例として、0次Exp-Golomb(0-th order Exp-Golomb,EG0)二進化プロセスは、次のように行われてよい。
上記シンタックスエレメントに対するパージングプロセス(parsing process)は、ビットストリームの現在位置から始まって1番目のノンゼロ(ゼロでない、non-zero)ビットを含むビットを読んで0のような(0である、equal to 0)先行ビット数を数えること(counting)から始まってよい。上記過程を次表のように表すことができる。
また、変数codeNumは、次式のように導出されてよい。
ここで、read_bits(leadingZeroBits)から返された値、すなわち、read_bits(leadingZeroBits)が示す値は、最初に記録された最上位ビット(最も重要なビット、most significant bit)に対する符号なし整数(unsigned integer)の二進表現(binary representation)として解釈できる。
ビットストリングを「接頭辞(prefix)」ビットと「接尾辞(suffix)」ビットとに分離したExp-Golombコードの構造は、次表のように表すことができる。
「接頭辞」ビットは、leadingZeroBits計算のために上述の内容のようにパージングされたビットであってよく、表8で、ビットストリングの0または1で示されてよい。すなわち、上記表8の0または1で示されたビットストリングは、接頭辞ビットストリングを表すことができる。「接尾辞」ビットは、codeNumの計算でパージングされるビットであってよく、上記表8でxiで示されてよい。すなわち、上記表8のxiで示されたビットストリングは、接尾辞ビットストリングを表すことができる。ここで、iは、0からLeadingZeroBits-1の範囲の値であってよい。また、各xiは、0または1と同一であってよい。
上記codeNumに割り当てられるビットストリングは、次表の通りでよい。
シンタックスエレメントのディスクリプタ(descriptor)がue(v)である場合に、すなわち、シンタックスエレメントがue(v)でコーディングされた場合に、上記シンタックスエレメントの値は、codeNumと同一であってよい。
また、例えば、上記EGk二進化プロセスは、次のように行われてよい。
上記EGk二進化プロセスの入力(input)は、EGk二進化に対する要求であってよい。また、上記EGk二進化プロセスの出力(output)は、ビンストリングに対応する値symbolValに対するEGk二進化であってよい。
symbolValに対するEGk二進化プロセスのビットストリングは、次のように導出されてよい。
上記表10を参照すると、put(X)の各コール(each call)を用いて二進値Xをビンストリングの末尾に追加することができる。ここで、Xは、0または1であってよい。
また、例えば、上記リミテッドEGk二進化プロセスは、次のように行われてよい。
上記リミテッドEGk二進化プロセスの入力(input)は、リミテッドEGk二進化に対する要求およびライスパラメータriceParam、最大値の二進対数を表す変数であるlog2TransformRangeおよび最大接頭辞拡張長を表す変数であるmaxPreExtLenであってよい。また、上記リミテッドEGk二進化プロセスの出力(output)は、ビンストリングに対応する値symbolValに対するリミテッドEGk二進化であってよい。
symbolValに対するリミテッドEGk二進化プロセスのビットストリングは、次のように導出されてよい。
また、例えば、上記FL二進化プロセスは、次のように行われてよい。
上記FL二進化プロセスの入力(input)は、FL二進化に対する要求および上記シンタックスエレメントに対するcMaxであってよい。また、上記FL二進化プロセスの出力(output)は、ビンストリングに対応する値symbolValに対するFL二進化であってよい。
FL二進化は、シンボル値symbolValの固定長であるビット数を有するビットストリングを用いて構成されてよい。ここで、上記固定長ビットは、符号のない整数ビットストリング(unsigned integer bit string)であってよい。すなわち、FL二進化によってシンボル値symbolValに対するビットストリングが導出されてよく、上記ビットストリングのビット長(すなわち、ビット数)は、固定長であってよい。
例えば、上記固定長は、次式のように導出されてよい。
FL二進化に対するビンのインデキシングは、最上位ビットから最下位ビットの順序で増加する値を使用する方式であってよい。例えば、上記最上位ビットと関連するビンインデックスは、binIdx=0であってよい。
一方、例えば、上記残差情報のうちのシンタックスエレメントabs_remainderに対する二進化プロセスは、次のように行われてよい。
上記abs_remainderに対する二進化プロセスの入力は、シンタックスエレメントabs_remainder[n]の二進化に対する要求、色相成分(colour component)cIdx、ルマ位置(x0,y0)であってよい。上記ルマ位置(x0,y0)は、ピクチャの左上端ルマサンプルを基準とする現ルマ変換ブロックの左上端サンプルを示すことができる。
上記abs_remainderに対する二進化プロセスの出力(output)は、上記abs_remainderの二進化(すなわち、上記abs_remainderの二進化されたビンストリング)であってよい。上記二進化プロセスによって上記abs_remainderに対する使用可能ビンストリングが導出されてよい。
上記abs_remainder[n]に対するライスパラメータcRiceParamは、上記色相成分cIdxおよびルマ位置(x0,y0)、現係数スキャン位置(xC,yC)、変換ブロックの幅の二進対数であるlog2TbWidth、ならびにび変換ブロックの高さの二進対数であるlog2TbHeightを入力として行われるライスパラメータ導出過程によって導出されてよい。上記ライスパラメータ導出過程に関する具体的な説明は後述する。
また、例えば、現在コーディングされるabs_remainder[n]に対するcMaxは、上記ライスパラメータcRiceParamに基づいて導出されてよい。上記cMaxは、次式のように導出されてよい。
一方、上記abs_remainderに対する二進化、すなわち、上記abs_remainderに対するビンストリングは、接尾辞(suffix)ビンストリングが存在する場合には、接頭辞(prefix)ビンストリングと接尾辞ビンストリングとの結合(concatenation)であってよい。また、上記接尾辞ビンストリングが存在しない場合には、上記abs_remainderに対する上記ビンストリングは、上記接頭辞ビンストリングであってよい。
例えば、上記接頭辞ビンストリングは、後述のように導出されてよい。
上記abs_remainder[n]の接頭辞値(prefix value)prefixValは、次式のように導出されてよい。
上記abs_remainder[n]の上記ビンストリングの接頭辞(すなわち、接頭辞ビンストリング)は、上記cMaxおよび上記cRiceParamを入力として用いる上記prefixValに対するTR二進化プロセスによって導出されてよい。
上記接頭辞ビンストリングが、全てのビットが1であり、ビット長が6であるビットストリングと同一であれば、上記abs_remainder[n]の上記ビンストリングの接尾辞ビンストリングが存在してよく、後述のように導出されてよい。
上記abs_remainder[n]に対するライスパラメータ導出過程は、次の通りでよい。
上記ライスパラメータ導出過程の入力は、色相成分インデックス(colour component index)cIdx、ルマ位置(x0,y0)、現係数スキャン位置(xC,yC)、変換ブロックの幅の二進対数(binary logarithm)であるlog2TbWidthおよび変換ブロックの高さの二進対数インlog2TbHeightであってよい。上記ルマ位置(x0,y0)は、ピクチャの左上端ルマサンプルを基準とする現ルマ変換ブロックの左上端サンプルを示すことができる。また、上記ライスパラメータ導出過程の出力は、上記ライスパラメータcRiceParamであってよい。
例えば、与えられたコンポーネントインデックスcIdx、上記左上端ルマ位置(x0,y0)を有する変換ブロックに対する配列AbsLevel[x][y]に基づき、変数locSumAbsは、次の表に表された疑似コード(pseudo code)のように導出されてよい。
その後、与えられた変数locSumAbsに基づき、上記ライスパラメータcRiceParamは、次表のように導出されてよい。
また、例えば、abs_remainder[n]に対するライスパラメータ導出過程においてbaseLevelは、4に設定されてよい。
あるいは、例えば、現ブロックの変換をスキップするか否かに基づいて上記ライスパラメータcRiceParamが決定されてよい。すなわち、現CGを含む現TBに対し変換が適用されない場合に、言い換えると、上記現CGを含む上記現TBに対して変換スキップ(transform skip)が適用される場合に、上記ライスパラメータcRiceParamは、1となるよう導出されてよい。
また、上記abs_remainderの接尾辞値(suffix value)suffixValは、次式のように導出されてよい。
上記abs_remainderの上記ビンストリングの接尾辞ビンストリングは、kがcRiceParam+1に設定され、riceParamはcRiceParamに設定され、log2TransformRangeは15に設定され、maxPreExtLenは11に設定される、上記suffixValに対するリミテッドEGk二進化プロセスによって導出されてよい。
一方、例えば、上記残差情報のうちのシンタックスエレメントdec_abs_levelに対する二進化プロセスは、次のように行われてよい。
上記dec_abs_levelに対する二進化プロセスの入力は、シンタックスエレメントdec_abs_level[n]の二進化に対する要求、色相成分(colour component)cIdx、ルマ位置(x0,y0)、現係数スキャン位置(xC,yC)、変換ブロックの幅の二進対数(binary logarithm)であるlog2TbWidthおよび変換ブロックの高さの二進対数であるlog2TbHeightであってよい。上記ルマ位置(x0,y0)は、ピクチャの左上端ルマサンプルを基準とする現ルマ変換ブロックの左上端サンプルを示すことができる。
上記dec_abs_levelに対する二進化プロセスの出力(output)は、上記dec_abs_levelの二進化(すなわち、上記dec_abs_levelの二進化されたビンストリング)であってよい。上記二進化プロセスによって上記dec_abs_levelに対する使用可能ビンストリングが導出されてよい。
上記dec_abs_level[n]に対するライスパラメータcRiceParamは、上記色相成分cIdxおよびルマ位置(x0,y0)、現係数スキャン位置(xC,yC)、変換ブロックの幅の二進対数であるlog2TbWidthおよび変換ブロックの高さの二進対数であるlog2TbHeightを入力として行われるライスパラメータ導出過程によって導出されてよい。上記ライスパラメータ導出過程に関する具体的な説明は、後述する。
また、例えば、上記dec_abs_level[n]に対するcMaxは、上記ライスパラメータcRiceParamに基づいて導出されてよい。上記cMaxは、次式のように導出されてよい。
一方、上記dec_abs_level[n]に対する二進化、すなわち、上記dec_abs_level[n]に対するビンストリングは、接尾辞(suffix)ビンストリングが存在する場合には、接頭辞(prefix)ビンストリングと接尾辞ビンストリングとの結合(concatenation)であってよい。また、上記接尾辞ビンストリングが存在しない場合には、上記dec_abs_level[n]に対する上記ビンストリングは、上記接頭辞ビンストリングであってよい。
例えば、上記接頭辞ビンストリングは、後述のように導出されてよい。
上記dec_abs_level[n]の接頭辞値(prefix value)prefixValは、次式のように導出されてよい。
上記dec_abs_level[n]の上記ビンストリングの接頭辞(すなわち、接頭辞ビンストリング)は、上記cMaxおよび上記cRiceParamを入力として用いる上記prefixValに対するTR二進化プロセスによって導出されてよい。
上記接頭辞ビンストリングが、全てのビットが1であり、ビット長が6であるビットストリングと同一であれば、上記dec_abs_level[n]の上記ビンストリングの接尾辞ビンストリングが存在してよく、後述のように導出されてよい。
上記dec_abs_level[n]に対するライスパラメータ導出過程は、次の通りでよい。
上記ライスパラメータ導出過程の入力は、色相成分インデックス(colour component Index)cIdx、ルマ位置(x0,y0)、現係数スキャン位置(xC,yC)、変換ブロックの幅の二進対数(binary logarithm)であるlog2TbWidthおよび変換ブロックの高さの二進対数であるlog2TbHeightであってよい。上記ルマ位置(x0,y0)は、ピクチャの左上端ルマサンプルを基準とする現ルマ変換ブロックの左上端サンプルを示すことができる。また、上記ライスパラメータ導出過程の出力は、上記ライスパラメータcRiceParamであってよい。
例えば、与えられたコンポーネントインデックスcIdx、上記左上端ルマ位置(x0,y0)を有する変換ブロックに対する配列AbsLevel[x][y]に基づき、変数locSumAbsは、次の表に表された疑似コード(pseudo code)のように導出されてよい。
その後、与えられた変数locSumAbsに基づき、上記ライスパラメータcRiceParamは、次表のように導出されてよい。
また、例えば、dec_abs_level[n]に対するライスパラメータ導出過程において、baseLevelは、0に設定されてよく、上記ZeroPos[n]は、次の数式のように導出されてよい。
また、上記dec_abs_level[n]の接尾辞値(suffix value)suffixValは、次式のように導出されてよい。
上記dec_abs_level[n]の上記ビンストリングの接尾辞ビンストリングは、kがcRiceParam+1に設定され、truncSuffixLenは15に設定されmaxPreExtLenは11に設定される、上記suffixValに対するリミテッドEGk二進化プロセスによって導出されてよい。
一方、上述したRRCとTSRCとは、次のような相違を有し得る。
- 例えば、TSRCにおいて、シンタックスエレメントabs_remainder[]に対するライスパラメータは、1と導出されてよい。RRCにおいて、シンタックスエレメントabs_remainder[]のライスパラメータcRiceParamは、上述の内容のように、上記lastAbsRemainderおよび上記lastRiceParamに基づいて導出されてよいが、TSRCにおけるシンタックスエレメントabs_remainder[]のライスパラメータcRiceParamは、1と導出されてよい。すなわち、例えば、現ブロック(例えば、現TB)に対して変換スキップ(transform skip)が適用される場合に、上記現ブロックに対するTSRCのabs_remainder[]に対するライスパラメータcRiceParamは、1と導出されてよい。
- また、例えば、表3および表4を参照すると、RRCでは、abs_level_gtx_flag[n][0]および/またはabs_level_gtx_flag[n][1]がシグナリングされてよいが、TSRCでは、abs_level_gtx_flag[n][0]、abs_level_gtx_flag[n][1]、abs_level_gtx_flag[n][2]、abs_level_gtx_flag[n][3]およびabs_level_gtx_flag[n][4]がシグナリングされてよい。ここで、上記abs_level_gtx_flag[n][0]は、abs_level_gt1_flagまたは第1係数レベルフラグとして表すことができ、上記abs_level_gtx_flag[n][1]は、abs_level_gt3_flagまたは第2係数レベルフラグとして表すことができ、上記abs_level_gtx_flag[n][2]は、abs_level_gt5_flagまたは第3係数レベルフラグとして表すことができ、上記abs_level_gtx_flag[n][3]は、abs_level_gt7_flagまたは第4係数レベルフラグとして表すことができ、上記abs_level_gtx_flag[n][4]は、abs_level_gt9_flagまたは第5係数レベルフラグとして表すことができる。具体的には、上記第1係数レベルフラグは、係数レベルが第1閾値(例えば、1)よりも大きいか否かに関するフラグ、上記第2係数レベルフラグは、係数レベルが第2閾値(例えば、3)よりも大きいか否かに関するフラグ、上記第3係数レベルフラグは、係数レベルが第3閾値(例えば、5)よりも大きいか否かに関するフラグ、上記第4係数レベルフラグは、係数レベルが第4閾値(例えば、7)よりも大きいか否かに関するフラグ、上記第5係数レベルフラグは、係数レベルが第5閾値(例えば、9)よりも大きいか否かに関するフラグであってよい。上述の内容のように、TSRCは、RRCと比較して、abs_level_gtx_flag[n][0]、abs_level_gtx_flag[n][1]に加えて、abs_level_gtx_flag[n][2]、abs_level_gtx_flag[n][3]およびabs_level_gtx_flag[n][4]をさらに含むことができる。
- また、例えば、RRCにおいてシンタックスエレメントcoeff_sign_flagは、バイパスコーディングされてよいが、TSRCでは、シンタックスエレメントcoeff_sign_flagは、バイパスコーディングまたはコンテキストコーディングされてよい。
- また、例えば、現ブロックに対するコンテキスト符号化ビンが尽きた場合に、RRCでは、シンタックスエレメントdec_abs_levelとしてコーディングされてよいが、TSRCでは、シンタックスエレメントabs_remainderとしてコーディングされてよい。
- また、例えば、RRCの変換係数パージング順序は、最後の0でない係数を基準に右下端-左上端方向の右上方対角スキャン順序でパージングされてよいが、TSRCでは、左上端-右下端方向の約束された右上方対角スキャン順序でパージングされてよく、最後の0でない係数の位置情報は省略されてよい。
- また、例えば、RRCでは、従属量子化(Dependent Quantization,DQ)またはサインデータハイディング(Sign Data Hiding,SDH)方法が適用されることがあるが、TSRCは、従属量子化およびサインデータハイディング方法が用いられなくてよい。
また、残差コーディングと関連してサインデータハイディング(Sign Data Hiding,SDH)方法を提案することができる。上記サインデータハイディング方法は、次の通りでよい。
変換係数を導出するとき、変換係数の符号は、1ビット(bit)のサインフラグ(上述したシンタックスエレメントcoeff_sign_flag)に基づいて導出されてよい。これと関連して、SDHは、コーディング効率を向上させるために、サブブロック/係数グループ(Coefficient Group,CG)内の最初の有効変換係数に対するcoeff_sign_flagの明示的シグナリングを省略する技術を表すことができる。ここで、上記最初の有効変換係数に対するcoeff_sign_flagの値は、当該サブブロック/係数グループ内の上記有効変換係数の絶対レベル(すなわち、絶対値)の和に基づいて導出されてよい。すなわち、上記最初の有効変換係数の符号(sign)は、当該サブブロック/係数グループ内の有効変換係数に対する絶対レベルの和に基づいて導出されてよい。一方、有効変換係数は、(絶対)値が0でない変換係数(non-zero transform coefficient)を意味できる。例えば、上記有効変換係数に対する絶対レベルの和が偶数(even)である場合に、上記最初の有効変換係数に対するcoeff_sign_flagの値は1と導出されてよく、上記有効変換係数に対する絶対レベルの和が奇数(odd)である場合に、上記最初の有効変換係数に対するcoeff_sign_flagの値は0と導出されてよい。言い換えると、例えば、上記有効変換係数に対する絶対レベルの和が偶数(even)である場合に、上記最初の有効変換係数に対する符号は、負数(negative value)と導出されてよく、上記有効変換係数に対する絶対レベルの和が奇数(odd)である場合に、上記最初の有効変換係数に対する符号は、正数(positive value)と導出されてよい。あるいは、例えば、上記有効変換係数に対する絶対レベルの和が偶数(even)である場合に、上記最初の有効変換係数に対するcoeff_sign_flagの値は0と導出されてよく、上記有効変換係数に対する絶対レベルの和が奇数(odd)である場合に、上記最初の有効変換係数に対するcoeff_sign_flagの値は1と導出されてよい。言い換えると、例えば、上記有効変換係数に対する絶対レベルの和が偶数(even)である場合に、上記最初の有効変換係数に対する符号は、正数(positive value)と導出されてよく、上記有効変換係数に対する絶対レベルの和が奇数(odd)である場合に、上記最初の有効変換係数に対する符号は、負数(negative value)と導出されてよい。
例えば、残差シンタックスにおける上記SDHは、次表のように表すことができる。
表16を参照すると、変数signHiddenFlagは、上記SDHが適用されるか否かを示すことができる。上記変数signHiddenFlagは、signHiddenと呼ぶこともできる。例えば、変数signHiddenFlagの値が0である場合に、変数signHiddenFlagは、上記SDHが適用されないことを示すことができ、変数signHiddenFlagの値が1である場合に、変数signHiddenFlagは、上記SDHが適用されることを示すことができる。例えば、変数signHiddenFlagの値は、シグナリングされるフラグ情報(例えば、sh_sign_data_hiding_used_flagまたはpic_sign_data_hiding_enabled_flagまたはsps_sign_data_hiding_enabled_flag)に基づいて設定されてよい。また、例えば、変数signHiddenFlagの値は、lastSigScanPosSbおよびfirstSigScanPosSbに基づいて設定されてよい。ここで、lastSigScanPosSbは、スキャン順序によって当該サブブロック/係数グループ内で探索される最後の有効変換係数位置を示すことができ、firstSigScanPosSbは、スキャン順序によって当該サブブロック/係数グループ内で探索される最初の有効変換係数位置を示すことができる。一般に、lastSigScanPosSbは、firstSigScanPosSbよりも相対的に高周波成分領域に位置してよい。したがって、lastSigScanPosSb-firstSigScanPosSbが所定の閾値よりも大きい場合に、上記signHidden値は1と導出されてよく(すなわち、SDH適用)、その他の場合に、上記signHidden値は0と導出されてよい(すなわち、SDH微積用)。ここで、例えば、表35を参照すると、上記閾値は3に設定されてよい。
また、表16を参照すると、signHiddenFlagの値が0(すなわち、!signHiddenFlag)であっても、現在の係数がスキャン順序による(サブ)ブロック内の最初の有効係数でない場合(すなわち、n!=firstSigScanPosSb)に、上記現在の係数に対するcoeff_sign_flag[n]は、明示的にシグナリングされてよい。
また、表16を参照すると、signHiddenFlagの値が1であり、現在の係数がスキャン順序による(サブ)ブロック内の最初の有効係数であれば(すなわち、n=first SigScanPosSb)、上記現在の係数に対するcoeff_sign_flag[n]の明示的シグナリングは省略されてよい。この場合、上記現在の係数(すなわち、最初の有効係数)に対するcoeff_sign_flag[n]の値は、次のように導出されてよい。例えば、上記最初の有効係数に対するcoeff_sign_flag[n]の値は、当該(サブ)ブロック内の上記最初の有効係数を除く残り有効係数に対するcoeff_sign_flag[n]値に基づいて導出されてよい。一例として、上記有効係数に対するcoeff_sign_flag[n]値の和が偶数であれば、上記最初の有効係数に対するcoeff_sign_flag[n]は1と導出されてよく、上記有効係数に対するcoeff_sign_flag[n]値の和が奇数であれば、上記最初の有効係数に対するcoeff_sign_flag[n]は0と導出されてよい。あるいは、他の例として、上記有効係数に対するcoeff_sign_flag[n]値の和が偶数であれば、上記最初の有効係数に対するcoeff_sign_flag[n]は0と導出されてよく、上記有効係数に対するcoeff_sign_flag[n]値の和が奇数であれば、上記最初の有効係数に対するcoeff_sign_flag[n]は1と導出されてよい。
一方、ハイレベルシンタックス(VPS、SPS、PPS、スライスヘッダシンタックスなど)またはローレベルシンタックス(スライスデータシンタックス、コーディングユニットシンタックス、変換ユニットシンタックスなど)において上述のサインデータハイディングが活性化され、上記sh_ts_residual_coding_disabled_flagが1である場合に、RRCのサインデータハイディング過程が無損失(可逆、ロスレス、lossless)コーディングにおいて用いられることがある。このため、エンコード装置における誤った設定によって無損失コーディングが不可能になることがある。あるいは、無損失コーディングではなく損失コーディング(loss coding)(すなわち、非可逆的なコーディング方法)が適用され、変換スキップが適用された残差信号がRRCでコーディングされながら同時にBDPCMが適用される場合に、BDPCMは、残差間の差分(difference)によって残差値が0になる区間が、一般の場合に比べて多く発生するにもかかわらず、SDH適用条件に符合してSDHが行われることにより、コーディング損失が発生することがある。具体的には、例えば、CG内の0番位置および15番位置に有効変換係数(ノンゼロ残差データ)がそれぞれ存在し、上記CG内の残り位置の変換係数の値は0である場合に、上述したSDH適用条件によって上記CGにSDHが適用されてよく、したがって、上記CGの最初の有効変換係数に対するサインデータ(すなわち、サインフラグのコーディング)は省略されてよい。したがって、この場合、サインデータの省略のために、量子化段階で上記CGの只2つの残差データのパリティが調節されることがあるところ、むしろSDHが適用されない場合に比べてよりコーディング損失が発生することがある。このような事例は、BDPCMが適用されないブロックでも発生し得るが、BDPCMの特性上、周辺残差との差分を用いてレベルを下げてしまうため、SDHを適用する上で不都合がより頻繁に発生することがある。
そこで、本文書は、SDHとsh_ts_residual_coding_disabled_flag=1である場合の残差コーディング(すなわち、現スライス内の変換スキップブロックの残差サンプルをRRCでコーディング)とが共に用いられ、意図せぬコーディング損失を引き起こしたり誤動作することを防止するために、上述した2つの技術間の従属性/制約を設定する実施例を提案する。
一方、上述したように、残差データコーディング方法は、レギュラ残差コーディング(Regular Residual Coding,RRC)と変換スキップ残差コーディング(Transform Skip Residual Coding,TSRC)とが存在してよい。
上述した2つの方法のうち、現ブロックに対する残差データコーディング方法は、表1に示すように、transform_skip_flagおよびsh_ts_residual_coding_disabled_flagの値に基づいて決定されてよい。ここで、シンタックスエレメントsh_ts_residual_coding_disabled_flagは、上記TSRCが使用可能であるか否かを示すことができる。したがって、上記transform_skip_flagが、変換スキップされることを示す場合にも、sh_ts_residual_coding_disabled_flagが上記TSRCが使用可能でないことを示すと、変換スキップブロックに対してRRCによるシンタックスエレメントがシグナリングされてよい。すなわち、transform_skip_flagの値が0であるか、sh_ts_residual_coding_disabled_flagの値が1である場合に、RRCが用いられてよく、その他の場合にはTSRCが用いられてよい。
本文書は、一実施例として、sh_ts_residual_coding_disabled_flagがpic_sign_data_hiding_enabled_flagに従属する方法を提案する。例えば、本実施例において提案するシンタックスエレメントは、次表の通りでよい。
ここで、例えば、上記pic_sign_data_hiding_enabled_flagは、サインデータハイディングが使用可能であるか否かに関するフラグであってよい。例えば、pic_sign_data_hiding_enabled_flagは、サインデータハイディングが使用可能であるか否かを示すことができる。すなわち、例えば、pic_sign_data_hiding_enabled_flagは、シーケンス(sequence)またはピクチャヘッダ(すなわち、ピクチャヘッダ構造(picture_header_structure()))に対するピクチャのブロックに対してサインデータハイディングが使用可能であるか否かを示すことができる。例えば、pic_sign_data_hiding_enabled_flagは、現スライスに対してサインデータハイディングが用いられるか否かを示すサインデータハイディング使用フラグが存在できるか否かを示すことができる。例えば、値が1である上記pic_sign_data_hiding_enabled_flagは、上記サインデータハイディングが使用可能であることを示すことができ、値が0である上記pic_sign_data_hiding_enabled_flagは、上記サインデータハイディングが使用可能でないことを示すことができる。例えば、値が1である上記pic_sign_data_hiding_enabled_flagは、上記サインデータハイディングが適用されたサインフラグが存在できることを示すことができ、値が0である上記pic_sign_data_hiding_enabled_flagは、上記サインデータハイディングが適用されたサインフラグが存在しないことを示すことができる。
上記表17によれば、サインデータハイディングが使用可能でない場合にのみ、sh_ts_residual_coding_disabled_flagがシグナリングされてよい。また、サインデータハイディングが使用可能である場合に、sh_ts_residual_coding_disabled_flagは、シグナリングされなくてよく、sh_ts_residual_coding_disabled_flagの値は、0(現スライス内の変換スキップブロックの残差サンプルをTSRCシンタックスでコーディング)または1(現スライス内の変換スキップブロックの残差サンプルをRRCシンタックスでコーディング)と見なされて(infer)よい。
ここで、例えば、上記pic_sign_data_hiding_enabled_flagは、ピクチャヘッダシンタックスまたはスライスヘッダシンタックスとしてシグナリングされてよい。例えば、上記pic_sign_data_hiding_enabled_flagが上記ピクチャヘッダシンタックス以外のシンタックスとしてシグナリングされる場合には、他の名称で呼ばれてよい。例えば、上記pic_sign_data_hiding_enabled_flagは、スライスヘッダのシンタックスでシグナリングされる場合には、sh_sign_data_hiding_enabled_flagと表すこともできる。また、sh_ts_residual_coding_disabled_flagは、スライスヘッダシンタックスとしてシグナリングされてよく、またはスライスヘッダシンタックスではなく他のハイレベルシンタックス(High Level Syntax,HLS)(例えば、SPSシンタックス/VPSシンタックス/PPSシンタックス/ピクチャヘッダ(picture header)シンタックス/DPSシンタックスなど)もしくはローレベル(CU/TU)でシグナリングされてもよい。シグナリングされるシンタックスの上/下位関係またはシンタックス上の位置に関係なく、SDHが使用可能であるか否かによって残差コーディング方法が決定される場合には、本実施例に符合するものと解釈されてよい。
一方、既存のイメージ/ビデオコーディングによれば、ハイレベルシンタックス(SPSシンタックス/VPSシンタックス/PPSシンタックス/DPSシンタックス/ピクチャヘッダシンタックス(picture header syntax)/スライスヘッダシンタックスなど)またはローレベル(CU/TU)で上記SDHが活性化され、sh_ts_residual_coding_disabled_flagが1である場合に、上述したRRCにおけるSDHが無損失コーディングに対して用いられることがあり、このため、エンコード装置における誤った設定によって無損失コーディングが不可能になることがある。そこで、本文書は、SDHとsh_ts_residual_coding_disabled_flag=1である場合における残差コーディング(すなわち、現スライス内の変換スキップブロックの残差サンプルをRRCでコーディング)とが共に用いられ、意図せぬコーディング損失を引き起こしたり誤動作することを防止するために、transform_skip_flagの値が1である場合に、変換係数のレベルをコーディングする際にSDHが用いられないようにする実施例を提案する。上記提案された実施例に係る残差コーディングシンタックスは、次表の通りでよい。
上記表18を参照すると、上記SDHが適用されるか否かを示す変数signHiddenがtransform_skip_flagの値に基づいて導出されてよい。例えば、transform_skip_flagの値が1である場合に、signHiddenの値は0と導出されてよい。すなわち、例えば、transform_skip_flagの値が1である場合に、現ブロックの変換係数の符号を導出する際にSDHが適用されなくてよい。
また、本文書は、SDHとsh_ts_residual_coding_disabled_flag=1である場合における残差コーディング(すなわち、現スライス内の変換スキップブロックの残差サンプルをRRCでコーディング)とが共に用いられ、意図せぬコーディング損失を引き起こしたり誤動作することを防止するために、BdpcmFlagの値が1である場合に、変換係数のレベルをコーディングする際にSDHが用いられないようにする実施例を提案する。上記提案された実施例に係る残差コーディングシンタックスは、次表の通りでよい。
上記表19を参照すると、上記SDHが適用されるか否かを示す変数signHiddenが、上記BDPCMが適用されるか否かを示す変数BdpcmFlagの値に基づいて導出されてよい。例えば、BdpcmFlagの値が1である場合に、signHiddenの値は0と導出されてよい。すなわち、例えば、BdpcmFlagの値が1である場合(現ブロックに対してBDPCMが適用される場合)に、現ブロックの変換係数の符号を導出する際にSDHが適用されなくてよい。
表19を参照すると、BdpcmFlagが1である場合、損失コーディングが適用される場合にはTSRCに対するSDHは許容されるが、BDPCMが適用される場合にはSDHが用いられなくてよい。
また、本文書は、上述したシンタックスエレメントsh_ts_residual_coding_disabled_flagのシグナリングと関連する様々な実施例を提案する。
例えば、上述したように、sh_ts_residual_coding_disabled_flagは、TSRCが使用可能でないか否かを定義するシンタックスエレメントであり、よって、変換スキップブロックが用いられない場合にはシグナリングされなくてもよい。すなわち、変換スキップブロックを使用するか否かに関するシンタックスエレメントが、変換スキップブロックが用いられることを示す場合にのみ、上記sh_ts_residual_coding_disabled_flagをシグナリングすることが有異議(有意味)であり得る。
そこで、本文書は、sps_transform_skip_enabled_flagが1である場合にのみ、sh_ts_residual_coding_disabled_flagをシグナリングする実施例を提案する。本実施例に係るシンタックスは次表の通りである。
表20を参照すると、sps_transform_skip_enabled_flagが1である場合、sh_ts_residual_coding_disabled_flagがシグナリングされてよく、sps_transform_skip_enabled_flagが0である場合、sh_ts_residual_coding_disabled_flagがシグナリングされなくてよい。ここで、例えば、上記sps_transform_skip_enabled_flagは、変換スキップブロックが用いられるか否かを示すことができる。すなわち、例えば、上記sps_transform_skip_enabled_flagは、変換スキップが使用可能であるか否かを示すことができる。例えば、上記sps_transform_skip_enabled_flagの値が1である場合、上記sps_transform_skip_enabled_flagは、変換ユニットシンタックス(transform unit syntax)に変換スキップフラグ(transform_skip_flag)が存在できることを示すことができ、上記sps_transform_skip_enabled_flagの値が0である場合、上記sps_transform_skip_enabled_flagは、変換ユニットシンタックスに変換スキップフラグが存在しないことを示すことができる。一方、sh_ts_residual_coding_disabled_flagがシグナリングされない場合、sh_ts_residual_coding_disabled_flagは、0と見なされてよい(infer)。また、上述したsps_transform_skip_enabled_flagは、SPSでシグナリングされてよく、またはSPSではなく他のハイレベルシンタックス(VPS、PPS、ピクチャヘッダシンタックス、スライスヘッダシンタックスなど)もしくはローレベルシンタックス(スライスデータシンタックス(slice data syntax)、コーディングユニットシンタックス(coding unit syntax)、変換ユニットシンタックス(transform unit syntax)など)でシグナリングされてよい。また、sh_ts_residual_coding_disabled_flagよりも先にシグナリングされてよい。
また、本文書は、sh_ts_residual_coding_disabled_flagのシグナリングと関連して上述の実施例を組み合わせた実施例を提案する。例えば、次表のようにsh_ts_residual_coding_disabled_flagをシグナリングする実施例が提案されてよい。
表21を参照すると、sps_transform_skip_enabled_flagが1であり、pic_sign_data_hiding_enabled_flagが0である場合、sh_ts_residual_coding_disabled_flagがシグナリングされてよく、それ以外の場合には、sh_ts_residual_coding_disabled_flagがシグナリングされなくてよい。一方、sh_ts_residual_coding_disabled_flagがシグナリングされない場合、sh_ts_residual_coding_disabled_flagは、0と見なされてよい(infer)。
あるいは、例えば、次表のようにsh_ts_residual_coding_disabled_flagをシグナリングする実施例が提案されてよい。
表22を参照すると、pic_sign_data_hiding_enabled_flagが0であるまたはsps_transform_skip_enabled_flagが1である場合、sh_ts_residual_coding_disabled_flagがシグナリングされてよく、それ以外の場合には、sh_ts_residual_coding_disabled_flagがシグナリングされなくてよい。一方、sh_ts_residual_coding_disabled_flagがシグナリングされない場合、sh_ts_residual_coding_disabled_flagは、0と見なされてよい(infer)。
また、例えば、本実施例によれば、シンタックスエレメントph_dep_quant_enabled_flagおよびsh_ts_residual_coding_disabled_flagを、同一のハイレベルシンタックスまたはローレベルシンタックスでシグナリングする方式(方案)が提案されてよい。例えば、上記表22を参照すると、ph_dep_quant_enabled_flagおよびsh_ts_residual_coding_disabled_flagが両方ともピクチャヘッダシンタックスでシグナリングされてよい。この場合、上記sh_ts_residual_coding_disabled_flagは、ph_ts_residual_coding_disabled_flagと呼ぶことができる。一方、上記ph_dep_quant_enabled_flagは、従属量子化(dependent quantization)が使用可能であるか否かに関するフラグであってよい。例えば、ph_dep_quant_enabled_flagは、従属量子化(dependent quantization)が使用可能であるか否かを示すことができる。すなわち、例えば、ph_dep_quant_enabled_flagは、シーケンス(sequence)内ピクチャのブロックに対して従属量子化が使用可能であるか否かを示すことができる。例えば、ph_dep_quant_enabled_flagは、現スライスに対して従属量子化が用いられるか否かを示す従属量子化使用フラグが存在できるか否かを示すことができる。例えば、値が1である上記ph_dep_quant_enabled_flagは、上記従属量子化が使用可能であることを示すことができ、値が0である上記ph_dep_quant_enabled_flagは、上記従属量子化が使用可能でないことを示すことができる。また、例えば、上記ph_dep_quant_enabled_flagは、シグナリングされるシンタックスによってsh_dep_quant_enabled_flagと呼ぶことができる。
あるいは、例えば、次表のようにsh_ts_residual_coding_disabled_flagをシグナリングする実施例が提案されてよい。
表23を参照すると、pic_sign_data_hiding_enabled_flagが0であり、sps_transform_skip_enabled_flagが1である場合、sh_ts_residual_coding_disabled_flagがシグナリングされてよく、それ以外の場合には、sh_ts_residual_coding_disabled_flagがシグナリングされなくてよい。一方、sh_ts_residual_coding_disabled_flagがシグナリングされない場合、sh_ts_residual_coding_disabled_flagは、0と見なされてよい(infer)。また、例えば、上記表23を参照すると、ph_dep_quant_enabled_flagおよびsh_ts_residual_coding_disabled_flagが両方ともピクチャヘッダシンタックスでシグナリングされてよい。この場合、上記sh_ts_residual_coding_disabled_flagは、ph_ts_residual_coding_disabled_flagと呼ぶことができる。
また、本文書は、上述したシンタックスエレメントph_dep_quant_enabled_flag、pic_sign_data_hiding_enabled_flagおよび/またはsh_ts_residual_coding_disabled_flagを、同一のハイレベルシンタックス(VPS、SPS,PPS、ピクチャヘッダ(picture header)、スライスヘッダ(slice header)など)またはローレベルシンタックス(スライスデータ(slice data)、コーディングユニット(coding unit)、変換ユニット(transform unit)など)でシグナリングする実施例を提案する。
例えば、次表のように、pic_sign_data_hiding_enabled_flagおよびsh_ts_residual_coding_disabled_flagが両方ともピクチャヘッダシンタックスでシグナリングされる実施例が提案されてよい。
この場合、上記sh_ts_residual_coding_disabled_flagは、ph_ts_residual_coding_disabled_flagと呼ぶことができる。
本実施例によれば、同一のHLSでSDHが使用可能であるか否かを示すシンタックスエレメント(すなわち、pic_sign_data_hiding_enabled_flag)の値が0である場合にのみ、変換スキップブロックのための残差コーディング(すなわち、TSRC)が使用可能であるか否かを示すシンタックスエレメント(すなわち、sh_ts_residual_coding_disabled_flag)がシグナリングされてよい。例えば、表24を参照すると、pic_sign_data_hiding_enabled_flagは、ピクチャヘッダシンタックスでシグナリングされてよく、pic_sign_data_hiding_enabled_flagの値が0である場合、ph_ts_residual_coding_disabled_flagがピクチャヘッダシンタックスでシグナリングされてよい。一方、例えば、pic_sign_data_hiding_enabled_flagの値が1である場合、ph_ts_residual_coding_disabled_flagは、シグナリングされなくてよい。sh_ts_residual_coding_disabled_flagがシグナリングされない場合、sh_ts_residual_coding_disabled_flagは、0と見なされてよい(infer)。また、sps_sign_data_hiding_enabled_flagの値が1である場合、pic_sign_data_hiding_enabled_flagがピクチャヘッダシンタックスでシグナリングされてよい。
上記表24による実施例は一例にすぎず、両シンタックスエレメントは、ピクチャヘッダ(picture header)ではなく他のハイレベルシンタックス(VPS、SPS、PPS、スライスヘッダなど)またはローレベルシンタックス(スライスデータ、コーディングユニット、変換ユニットなど)でシグナリングされてもよい。
あるいは、例えば、次表のように、変換スキップブロックのための残差コーディング(すなわち、TSRC)が使用可能であるか否かを示すシンタックスエレメントの値が0である場合(すなわち、TSRCが使用可能である場合)にのみ、SDHが使用可能であるか否かを示すシンタックスエレメントがシグナリングされる実施例が提案されてよい。
表25を参照すると、ph_ts_residual_coding_disabled_flagの値が0である場合、pic_sign_data_hiding_enabled_flagがピクチャヘッダシンタックスでシグナリングされてよい。一方、例えば、ph_ts_residual_coding_disabled_flagの値が1である場合、pic_sign_data_hiding_enabled_flagは、シグナリングされなくてよい。また、例えば、pic_sign_data_hiding_enabled_flagがシグナリングされない場合、pic_sign_data_hiding_enabled_flagは、デコード装置で0と見なされてよい(infer)。
上記表25による実施例は一例にすぎず、両シンタックスエレメントは、ピクチャヘッダ(picture header)ではなく他のハイレベルシンタックス(VPS、SPS、PPS、スライスヘッダなど)またはローレベルシンタックス(スライスデータ、コーディングユニット、変換ユニットなど)でシグナリングされてもよい。
あるいは、例えば、ph_ts_residual_coding_disabled_flagに基づいてpic_sign_data_hiding_enabled_flagおよび/またはph_dep_quant_enabled_flagを制約する方式が提案されてよい。
例えば、次表のように、ph_ts_residual_coding_disabled_flagの値が0である場合にのみ、pic_sign_data_hiding_enabled_flagおよびph_dep_quant_enabled_flagがシグナリングされる実施例が提案されてよい。
表26を参照すると、ph_ts_residual_coding_disabled_flagの値が0である場合、pic_sign_data_hiding_enabled_flagおよびph_dep_quant_enabled_flagがピクチャヘッダシンタックスでシグナリングされてよい。一方、例えば、ph_ts_residual_coding_disabled_flagの値が1である場合、pic_sign_data_hiding_enabled_flagおよびph_dep_quant_enabled_flagは、シグナリングされなくてよい。また、例えば、pic_sign_data_hiding_enabled_flagおよびph_dep_quant_enabled_flagがシグナリングされない場合、pic_sign_data_hiding_enabled_flagおよびph_dep_quant_enabled_flagは、デコード装置で0と見なされてよい(infer)。
また、例えば、上記表26を参照すると、ph_ts_residual_coding_disabled_flag、pic_sign_data_hiding_enabled_flagおよびph_dep_quant_enabled_flagが両方ともピクチャヘッダシンタックスでシグナリングされてよい。
また、本文書は、sh_ts_residual_coding_disabled_flagのシグナリングと関連して上述の実施例を組み合わせた実施例を提案する。例えば、次表のようにsh_ts_residual_coding_disabled_flagをシグナリングする実施例が提案されてよい。
表27を参照すると、pic_sign_data_hiding_enabled_flagが0であるまたはsps_transform_skip_enabled_flagが1である場合、ph_ts_residual_coding_disabled_flagがシグナリングされてよく、それ以外の場合には、ph_ts_residual_coding_disabled_flagがシグナリングされなくてよい。一方、ph_ts_residual_coding_disabled_flagがシグナリングされない場合、ph_ts_residual_coding_disabled_flagは、デコード装置で0と見なされてよい(infer)。また、sps_sign_data_hiding_enabled_flagの値が1である場合、pic_sign_data_hiding_enabled_flagがピクチャヘッダシンタックスでシグナリングされてよい。
あるいは、例えば、次表のようにsh_ts_residual_coding_disabled_flagをシグナリングする実施例が提案されてよい。
表28を参照すると、pic_sign_data_hiding_enabled_flagが0であり、sps_transform_skip_enabled_flagが1である場合、ph_ts_residual_coding_disabled_flagがシグナリングされてよく、それ以外の場合には、ph_ts_residual_coding_disabled_flagがシグナリングされなくてよい。一方、ph_ts_residual_coding_disabled_flagがシグナリングされない場合、ph_ts_residual_coding_disabled_flagは、デコード装置で0と見なされてよい(infer)。また、sps_sign_data_hiding_enabled_flagの値が1である場合、pic_sign_data_hiding_enabled_flagがピクチャヘッダシンタックスでシグナリングされてよい。
あるいは、例えば、次表のようにsh_ts_residual_coding_disabled_flagをシグナリングする実施例が提案されてよい。
表29を参照すると、sps_transform_skip_enabled_flagが1である場合、ph_ts_residual_coding_disabled_flagがシグナリングされてよく、それ以外の場合には、ph_ts_residual_coding_disabled_flagがシグナリングされなくてよい。また、表29を参照すると、ph_ts_residual_coding_disabled_flagが0である場合、pic_sign_data_hiding_enabled_flagがシグナリングされてよく、それ以外の場合には、pic_sign_data_hiding_enabled_flagがシグナリングされなくてよい。一方、ph_ts_residual_coding_disabled_flagがシグナリングされない場合、ph_ts_residual_coding_disabled_flagは、デコード装置で0と見なされてよい(infer)。また、pic_sign_data_hiding_enabled_flagがシグナリングされない場合、pic_sign_data_hiding_enabled_flagは、デコード装置で0と見なされてよい(infer)。
あるいは、例えば、次表のようにsh_ts_residual_coding_disabled_flagをシグナリングする実施例が提案されてよい。
表30を参照すると、sps_transform_skip_enabled_flagが1である場合、ph_ts_residual_coding_disabled_flagがシグナリングされてよく、それ以外の場合には、ph_ts_residual_coding_disabled_flagがシグナリングされなくてよい。また、表30を参照すると、ph_ts_residual_coding_disabled_flagが0である場合、pic_sign_data_hiding_enabled_flagおよびph_dep_quant_enabled_flagがシグナリングされてよく、それ以外の場合には、pic_sign_data_hiding_enabled_flagおよびph_dep_quant_enabled_flagがシグナリングされなくてよい。一方、ph_ts_residual_coding_disabled_flagがシグナリングされない場合、ph_ts_residual_coding_disabled_flagは、デコード装置で0と見なされてよい(infer)。また、pic_sign_data_hiding_enabled_flagおよびph_dep_quant_enabled_flagがシグナリングされない場合、pic_sign_data_hiding_enabled_flagおよびph_dep_quant_enabled_flagは、デコード装置で0と見なされてよい(infer)。
一方、上述したように、本文書に開示のシンタックステーブル内の情報(シンタックスエレメント)は、映像/ビデオ情報に含まれてよく、エンコード装置で構成/エンコードされ、ビットストリームの形態でデコード装置に伝達されてよい。デコード装置は、当該シンタックステーブル内の情報(シンタックスエレメント)をパージング/デコードすることができる。デコード装置は、デコードされた情報に基づいてブロック/映像/ビデオ復元手順を行うことができる。
図9には、本文書に係るエンコード装置による映像エンコード方法を概略的に示す。図9に開示の方法は、図2に開示のエンコード装置によって行われてよい。さらにいうと、図9のS900は、上記エンコード装置の予測部によって行われてよく、S910は、上記エンコード装置の残差処理部によって行われてよく、S920~S960は、上記エンコード装置のエントロピ符号化部によって行われてよい。また、図示してはいないが、現ブロックに対する残差サンプルおよび予測サンプルに基づいて上記現ブロックに対する復元サンプルおよび復元ピクチャを生成する過程は、上記エンコード装置の加算部によって行われてよい。
エンコード装置は、現スライス内の現ブロックに対する予測を行って上記現ブロックの予測サンプルを導出する(S900)。例えば、エンコード装置は、現ブロックに対してイントラ予測またはインター予測を行って上記現ブロックの予測サンプルを導出することができる。例えば、エンコード装置は、上記現ブロックにインター予測を行うかまたはイントラ予測を行うかを決定でき、具体的なインター予測モードまたは具体的なイントラ予測モードをRDコストベースで決定でき、決定された予測モードに基づいて上記現ブロックの予測サンプルを導出することができる。
例えば、エンコード装置は、上記現ブロックのインター予測モードおよび動き情報を導出でき、上記現ブロックの予測サンプルを生成することができる。ここで、インター予測モード決定、動き情報導出および予測サンプル生成手順は、上述した内容のように同時に行われてもよく、いずれか一手順が他の手順よりも先に行われてもよい。例えば、エンコード装置は、動き推定(motion estimation)によって参照ピクチャの一定領域(サーチ領域)内で上記現ブロックと類似のブロックをサーチでき、上記現ブロックとの差が最小または一定基準以下である参照ブロックを導出することができる。これに基づいて、エンコード装置は、上記参照ブロックの位置する参照ピクチャを示す参照ピクチャインデックスを導出でき、上記参照ブロックと上記現ブロックとの位置差に基づいて動きベクトルを導出することができる。エンコード装置は、様々なインター予測モードのうち、上記現ブロックに対して適用されるインター予測モードを決定できる。例えば、エンコード装置は、上記様々なインター予測モードに対するRDコスト(cost)を比較して上記現ブロックに対する最適なインター予測モードを決定することができる。
例えば、エンコード装置は、現ブロックに対する動き情報候補リストを構成でき、上記動き情報候補リストに含まれる動き情報候補が示す参照ブロックのうち、上記現ブロックとの差が最小または一定基準以下である参照ブロックを導出することができる。この場合、上記導出された参照ブロックと関連する動き情報候補が選択されてよく、上記選択された動き情報候補の動き情報に基づいて上記現ブロックの動き情報が導出されてよい。
エンコード装置は、上記予測サンプルに基づいて上記現ブロックの残差サンプルを導出する(S910)。例えば、エンコード装置は、上記現ブロックに対するオリジナルサンプルと上記予測サンプルとの減算によって上記現ブロックに対する残差サンプルを導出することができる。
エンコード装置は、上記予測に関する予測情報をエンコードする(S920)。映像情報は、上記現ブロックに対する予測情報を含むことができる。例えば、上記予測情報は、上記予測手順に関連する情報として、予測モード情報および上記現ブロックの動き情報に関する情報を含むことができる。上記動き情報に関する情報は、動きベクトルを導出するための情報である動き情報候補インデックス情報を含むことができる。また、例えば、上記動き情報に関する情報は、上述したMVD(Motion Vector Difference,MVD)に関する情報および/または参照ピクチャインデックス情報を含むことができる。
エンコード装置は、現スライスに対してサインデータハイディング(sign data hiding)が使用可能であるか否かに関するサインデータハイディング使用可能フラグをエンコードする(S930)。エンコード装置は、上記現スライスに対してサインデータハイディング(sign data hiding)が使用可能であるか否かに関するサインデータハイディング使用可能フラグをエンコードすることができる。映像情報は、サインデータハイディング使用可能フラグを含むことができる。例えば、エンコード装置は、シーケンス(sequence)内ピクチャのブロックに対してサインデータハイディングが使用可能であるかを決定でき、サインデータハイディングが使用可能であるか否かに関するサインデータハイディング使用可能フラグをエンコードすることができる。例えば、上記サインデータハイディング使用可能フラグは、サインデータハイディングが使用可能であるか否かに関するフラグであってよい。例えば、サインデータハイディング使用可能フラグは、サインデータハイディングが使用可能であるか否かを示すことができる。すなわち、例えば、サインデータハイディング使用可能フラグは、シーケンス(sequence)内ピクチャのブロックに対してサインデータハイディングが使用可能であるか否かを示すことができる。例えば、サインデータハイディング使用可能フラグは、現スライスに対してサインデータハイディングが用いられるか否かを示すサインデータハイディング使用フラグが存在できるか否かを示すことができる。例えば、値が1である上記サインデータハイディング使用可能フラグは、上記サインデータハイディングが使用可能であることを示すことができ、値が0である上記サインデータハイディング使用可能フラグは、上記サインデータハイディングが使用可能でないことを示すことができる。例えば、値が1である上記サインデータハイディング使用可能フラグは、上記サインデータハイディングが適用されたサインフラグが存在できることを示すことができ、値が0である上記サインデータハイディング使用可能フラグは、上記サインデータハイディングが適用されたサインフラグが存在しないことを示すことができる。また、例えば、上記サインデータハイディング使用可能フラグは、SPS(Sequence Parameter Set)シンタックスでシグナリングされてよい。あるいは、例えば、上記サインデータハイディング使用可能フラグは、ピクチャヘッダシンタックスまたはスライスヘッダシンタックスでシグナリングされてよい。上記サインデータハイディング使用可能フラグのシンタックスエレメントは、上述したsps_sign_data_hiding_enabled_flagであってよい。
エンコード装置は、上記サインデータハイディング使用可能フラグに基づいて、TSRC(Transform Skip Residual Coding)が上記現スライスの変換スキップブロック(transform skip block)に対して使用可能であるか否かに関するTSRC使用可能フラグをエンコードする(S940)。映像情報は、TSRC使用可能フラグを含むことができる。
例えば、エンコード装置は、上記サインデータハイディング使用可能フラグに基づいて上記TSRC使用可能フラグをエンコードすることができる。例えば、上記TSRC使用可能フラグは、値が0である上記サインデータハイディング使用可能フラグに基づいてエンコードされてよい。すなわち、例えば、上記サインデータハイディング使用可能フラグの値が0である場合(すなわち、上記サインデータハイディング使用可能フラグがサインデータハイディングが使用可能でないことを示す場合)、上記TSRC使用可能フラグはエンコードされてよい。言い換えると、例えば、上記サインデータハイディング使用可能フラグの値が0である場合(すなわち、上記サインデータハイディング使用可能フラグがサインデータハイディングが使用可能でないことを示す場合)、上記TSRC使用可能フラグはシグナリングされてよい。また、例えば、上記サインデータハイディング使用可能フラグの値が1である場合、上記TSRC使用可能フラグはエンコードされなくてよく、デコード装置で上記TSRC使用可能フラグの値は0と導出されてよい。すなわち、例えば、上記サインデータハイディング使用可能フラグの値が1である場合、上記TSRC使用可能フラグはシグナリングされなくてよく、デコード装置で上記TSRC使用可能フラグの値は0と導出されてよい。
ここで、例えば、上記TSRC使用可能フラグは、TSRCが使用可能であるか否かに関するフラグであってよい。すなわち、例えば、上記TSRC使用可能フラグは、スライス内ブロックに対してTSRCが使用可能であるか否かを示すフラグであってよい。言い換えると、例えば、上記TSRC使用可能フラグは、スライス内変換スキップブロックに対してTSRCが使用可能であるか否かを示すフラグであってよい。例えば、値が1である上記TSRC使用可能フラグは、上記TSRCが使用可能でないことを示すことができ、値が0である上記TSRC使用可能フラグは、上記TSRCが使用可能であることを示すことができる。また、例えば、上記TSRC使用可能フラグは、スライスヘッダ(Slice Header)シンタックスでシグナリングされてよい。上記TSRC使用可能フラグのシンタックスエレメントは、上述したsh_ts_residual_coding_disabled_flagであってよい。上記TSRC使用可能フラグは、TSRC使用不能フラグと呼ぶこともできる。
一方、例えば、エンコード装置は、シーケンス(sequence)内ピクチャのブロックに対して従属量子化が使用可能であるか否かを決定でき、従属量子化が使用可能であるか否かに関する従属量子化使用可能フラグをエンコードすることができる。映像情報は、上記従属量子化使用可能フラグを含むことができる。例えば、上記従属量子化使用可能フラグは、従属量子化(dependent quantization)が使用可能であるか否かに関するフラグであってよい。例えば、従属量子化使用可能フラグは、従属量子化(dependent quantization)が使用可能であるか否かを示すことができる。すなわち、例えば、従属量子化使用可能フラグは、シーケンス(sequence)内ピクチャのブロックに対して従属量子化が使用可能であるか否かを示すことができる。例えば、従属量子化使用可能フラグは、現スライスに対して従属量子化が用いられるか否かを示す従属量子化使用フラグが存在できるか否かを示すことができる。例えば、値が1である上記従属量子化使用可能フラグは、上記従属量子化が使用可能であることを示すことができ、値が0である上記従属量子化使用可能フラグは、上記従属量子化が使用可能でないことを示すことができる。また、例えば、上記従属量子化使用可能フラグは、SPSシンタックスまたはスライスヘッダシンタックスなどでシグナリングされてよい。上記従属量子化使用可能フラグのシンタックスエレメントは、上述したsps_dep_quant_enabled_flagであってよい。
また、例えば、エンコード装置は、上記現スライスに対して変換スキップ(transform skip)が使用可能であるか否かに関する変換スキップ使用可能フラグをエンコードすることができる。映像情報は、変換スキップ使用可能フラグを含むことができる。例えば、エンコード装置は、シーケンス(sequence)内ピクチャのブロックに対して変換スキップが使用可能であるかを決定でき、変換スキップ(transform skip)が使用可能であるか否かに関する変換スキップ使用可能フラグをエンコードすることができる。例えば、上記変換スキップ使用可能フラグは、変換スキップ(transform skip)が使用可能であるか否かに関するフラグであってよい。例えば、変換スキップ使用可能フラグは、変換スキップ(transform skip)が使用可能であるか否かを示すことができる。すなわち、例えば、変換スキップ使用可能フラグは、シーケンス(sequence)内ピクチャのブロックに対して変換スキップが使用可能であるか否かを示すことができる。例えば、変換スキップ使用可能フラグは、変換スキップフラグが存在できるか否かを示すことができる。例えば、値が1である上記変換スキップ使用可能フラグは、上記変換スキップが使用可能であることを示すことができ、値が0である上記変換スキップ使用可能フラグは、上記変換スキップが使用可能でないことを示すことができる。すなわち、例えば、値が1である上記変換スキップ使用可能フラグは、上記変換スキップフラグが存在できることを示すことができ、値が0である上記変換スキップ使用可能フラグは、上記変換スキップフラグが存在しないことを示すことができる。また、例えば、上記変換スキップ使用可能フラグは、SPS(Sequence Parameter Set)シンタックスでシグナリングされてよい。上記変換スキップ使用可能フラグのシンタックスエレメントは、上述したsps_transform_skip_enabled_flagであってよい。
また、例えば、上記TSRC使用可能フラグは、上記サインデータハイディング使用可能フラグおよび/または上記変換スキップ使用可能フラグに基づいてエンコードされてよい。例えば、上記TSRC使用可能フラグは、値が0である上記サインデータハイディング使用可能フラグおよび値が1である上記変換スキップ使用可能フラグに基づいてエンコードされてよい。すなわち、例えば、上記サインデータハイディング使用可能フラグの値が0であり(すなわち、上記サインデータハイディング使用可能フラグがサインデータハイディングが使用可能でないことを示し)、上記変換スキップ使用可能フラグの値が1である(すなわち、上記変換スキップ使用可能フラグが上記変換スキップが使用可能であることを示す)場合に、上記TSRC使用可能フラグはエンコード(または、シグナリング)されてよい。また、例えば、上記変換スキップ使用可能フラグの値が0である場合、上記TSRC使用可能フラグはエンコードされなくてよく、上記TSRC使用可能フラグの値は0と導出されてよい。すなわち、例えば、上記変換スキップ使用可能フラグの値が0である場合、上記TSRC使用可能フラグはシグナリングされなくてよく、上記TSRC使用可能フラグの値は0と導出されてよい。
エンコード装置は、上記TSRC使用可能フラグに基づいて上記現ブロックに対する残差情報をエンコードする(S950)。エンコード装置は、上記TSRC使用可能フラグに基づいて上記現ブロックに対する残差情報をエンコードすることができる。
例えば、エンコード装置は、上記TSRC使用可能フラグに基づいて上記現ブロックに対する残差コーディングシンタックスを決定できる。例えば、エンコード装置は、上記TSRC使用可能フラグに基づいて上記現ブロックに対する残差コーディングシンタックスを、レギュラ残差コーディング(Regular Residual Coding,RRC)シンタックスおよび変換スキップ残差コーディング(Transform Skip Residual Coding,TSRC)シンタックスのうちの一つと決定できる。RRCシンタックスは、RRCによるシンタックスを表すことができ、TSRCシンタックスは、TSRCによるシンタックスを表すことができる。
例えば、値が1である上記TSRC使用可能フラグに基づいて、上記現ブロックに対する上記残差コーディングシンタックスは、レギュラ残差コーディング(Regular Residual Coding,RRC)シンタックスと決定されてよい。この場合、例えば、上記現ブロックの変換をスキップするか否かに関する変換スキップフラグがエンコードされてよく、上記変換スキップフラグの値は1であってよい。例えば、上記映像情報は、上記現ブロックに対する変換スキップフラグを含むことができる。上記変換スキップフラグは、上記現ブロックの変換がスキップされるか否かを示すことができる。すなわち、上記変換スキップフラグは、上記現ブロックの変換係数に変換が適用されたか否かを示すことができる。上記変換スキップフラグを示すシンタックスエレメントは、上述したtransform_skip_flagであってよい。例えば、上記変換スキップフラグの値が1である場合、上記変換スキップフラグは、上記現ブロックに変換が適用されないこと(すなわち、変換スキップされること)を示すことができ、上記変換スキップフラグの値が0である場合、上記変換スキップフラグは、上記現ブロックに変換が適用されることを示すことができる。例えば、上記現ブロックが変換スキップブロックである場合に、上記現ブロックに対する変換スキップフラグの値が1であってよい。
また、例えば、値が0である上記TSRC使用可能フラグに基づいて、上記現ブロックに対する上記残差コーディングシンタックスは、変換スキップ残差コーディング(Transform Skip Residual Coding,TSRC)シンタックスと決定されてよい。また、例えば、上記現ブロックの変換がスキップされるか否かに関する変換スキップフラグがエンコードされてよく、値が1である上記変換スキップフラグおよび値が0である上記TSRC使用可能フラグに基づいて、上記現ブロックに対する上記残差コーディングシンタックスは、変換スキップ残差コーディング(Transform Skip Residual Coding,TSRC)シンタックスと決定されてよい。また、例えば、現ブロックの変換がスキップされるか否かに関する変換スキップフラグがエンコードされてよく、値が0である上記変換スキップフラグおよび値が0である上記TSRC使用可能フラグに基づいて、上記現ブロックに対する上記残差コーディングシンタックスは、レギュラ残差コーディング(Regular Residual Coding,RRC)シンタックスと決定されてよい。
その後、例えば、エンコード装置は、上記現ブロックに対する上記決定された残差コーディングシンタックスの残差情報をエンコードすることができる。エンコード装置は、上記現ブロックの上記残差サンプルに対する上記決定された残差コーディングシンタックスの残差情報をエンコードすることができる。例えば、値が1である上記TSRC使用可能フラグに基づいて、上記現ブロックに対するレギュラ残差コーディング(Regular Residual Coding,RRC)シンタックスの残差情報がエンコードされてよく、値が0である上記TSRC使用可能フラグに基づいて、上記現ブロックに対するTSRCシンタックスの残差情報がエンコードされてよい。上記映像情報は、残差情報を含むことができる。
具体的には、例えば、エンコード装置は、上記残差サンプルに基づいて上記現ブロックの変換係数を導出することができる。例えば、エンコード装置は、上記現ブロックに対して変換が適用されるか否かを決定できる。すなわち、エンコード装置は、上記現ブロックの上記残差サンプルに対して変換が適用されるか否かを決定できる。エンコード装置は、コーディング効率を考慮して、上記現ブロックに対して変換が適用されるか否かを決定できる。例えば、エンコード装置は、上記現ブロックに対して変換が適用されないと決定できる。一方、上記変換が適用されないブロックは、変換スキップブロックと呼ぶこともできる。
上記現ブロックに対して変換が適用されない場合、すなわち、上記残差サンプルに対して変換が適用されない場合、エンコード装置は、上記導出された残差サンプルを上記現ブロックの変換係数として導出することができる。また、上記現ブロックに対して変換が適用される場合、すなわち、上記残差サンプルに対して変換が適用される場合、エンコード装置は、上記残差サンプルに対する変換を行って上記現ブロックの変換係数を導出することができる。上記現ブロックは、複数のサブブロックまたは係数グループ(Coefficient Group,CG)を含むことができる。また、上記現ブロックのサブブロックのサイズは、4x4サイズまたは2x2サイズであってよい。すなわち、上記現ブロックの上記サブブロックは、最大で16個のノンゼロ(non-zero)変換係数または最大で4個のノンゼロ変換係数を含むことができる。ここで、上記現ブロックは、コーディングブロック(Coding Block,CB)または変換ブロック(Transform Block,TB)であってよい。また、変換係数(transform coefficient)は、残差係数(residual coefficient)と呼ぶこともできる。
例えば、上記現ブロックに対する上記残差コーディングシンタックスが上記RRCシンタックスと決定された場合、エンコード装置は、上記現ブロックに対する上記RRCシンタックスの残差情報をエンコードすることができる。例えば、上記RRCシンタックスの上記残差情報は、上記表2に開示されたシンタックスエレメントを含むことができる。
例えば、上記RRCシンタックスの上記残差情報は、現ブロックの変換係数に関するシンタックスエレメントを含むことができる。ここで、変換係数(transform coefficient)は、残差係数(residual coefficient)と呼ぶこともできる。
例えば、上記シンタックスエレメントは、last_sig_coeff_x_prefix、last_sig_coeff_y_prefix、last_sig_coeff_x_suffix、last_sig_coeff_y_suffix、sb_coded_flag、sig_coeff_flag、abs_level_gt1_flag、par_level_flag、abs_level_gtX_flag、abs_remainder、dec_abs_level、および/またはcoeff_sign_flagなどのシンタックスエレメント(syntax elements)を含むことができる。
具体的には、例えば、上記シンタックスエレメントは、上記現ブロックの残差係数配列(array)において最後のノンゼロ(non-zero)変換係数の位置を示す位置情報を含むことができる。すなわち、上記シンタックスエレメントは、上記現ブロックのスキャン順序(scanning order)における最後のノンゼロ(non-zero)変換係数の位置を示す位置情報を含むことができる。上記位置情報は、上記最後のノンゼロ変換係数の列位置(column position)のプレフィックス(prefix)を示す情報、上記最後のノンゼロ変換係数の行位置(row position)のプレフィックス(prefix)を示す情報、上記最後のノンゼロ変換係数の列位置(column position)のサフィックス(suffix)を示す情報、上記最後のノンゼロ変換係数の行位置(row position)のサフィックス(suffix)を示す情報を含むことができる。上記位置情報に関するシンタックスエレメントは、last_sig_coeff_x_prefix、last_sig_coeff_y_prefix、last_sig_coeff_x_suffix、last_sig_coeff_y_suffixであってよい。一方、ノンゼロ変換係数は、有効係数(significant coefficient)と呼ぶこともできる。
また、例えば、上記シンタックスエレメントは、上記現ブロックのサブブロックがノンゼロ変換係数を含むか否かを示す符号化(coded)サブブロックフラグ、上記現ブロックの変換係数がノンゼロ(non-zero)変換係数か否かを示す有効係数フラグ、上記変換係数に対する係数レベルが第1閾値よりも大きいか否かに関する第1係数レベルフラグ、上記係数レベルのパリティ(parity)に関するパリティレベルフラグ、および/または上記変換係数の上記係数レベルが第2閾値よりも大きいか否かに関する第2係数レベルフラグを含むことができる。ここで、上記符号化(coded)サブブロックフラグは、sb_coded_flagまたはcoded_sub_block_flagであってよく、上記有効係数フラグはsig_coeff_flagであってよく、上記第1係数レベルフラグは、abs_level_gt1_flagまたはabs_level_gtx_flagであってよく、上記パリティレベルフラグは、par_level_flagであってよく、上記第2係数レベルフラグは、abs_level_gt3_flagまたはabs_level_gtx_flagであってよい。
また、例えば、上記シンタックスエレメントは、上記現ブロックの変換係数の値に対する係数値関連情報を含むことができる。上記係数値関連情報は、abs_remainderおよび/またはdec_abs_levelであってよい。
また、例えば、上記シンタックスエレメントは、上記変換係数の符号(sign)を示すサインフラグを含むことができる。上記サインフラグは、coeff_sign_flagであってよい。
一方、例えば、上記現ブロックに対して上記サインデータハイディングが適用される場合、上記現ブロック内の現CG(Coefficient Group)の最初の有効変換係数のサインフラグは、エンコードおよびシグナリングされなくてよい。すなわち、例えば、上記現ブロックに対して上記サインデータハイディングが適用される場合、上記シンタックスエレメントは、上記最初の有効変換係数の符号(sign)を示すサインフラグを含まなくてよい。一方、例えば、上記現ブロックに対して上記サインデータハイディングが適用されるか否かは、上記サインデータハイディング使用可能フラグおよび/または上記現ブロックの現CGの最初の有効変換係数位置および最後の有効変換係数位置に基づいて導出されてよい。例えば、上記サインデータハイディング使用可能フラグの値が1であり、上記最後の有効変換係数位置から上記最初の有効変換係数位置を引いた値が3よりも大きい場合(すなわち、上記サインデータハイディング使用可能フラグの値が1であり、上記現CG内の有効変換係数の個数が3よりも大きい場合)に、上記現ブロックの上記現CGに対して上記サインデータハイディングが適用されてよい。
また、例えば、上記現ブロックに対する上記残差コーディングシンタックスが上記TSRCシンタックスと決定された場合、エンコード装置は、上記現ブロックに対する上記TSRCシンタックスの残差情報をエンコードすることができる。例えば、上記TSRCシンタックスの上記残差情報は、上記表3に開示されたシンタックスエレメントを含むことができる。
例えば、上記TSRCシンタックスの上記残差情報は、現ブロックの変換係数に関するシンタックスエレメントを含むことができる。ここで、変換係数(transform coefficient)は、残差係数(residual coefficient)と呼ぶこともできる。
例えば、上記シンタックスエレメントは、変換係数に対するコンテキストコーディングされたシンタックスエレメントおよび/またはバイパスコーディングされたシンタックスエレメントを含むことができる。上記シンタックスエレメントは、sig_coeff_flag、coeff_sign_flag、abs_level_gt1_flag、par_level_flag、abs_level_gtX_flagおよび/またはabs_remainderなどのシンタックスエレメント(syntax elements)を含むことができる。
例えば、上記変換係数に対するコンテキストコーディングされた上記シンタックスエレメントは、上記変換係数がノンゼロ(non-zero)変換係数か否かを示す有効係数フラグ、上記変換係数に対する符号(sign)を示すサインフラグ、上記変換係数に対する係数レベルが第1閾値よりも大きいか否かに関する第1係数レベルフラグ、および/または上記変換係数に対する係数レベルのパリティ(parity)に関するパリティレベルフラグを含むことができる。また、例えば、上記コンテキストコーディングされたシンタックスエレメントは、上記変換係数の上記係数レベルが第2閾値よりも大きいか否かに関する第2係数レベルフラグ、上記変換係数の上記係数レベルが第3閾値よりも大きいか否かに関する第3係数レベルフラグ、上記変換係数の上記係数レベルが第4閾値よりも大きいか否かに関する第4係数レベルフラグ、および/または上記変換係数の上記係数レベルが第5閾値よりも大きいか否かに関する第5係数レベルフラグを含むことができる。ここで、上記有効係数フラグは、sig_coeff_flagであってよく、上記サインフラグは、coeff_sign_flagであってよく、上記第1係数レベルフラグは、abs_level_gt1_flagであってよく、上記パリティレベルフラグは、par_level_flagであってよい。また、上記第2係数レベルフラグは、abs_level_gt3_flagまたはabs_level_gtx_flagであってよく、上記第3係数レベルフラグは、abs_level_gt5_flagまたはabs_level_gtx_flagであってよく、上記第4係数レベルフラグは、abs_level_gt7_flagまたはabs_level_gtx_flagであってよく、上記第5係数レベルフラグは、abs_level_gt9_flagまたはabs_level_gtx_flagであってよい。
また、例えば、上記変換係数に対するバイパスコーディングされた上記シンタックスエレメントは、上記変換係数の値(または、係数レベル)に関する係数レベル情報および/または上記変換係数に対する符号(sign)を示すサインフラグを含むことができる。上記係数レベル情報はabs_remainderおよび/またはdec_abs_levelであってよく、上記サインフラグはcoeff_sign_flagであってよい。
エンコード装置は、上記サインデータハイディング使用可能フラグ、上記TSRC使用可能フラグ、上記予測情報および上記残差情報を含むビットストリームを生成する(S960)。例えば、エンコード装置は、上記サインデータハイディング使用可能フラグ、上記TSRC使用可能フラグ、上記予測情報および上記残差情報を含む映像情報をビットストリームとして出力できる。上記ビットストリームは、上記サインデータハイディング使用可能フラグ、上記TSRC使用可能フラグ、上記予測情報および上記残差情報を含むことができる。また、上記ビットストリームは、上記従属量子化使用可能フラグおよび/または上記変換スキップ使用可能フラグをさらに含むことができる。
一方、上記ビットストリームは、ネットワークまたは(デジタル)記憶媒体を介してデコード装置に送信されてよい。ここで、ネットワークは、放送網および/または通信網などを含むことができ、デジタル記憶媒体は、USB、SD、CD、DVD、ブルーレイ、HDD、SSDなどの様々な記憶媒体を含むことができる。
図10には、本文書に係る映像エンコード方法を行うエンコード装置を概略的に示す。図9に開示の方法は、図10に開示のエンコード装置によって行われてよい。具体的には、例えば、図10の上記エンコード装置の予測部は、図9のS900を行うことができ、図10の上記エンコード装置の残差(レジデュアル)処理部は、図9のS910を行うことができ、図10の上記エンコード装置のエントロピ符号化部は、図9のS920~S960を行うことができる。また、図示してはいないが、現ブロックに対する残差サンプルおよび予測サンプルに基づいて上記現ブロックに対する復元サンプルおよび復元ピクチャを生成する過程は、上記エンコード装置の加算部によって行われてよい。
図11には、本文書に係るデコード装置による映像デコード方法を概略的に表す。図11に開示の方法は、図3に開示のデコード装置によって行われてよい。具体的には、例えば、図11のS1100~S1120は、上記デコード装置のエントロピ復号部によって行われてよく、図11のS1130は、上記デコード装置の予測部によって行われてよく、図11のS1140は、上記デコード装置の残差(レジデュアル)処理部によって行われてよく、S1150は、上記デコード装置の加算部によって行われてよい。また、図示してはいないが、現ブロックに対する予測情報を受信する過程は、上記デコード装置のエントロピ復号部によって行われてよい。
デコード装置は、現スライスに対してサインデータハイディング(sign data hiding)が使用可能であるか否かに関するサインデータハイディング使用可能フラグを取得する(S1100)。デコード装置は、ビットストリームを用いて上記サインデータハイディング使用可能フラグを含む映像情報を取得することができる。映像情報は、上記サインデータハイディング使用可能フラグを含むことができる。例えば、上記サインデータハイディング使用可能フラグは、サインデータハイディング(sign data hiding)が使用可能であるか否かに関するフラグであってよい。例えば、サインデータハイディング使用可能フラグは、サインデータハイディングが使用可能であるか否かを示すことができる。すなわち、例えば、サインデータハイディング使用可能フラグは、シーケンス(sequence)内ピクチャのブロックに対してサインデータハイディングが使用可能であるか否かを示すことができる。例えば、サインデータハイディング使用可能フラグは、現スライスに対してサインデータハイディングが用いられるか否かを示すサインデータハイディング使用フラグが存在できるか否かを示すことができる。例えば、値が1である上記サインデータハイディング使用可能フラグは、上記サインデータハイディングが使用可能であることを示すことができ、値が0である上記サインデータハイディング使用可能フラグは、上記サインデータハイディングが使用可能でないことを示すことができる。例えば、値が1である上記サインデータハイディング使用可能フラグは、上記サインデータハイディングが適用されたサインフラグが存在できることを示すことができ、値が0である上記サインデータハイディング使用可能フラグは、上記サインデータハイディングが適用されたサインフラグが存在しないことを示すことができる。また、例えば、上記サインデータハイディング使用可能フラグは、SPS(Sequence Parameter Set)シンタックスでシグナリングされてよい。あるいは、例えば、上記サインデータハイディング使用可能フラグは、ピクチャヘッダシンタックスまたはスライスヘッダシンタックスでシグナリングされてよい。上記サインデータハイディング使用可能フラグのシンタックスエレメントは、上述したsps_sign_data_hiding_enabled_flagであってよい。
デコード装置は、TSRC(Transform Skip Residual Coding)が上記現スライスの変換スキップブロック(transform skip block)に対して使用可能であるか否かに関するTSRC使用可能フラグを取得する(S1110)。映像情報は、TSRC使用可能フラグを含むことができる。
例えば、デコード装置は、上記サインデータハイディング使用可能フラグに基づいて上記TSRC使用可能フラグを取得できる。例えば、上記TSRC使用可能フラグは、値が0である上記サインデータハイディング使用可能フラグに基づいて取得されてよい。すなわち、例えば、上記サインデータハイディング使用可能フラグの値が0である場合(すなわち、上記サインデータハイディング使用可能フラグがサインデータハイディングが使用可能でないことを示す場合)に、上記TSRC使用可能フラグは取得されてよい。言い換えると、例えば、上記サインデータハイディング使用可能フラグの値が0である場合(すなわち、上記サインデータハイディング使用可能フラグがサインデータハイディングが使用可能でないことを示す場合)に、上記TSRC使用可能フラグはシグナリングされてよい。また、例えば、上記サインデータハイディング使用可能フラグの値が1である場合、上記TSRC使用可能フラグは取得されなくてよく、上記TSRC使用可能フラグの値は0と導出されてよい。すなわち、例えば、上記サインデータハイディング使用可能フラグの値が1である場合に、上記TSRC使用可能フラグはシグナリングされなくてよく、上記TSRC使用可能フラグの値は0と導出されてよい。
ここで、例えば、上記TSRC使用可能フラグは、TSRCが使用可能であるか否かに関するフラグであってよい。すなわち、例えば、上記TSRC使用可能フラグは、スライス内ブロックに対してTSRCが使用可能であるか否かを示すフラグであってよい。言い換えると、例えば、上記TSRC使用可能フラグは、スライス内変換スキップブロックに対してTSRCが使用可能であるか否かを示すフラグであってよい。ここで、ブロックは、コーディングブロック(Coding Block,CB)または変換ブロック(Transform Block,TB)であってよい。例えば、値が1である上記TSRC使用可能フラグは、上記TSRCが使用可能でないことを示すことができ、値が0である上記TSRC使用可能フラグは、上記TSRCが使用可能であることを示すことができる。また、例えば、上記TSRC使用可能フラグは、スライスヘッダ(Slice Header)シンタックスでシグナリングされてよい。上記TSRC使用可能フラグのシンタックスエレメントは、上述したsh_ts_residual_coding_disabled_flagであってよい。上記TSRC使用可能フラグは、TSRC使用不能フラグと呼ぶこともできる。
一方、例えば、デコード装置は、従属量子化使用可能フラグを取得できる。デコード装置は、ビットストリームを用いて、上記従属量子化使用可能フラグを含む映像情報を取得できる。映像情報は、上記従属量子化使用可能フラグを含むことができる。例えば、上記従属量子化使用可能フラグは、従属量子化(dependent quantization)が使用可能であるか否かに関するフラグであってよい。例えば、従属量子化使用可能フラグは、従属量子化(dependent quantization)が使用可能であるか否かを示すことができる。すなわち、例えば、従属量子化使用可能フラグは、シーケンス(sequence)内ピクチャのブロックに対して従属量子化が使用可能であるか否かを示すことができる。例えば、従属量子化使用可能フラグは、現スライスに対して従属量子化が用いられるか否かを示す従属量子化使用フラグが存在できるか否かを示すことができる。例えば、値が1である上記従属量子化使用可能フラグは、上記従属量子化が使用可能であることを示すことができ、値が0である上記従属量子化使用可能フラグは、上記従属量子化が使用可能でないことを示すことができる。また、例えば、上記従属量子化使用可能フラグは、SPSシンタックスまたはスライスヘッダシンタックスなどでシグナリングされてよい。上記従属量子化使用可能フラグのシンタックスエレメントは、上述したsps_dep_quant_enabled_flagであってよい。
また、例えば、デコード装置は、変換スキップ使用可能フラグを取得できる。デコード装置はビットストリームを用いて上記変換スキップ使用可能フラグを含む映像情報を取得できる。映像情報は、上記変換スキップ使用可能フラグを含むことができる。例えば、上記変換スキップ使用可能フラグは、変換スキップ(transform skip)が使用可能であるか否かに関するフラグであってよい。例えば、変換スキップ使用可能フラグは、変換スキップ(transform skip)が使用可能であるか否かを示すことができる。すなわち、例えば、変換スキップ使用可能フラグは、シーケンス(sequence)内ピクチャのブロックに対して変換スキップが使用可能であるか否かを示すことができる。例えば、変換スキップ使用可能フラグは、変換スキップフラグが存在できるか否かを示すことができる。例えば、値が1である上記変換スキップ使用可能フラグは、上記変換スキップが使用可能であることを示すことができ、値が0である上記変換スキップ使用可能フラグは、上記変換スキップが使用可能でないことを示すことができる。すなわち、例えば、値が1である上記変換スキップ使用可能フラグは、上記変換スキップフラグが存在できることを示すことができ、値が0である上記変換スキップ使用可能フラグは、上記変換スキップフラグが存在しないことを示すことができる。また、例えば、上記変換スキップ使用可能フラグは、SPS(Sequence Parameter Set)シンタックスでシグナリングされてよい。上記変換スキップ使用可能フラグのシンタックスエレメントは、上述したsps_transform_skip_enabled_flagであってよい。
また、例えば、上記TSRC使用可能フラグは、上記サインデータハイディング使用可能フラグおよび/または上記変換スキップ使用可能フラグに基づいて取得されてよい。例えば、上記TSRC使用可能フラグは、値が0である上記サインデータハイディング使用可能フラグおよび値が1である上記変換スキップ使用可能フラグに基づいて取得されてよい。すなわち、例えば、上記サインデータハイディング使用可能フラグの値が0であり(すなわち、上記サインデータハイディング使用可能フラグが、サインデータハイディングが使用可能でないことを示し)、上記変換スキップ使用可能フラグの値が1である場合(すなわち、上記変換スキップ使用可能フラグが、上記変換スキップが使用可能であることを示す場合)に、上記TSRC使用可能フラグは取得(または、シグナリング)されてよい。また、例えば、上記変換スキップ使用可能フラグの値が0である場合、上記TSRC使用可能フラグは取得されなくてよく、上記TSRC使用可能フラグの値は0と導出されてよい。すなわち、例えば、上記変換スキップ使用可能フラグの値が0である場合、上記TSRC使用可能フラグはシグナリングされなくてよく、上記TSRC使用可能フラグの値は0と導出されてよい。
デコード装置は、上記TSRC使用可能フラグに基づいて上記現スライス内の現ブロックに対する残差コーディング情報を取得する(S1120)。デコード装置は、上記TSRC使用可能フラグに基づいて上記現スライス内の現ブロックに対する残差情報を取得できる。ここで、上記現ブロックは、コーディングブロック(Coding Block,CB)または変換ブロック(Transform Block,TB)であってよい。
例えば、デコード装置は、上記TSRC使用可能フラグに基づいて現スライス内の上記現ブロックに対する残差コーディングシンタックスを決定できる。例えば、デコード装置は、上記TSRC使用可能フラグに基づいて上記現ブロックに対する残差コーディングシンタックスをレギュラ残差コーディング(Regular Residual Coding,RRC)シンタックスおよび変換スキップ残差コーディング(Transform Skip Residual Coding,TSRC)シンタックスのうちの一つと決定できる。RRCシンタックスは、RRCによるシンタックスを表すことができ、TSRCシンタックスは、TSRCによるシンタックスを表すことができる。また、例えば、上記現ブロックは、上記現スライス内変換スキップブロックであってよい。ここで、上記変換スキップブロックは、変換が適用されないブロックを意味できる。
例えば、値が1である上記TSRC使用可能フラグに基づいて、上記現スライス内の上記現ブロックに対する上記残差コーディングシンタックスは、レギュラ残差コーディング(Regular Residual Coding,RRC)シンタックスと決定されてよい。この場合、例えば、値が1である上記変換スキップ使用可能フラグに基づいて、上記現ブロックの変換をスキップするか否かに関する変換スキップフラグが取得されてよく、上記変換スキップフラグの値は1であってよい。例えば、上記映像情報は、上記現ブロックに対する変換スキップフラグを含むことができる。上記変換スキップフラグは、上記現ブロックの変換をスキップするか否かを示すことができる。すなわち、上記変換スキップフラグは、上記現ブロックの変換係数に変換が適用されたか否かを示すことができる。上記変換スキップフラグを表すシンタックスエレメントは、上述したtransform_skip_flagであってよい。例えば、上記変換スキップフラグの値が1である場合、上記変換スキップフラグは、上記現ブロックに変換が適用されないこと(すなわち、変換スキップされること)を示すことができ、上記変換スキップフラグの値が0である場合、上記変換スキップフラグは、上記現ブロックに変換が適用されることを示すことができる。例えば、上記現ブロックに対する変換スキップフラグの値が1であってよい。
また、例えば、値が0である上記TSRC使用可能フラグに基づいて、上記現ブロックに対する上記残差コーディングシンタックスは、変換スキップ残差コーディング(Transform Skip Residual Coding,TSRC)シンタックスと決定されてよい。また、例えば、上記現ブロックの変換をスキップするか否かに関する変換スキップフラグが取得されてよく、値が1である上記変換スキップフラグおよび値が0である上記TSRC使用可能フラグに基づいて、上記現ブロックに対する上記残差コーディングシンタックスは、変換スキップ残差コーディング(Transform Skip Residual Coding,TSRC)シンタックスと決定されてよい。また、例えば、上記現ブロックの変換をスキップするか否かに関する変換スキップフラグが取得されてよく、値が0である上記変換スキップフラグおよび値が0である上記TSRC使用可能フラグに基づいて、上記現ブロックに対する上記残差コーディングシンタックスは、レギュラ残差コーディング(Regular Residual Coding,RRC)シンタックスと決定されてよい。
その後、例えば、デコード装置は、上記現ブロックに対する上記決定された残差コーディングシンタックスの残差情報を取得できる。例えば、値が1である上記TSRC使用可能フラグに基づいてレギュラ残差コーディング(Regular Residual Coding,RRC)シンタックスの残差情報が取得されてよく、値が0である上記TSRC使用可能フラグに基づいてTSRCシンタックスの残差情報が取得されてよい。上記映像情報は、残差情報を含むことができる。
例えば、上記現ブロックに対する上記残差コーディングシンタックスが上記RRCシンタックスと決定された場合、デコード装置は、上記現ブロックに対する上記RRCシンタックスの残差情報を取得できる。例えば、上記RRCシンタックスの上記残差情報は、上記表2に開示されたシンタックスエレメントを含むことができる。
例えば、上記RRCシンタックスの上記残差情報は、上記現ブロックの変換係数に関するシンタックスエレメントを含むことができる。ここで、変換係数(transform coefficient)は、残差係数(residual coefficient)と呼ぶこともできる。
例えば、上記シンタックスエレメントは、last_sig_coeff_x_prefix、last_sig_coeff_y_prefix、last_sig_coeff_x_suffix、last_sig_coeff_y_suffix、sb_coded_flag、sig_coeff_flag、abs_level_gt1_flag、par_level_flag、abs_level_gtX_flag、abs_remainder、dec_abs_level、および/またはcoeff_sign_flagなどのシンタックスエレメント(syntax elements)を含むことができる。
具体的には、例えば、上記シンタックスエレメントは、上記現ブロックの残差係数配列(array)において最後のノンゼロ(non-zero)変換係数の位置を示す位置情報を含むことができる。すなわち、上記シンタックスエレメントは、上記現ブロックのスキャン順序(scanning order)における最後のノンゼロ(non-zero)変換係数の位置を示す位置情報を含むことができる。上記位置情報は、上記最後のノンゼロ変換係数の列位置(column position)のプレフィックス(prefix)を示す情報、上記最後のノンゼロ変換係数の行位置(row position)のプレフィックス(prefix)を示す情報、上記最後のノンゼロ変換係数の列位置(column position)のサフィックス(suffix)を示す情報、上記最後のノンゼロ変換係数の行位置(row position)のサフィックス(suffix)を示す情報を含むことができる。上記位置情報に関するシンタックスエレメントは、last_sig_coeff_x_prefix、last_sig_coeff_y_prefix、last_sig_coeff_x_suffix、last_sig_coeff_y_suffixであってよい。一方、ノンゼロ変換係数は、有効係数(significant coefficient)と呼ぶこともできる。
また、例えば、上記シンタックスエレメントは、上記現ブロックのサブブロックがノンゼロ変換係数を含むか否かを示す符号化サブブロックフラグ、上記現ブロックの変換係数がノンゼロ(non-zero)変換係数か否かを示す有効係数フラグ、上記変換係数に対する係数レベルが第1閾値よりも大きいか否かに関する第1係数レベルフラグ、上記係数レベルのパリティ(parity)に関するパリティレベルフラグ、および/または上記変換係数の上記係数レベルが第2閾値よりも大きいか否かに関する第2係数レベルフラグを含むことができる。ここで、上記符号化サブブロックフラグは、sb_coded_flagまたはcoded_sub_block_flagであってよく、上記有効係数フラグは、sig_coeff_flagであってよく、上記第1係数レベルフラグは、abs_level_gt1_flagまたはabs_level_gtx_flagであってよく、上記パリティレベルフラグは、par_level_flagであってよく、上記第2係数レベルフラグは、abs_level_gt3_flagまたはabs_level_gtx_flagであってよい。
また、例えば、上記シンタックスエレメントは、上記現ブロックの変換係数の値に対する係数値関連情報を含むことができる。上記係数値関連情報は、abs_remainderおよび/またはdec_abs_levelであってよい。
また、例えば、上記シンタックスエレメントは、上記変換係数の符号(sign)を示すサインフラグを含むことができる。上記サインフラグは、coeff_sign_flagであってよい。
一方、例えば、上記現ブロックに対して上記サインデータハイディングが適用される場合、上記現ブロック内の現CG(Coefficient Group)の最初の有効変換係数のサインフラグはシグナリングされなくてよい。すなわち、例えば、上記現ブロックに対して上記サインデータハイディングが適用される場合、上記シンタックスエレメントは、上記最初の有効変換係数の符号(sign)を示すサインフラグを含まなくてよい。一方、例えば、上記現ブロックに対して上記サインデータハイディングが適用されるか否かは、上記サインデータハイディング使用可能フラグおよび/または上記現CGの最初の有効変換係数位置および最後の有効変換係数位置に基づいて導出されてよい。例えば、上記サインデータハイディング使用可能フラグの値が1であり、上記最後の有効変換係数位置から上記最初の有効変換係数位置を引いた値が3よりも大きい場合(すなわち、上記サインデータハイディング使用可能フラグの値が1であり、上記現CG内の有効変換係数の個数が3よりも大きい場合)に、上記現ブロックの上記現CGに対して上記サインデータハイディングが適用されてよい。
また、例えば、上記現ブロックに対する上記残差コーディングシンタックスが上記TSRCシンタックスと決定された場合、デコード装置は、上記現ブロックに対する上記TSRCシンタックスの残差情報を取得できる。例えば、上記TSRCシンタックスの上記残差情報は、上記表3に開示されたシンタックスエレメントを含むことができる。
例えば、上記TSRCシンタックスの上記残差情報は、上記現ブロックの変換係数に関するシンタックスエレメントを含むことができる。ここで、変換係数(transform coefficient)は、残差係数(residual coefficient)と呼ぶこともできる。
例えば、上記シンタックスエレメントは、変換係数に対するコンテキストコーディングされたシンタックスエレメントおよび/またはバイパスコーディングされたシンタックスエレメントを含むことができる。上記シンタックスエレメントは、sig_coeff_flag、coeff_sign_flag、abs_level_gt1_flag、par_level_flag、abs_level_gtX_flagおよび/またはabs_remainderなどのシンタックスエレメント(syntax elements)を含むことができる。
例えば、上記変換係数に対するコンテキストコーディングされた上記シンタックスエレメントは、上記変換係数がノンゼロ(non-zero)変換係数か否かを示す有効係数フラグ、上記変換係数に対する符号(sign)を示すサインフラグ、上記変換係数に対する係数レベルが第1閾値よりも大きいか否かに関する第1係数レベルフラグおよび/または上記変換係数に対する係数レベルのパリティ(parity)に関するパリティレベルフラグを含むことができる。また、例えば、上記コンテキストコーディングされたシンタックスエレメントは、上記変換係数の上記係数レベルが第2閾値よりも大きいか否かに関する第2係数レベルフラグ、上記変換係数の上記係数レベルが第3閾値よりも大きいか否かに関する第3係数レベルフラグ、上記変換係数の上記係数レベルが第4閾値よりも大きいか否かに関する第4係数レベルフラグおよび/または上記変換係数の上記係数レベルが第5閾値よりも大きいか否かに関する第5係数レベルフラグを含むことができる。ここで、上記有効係数フラグは、sig_coeff_flagであってよく、上記サインフラグは、coeff_sign_flagであってよく、上記第1係数レベルフラグは、abs_level_gt1_flagであってよく、上記パリティレベルフラグは、par_level_flagであってよい。また、上記第2係数レベルフラグは、abs_level_gt3_flagまたはabs_level_gtx_flagであってよく、上記第3係数レベルフラグは、abs_level_gt5_flagまたはabs_level_gtx_flagであってよく、上記第4係数レベルフラグは、abs_level_gt7_flagまたはabs_level_gtx_flagであってよく、上記第5係数レベルフラグは、abs_level_gt9_flagまたはabs_level_gtx_flagであってよい。
また、例えば、上記変換係数に対するバイパスコーディングされた上記シンタックスエレメントは、上記変換係数の値(または、係数レベル)に関する係数レベル情報および/または上記変換係数に対する符号(sign)を示すサインフラグを含むことができる。上記係数レベル情報は、abs_remainderおよび/またはdec_abs_levelであってよく、上記サインフラグは、coeff_sign_flagであってよい。
デコード装置は、上記現ブロックに対して受信した予測情報に基づいて上記現ブロックの予測サンプルを導出する(S1130)。例えば、デコード装置は、上記受信した予測情報に基づいて決定されたインター予測モードまたはイントラ予測モードに基づいて上記現ブロックの予測サンプルを導出することができる。例えば、デコード装置は、上記受信した予測情報に基づいて決定されたインター予測モードに基づいて上記現ブロックの動き情報を導出することができる。例えば、デコード装置は、上記現ブロックに対する動き情報候補リストを構成でき、上記予測情報に含まれる動き情報候補インデックス情報に基づいて動き情報候補リスト内一つの動き情報候補を選択でき、上記選択された動き情報候補に基づいて上記現ブロックの動き情報を導出することができる。その後、例えば、デコード装置は、上記現ブロックの参照ピクチャインデックスに基づいて上記現ブロックの参照ピクチャを導出でき、上記現ブロックの動きベクトルが上記参照ピクチャ上で示す参照ブロックのサンプルに基づいて上記現ブロックの予測サンプルを導出することができる。上記動き情報は、上記現ブロックの上記参照ピクチャインデックスおよび上記動きベクトルを含むことができる。
デコード装置は、上記残差コーディング情報に基づいて上記現ブロックに対する残差サンプルを導出する(S1140)。例えば、デコード装置は、上記残差コーティング情報に基づいて上記現ブロックの変換係数を導出することができ、上記変換係数に基づいて上記現ブロックの残差サンプルを導出することができる。
例えば、デコード装置は、上記残差情報のシンタックスエレメントに基づいて上記現ブロックの変換係数を導出することができる。その後、デコード装置は、上記変換係数に基づいて上記現ブロックの残差サンプルを導出することができる。一例として、上記変換スキップフラグに基づいて、上記現ブロックに対して変換が適用されないと導出された場合、すなわち、上記変換スキップフラグの値が1である場合、デコード装置は、上記変換係数を上記現ブロックの上記残差サンプルとして導出することができる。あるいは、例えば、上記変換スキップフラグに基づいて、上記現ブロックに対して変換が適用されないと導出された場合、すなわち、上記変換スキップフラグの値が1である場合、デコード装置は、上記変換係数を逆量子化して上記現ブロックの上記残差サンプルを導出することができる。あるいは、例えば、上記変換スキップフラグに基づいて、上記現スライス内の上記現ブロックに対して変換が適用されたと導出された場合、すなわち、上記現ブロックに対する変換スキップフラグの値が0である場合、デコード装置は、上記変換係数を逆変換して上記現ブロックの上記残差サンプルを導出することができる。あるいは、例えば、上記変換スキップフラグに基づいて上記現ブロックに対して変換が適用されたと導出された場合、すなわち、上記変換スキップフラグの値が0である場合、デコード装置は、上記変換係数を逆量子化し、逆量子化された変換係数を逆変換して、上記現ブロックの上記残差サンプルを導出することができる。
一方、例えば、上記現ブロックに対して上記サインデータハイディングが適用される場合に、上記現ブロック内の上記現CGの最初の有効変換係数の符号(sign)は、上記現CG内有効変換係数の絶対値の和に基づいて導出されてよい。例えば、上記有効変換係数の絶対値の和が偶数(even)である場合、上記最初の有効変換係数の符号は正数(positive value)として導出されてよく、上記有効変換係数の絶対値の和が奇数(odd)である場合、上記最初の有効変換係数の符号は負数(negative value)として導出されてよい。
デコード装置は、上記予測サンプルおよび上記残差サンプルに基づいて復元ピクチャを生成する(S1150)。例えば、デコード装置は、上記予測サンプルおよび上記残差サンプルに基づいて上記現ブロックの復元サンプルおよび/または復元ピクチャを生成できる。例えば、デコード装置は、上記予測サンプルと上記残差サンプルとの加算によって上記復元サンプルを生成できる。
その後、必要によって、主観的/客観的画質を向上させるために、デブロックフィルタリング、SAOおよび/またはALF手順のようなインループフィルタリング手順が上記復元ピクチャに適用されてよいことは、上述した通りである。
図12には、本文書に係る映像デコード方法を行うデコード装置を概略的に示す。図11に開示の方法は、図12に開示のデコード装置によって行われてよい。具体的には、例えば、図12の上記デコード装置のエントロピ復号部は、図11のS1100~S1120を行うことができ、図12の上記デコード装置の予測部は、図11のS1130を行うことができ、図12の上記デコード装置の残差(レジデュアル)処理部は、図11のS1140を行うことができ、図12の上記デコード装置の加算部は、図11のS1150を行うことができる。また、図示してはいないが、現ブロックに対する予測情報を受信する過程は、図12の上記デコード装置のエントロピ復号部によって行われてよい。
上述した本文書によれば、残差コーディングの効率を上げることができる。
また、本文書によれば、サインデータハイディング使用可能フラグに従属してTSRC使用可能フラグをシグナリングすることができ、これにより、TSRCが使用可能でない変換スキップブロックに対してサインデータハイディングが用いられないようにすることによってコーディング効率を向上させ、コーディングされるビット量を減らして残差コーディング効率の全般を向上させることができる。
また、本文書によれば、変換スキップ使用可能フラグおよびサインデータハイディング使用可能フラグに従属してTSRC使用可能フラグをシグナリングすることができ、これにより、TSRCが使用可能でない変換スキップブロックに対してサインデータハイディングが用いられないようにすることによってコーディング効率を向上させ、コーディングされるビット量を減らして残差コーディング効率の全般を向上させることができる。
上述した実施例において、方法は、一連の段階またはブロックであり、フローチャート(順序図)に基づいて説明されているが、本文書は、段階の順序に限定されるものではなく、ある段階は、上述したのと異なる段階および異なる順序でまたは同時に発生してもよい。また、当業者であれば、フローチャートに示された段階が排他的でなく、他の段階が含まれたり、フローチャートの1つまたは複数の段階が本文書の範囲に影響を及ぼさずに削除されてもよいことが理解できよう。
本文書で説明した実施例は、プロセッサ、マイクロプロセッサ、コントローラまたはチップ上で)具現され行われてよい。例えば、各図に示した機能ユニットは、コンピュータ、プロセッサ、マイクロプロセッサ、コントローラまたはチップ上で具現されて行われてよい。この場合、具現のための情報(例えば、information on instructions)またはアルゴリズムがデジタル記憶媒体に記憶されてよい。
また、本文書の実施例が適用されるデコード装置およびエンコード装置は、マルチメディア放送送受信装置、モバイル通信端末、ホームシネマビデオ装置、デジタルシネマビデオ装置、監視用カメラ、ビデオ会話装置、ビデオ通信などのリアルタイム(実時間)通信装置、モバイルストリーミング装置、記憶媒体、カムコーダ、ビデオオンデマンド(注文型ビデオ)(VoD)サービス提供装置、OTTビデオ(Over The Top video)装置、インターネットストリーミングサービス提供装置、3次元(3D)ビデオ装置、画像電話ビデオ装置、運送手段端末(例えば、車両端末、飛行機端末、船舶端末など)および医療用ビデオ装置などに含まれてよく、ビデオ信号またはデータ信号を処理するために用いられてよい。例えば、OTTビデオ(Over The Top video)装置としては、ゲームコンソール、ブルーレイプレーヤ、インターネット接続TV、ホームシアターシステム、スマートフォン、タブレットPC、DVR(Digital Video Recorder)などを含むことができる。
また、本文書の実施例が適用される処理方法は、コンピュータで実行されるプログラムの形態で生産されてよく、コンピュータ読み取り可能記録(記憶)媒体に記憶されてよい。本文書によるデータ構造を有するマルチメディアデータも、コンピュータ読み取り可能記録媒体に記憶されてよい。上記コンピュータ読み取り可能記録媒体は、コンピュータで読み取り可能なデータが記憶されるあらゆる種類の記憶装置および分散記憶装置を含む。上記コンピュータ読み取り可能記録媒体は、例えば、ブルーレイディスク(BD)、ユニバーサルシリアル(汎用直列)バス(USB)、ROM、PROM、EPROM、EEPROM、RAM、CD-ROM、磁気テープ、フロッピーディスクおよび光学データ記憶装置を含むことができる。また、上記コンピュータ読み取り可能記録媒体は、搬送波(例えば、インターネットを介した送信)の形態で具現されたメディアを含む。また、エンコード方法で生成されたビットストリームがコンピュータ読み取り可能記録媒体に記憶されてもよく、有無線通信ネットワークを通じて送信されてもよい。
また、本文書の実施例は、プログラムコードによるコンピュータプログラム製品として具現されてよく、上記プログラムコードは、本文書の実施例によってコンピュータで実行されてよい。上記プログラムコードは、コンピュータで読み取り可能なキャリア上に記憶されてよい。
図13は、本文書の実施例が適用されるコンテンツストリーミングシステムを例示する構造図である。
本文書の実施例が適用されるコンテンツストリーミングシステムは、大まかに、エンコードサーバ、ストリーミングサーバ、ウェブサーバ、メディアストレージ、ユーザ装置およびマルチメディア入力装置を含むことができる。
上記エンコードサーバは、スマートフォン、カメラ、カムコーダなどのマルチメディア入力装置から入力されたコンテンツをデジタルデータとして圧縮してビットストリームを生成し、これを上記ストリーミングサーバに送信する役割を担う。他の例として、スマートフォン、カメラ、カムコーダなどのマルチメディア入力装置がビットストリームを直接生成する場合に、上記エンコードサーバは省略されてよい。
上記ビットストリームは、本文書の実施例が適用されるエンコード方法またはビットストリーム生成方法によって生成されてよく、上記ストリーミングサーバは、上記ビットストリームを送信または受信する過程で一時的に上記ビットストリームを記憶することができる。
上記ストリーミングサーバは、ウェブサーバを介したユーザ要求に基づいてマルチメディアデータをユーザ装置に送信し、上記ウェブサーバは、ユーザにどのようなサービスがあるかを知らせる媒介体として働く。ユーザ所望のサービスを上記ウェブサーバに要求すれば、上記ウェブサーバは、それをストリーミングサーバに伝達し、上記ストリーミングサーバは、ユーザにマルチメディアデータを送信する。このとき、上記コンテンツストリーミングシステムは、別個の制御サーバを含むことができ、この場合、上記制御サーバは、上記コンテンツストリーミングシステムにおける各装置間の命令/応答を制御する役割を担う。
上記ストリーミングサーバは、メディアストレージおよび/またはエンコードサーバからコンテンツを受信することができる。例えば、上記エンコードサーバからコンテンツを受信する場合に、上記コンテンツをリアルタイムに受信することができる。この場合、円滑なストリーミングサービスを提供するために、上記ストリーミングサーバは、上記ビットストリームを一定時間記憶することができる。
上記ユーザ装置の例としては、携帯電話、スマートフォン(smart phone)、ノートパソコン(laptop computer)、デジタル放送用端末機、PDA(Personal Digital Assistants)、PMP(Portable Multimedia Player)、ナビゲーション、スレートPC(slate PC)、タブレットPC(tablet PC)、ウルトラブック(ULTRABOOK(登録商標))、ウェアラブルデバイス(wearable device、例えば、スマートウォッチ(ウォッチ型端末機、smartwatch)、スマートグラス(グラス型端末機、smart glass)、HMD(Head Mounted Display))、デジタルTV、デスクトップコンピュータ、デジタルサイネージなどを挙げることができる。上記コンテンツストリーミングシステム内の各サーバは、分散サーバとして運用されてよく、この場合、各サーバで受信するデータは分散処理されてよい。
本明細書に記載された請求項は、様々な方式で組み合わせられてよい。例えば、本明細書の方法請求項の技術的特徴が組み合わせられて装置として具現されてよく、本明細書の装置請求項の技術的特徴が組み合わせられて方法として具現されてよい。また、本明細書の方法請求項の技術的特徴と装置請求項の技術的特徴とが組み合わせられて装置として具現されてよく、本明細書の方法請求項の技術的特徴と装置請求項の技術的特徴とが組み合わせられて方法として具現されてよい。