JP2018520562A - 最後のパレットインデックスのグループ化、およびパレットサイズとラン値とを使用するインデックスコーディング - Google Patents

最後のパレットインデックスのグループ化、およびパレットサイズとラン値とを使用するインデックスコーディング Download PDF

Info

Publication number
JP2018520562A
JP2018520562A JP2017560143A JP2017560143A JP2018520562A JP 2018520562 A JP2018520562 A JP 2018520562A JP 2017560143 A JP2017560143 A JP 2017560143A JP 2017560143 A JP2017560143 A JP 2017560143A JP 2018520562 A JP2018520562 A JP 2018520562A
Authority
JP
Japan
Prior art keywords
palette
run
index
value
syntax element
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2017560143A
Other languages
English (en)
Inventor
カルチェビチ、マルタ
ゾウ、フェン
セレジン、バディム
プ、ウェイ
ジョーシー、ラジャン・ラクスマン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2018520562A publication Critical patent/JP2018520562A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/187Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a scalable video layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Abstract

ビデオデータを復号するためのデバイスは、ビットストリーム中の第1のエントロピー符号化データに基づいて、ビデオデータの現在ピクチャの現在ブロックのためのラン関係シンタックス要素グループのセットを決定することと、第2のエントロピー符号化データそのビットストリームに基づいて、現在ブロックのためのパレットインデックスシンタックス要素のセットを決定することと、第1のエントロピー符号化データが、第2のエントロピー符号化データの前にビットストリーム中で発生し、ここにおいて、ラン関係シンタックス要素グループのセットのうちの各それぞれのラン関係シンタックス要素グループが、等しいパレットモードタイプインジケータのそれぞれのランのそれぞれのタイプと、それぞれのランのそれぞれの長さとを示し、パレットインデックスシンタックス要素のセットのうちの各それぞれのパレットインデックスシンタックス要素が、サンプル値のセットを備えるパレット中のエントリを示す、サンプル値に基づいて、現在ブロックを再構築することとを行うように構成される。

Description

[0001]本出願は、その各々の内容全体が参照により本明細書に組み込まれる、
2015年5月21日に出願された米国仮特許出願第62/165,049号と、
2015年6月8日に出願された米国仮特許出願第62/172,705号と、
2015年6月8日に出願された米国仮特許出願第62/172,778号と、
2015年6月8日に出願された米国仮特許出願第62/172,771号と、
2015年6月9日に出願された米国仮特許出願第62/173,201号と、
2015年6月9日に出願された米国仮特許出願第62/173,325号と、
2015年6月9日に出願された米国仮特許出願第62/173,298号と
の利益を主張する。
[0002]本開示は、ビデオ符号化およびビデオ復号に関する。
[0003]デジタルビデオ能力は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末(PDA)、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダー、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、セルラー電話または衛星無線電話、いわゆる「スマートフォン」、ビデオ遠隔会議デバイス、ビデオストリーミングデバイスなどを含む、広範囲のデバイスに組み込まれ得る。デジタルビデオデバイスは、MPEG−2、MPEG−4、ITU−T H.263、ITU−T H.264/MPEG−4、Part 10、アドバンストビデオコーディング(AVC)、H.265、高効率ビデオコーディング(HEVC)規格によって定義された規格、およびそのような規格の拡張に記載されているビデオ圧縮技法など、ビデオ圧縮技法を実装する。これらのビデオデバイスは、そのようなビデオ圧縮技法を実装することによって、デジタルビデオ情報をより効率的に送信し、受信し、符号化し、復号し、および/または記憶し得る。
[0004]ビデオ圧縮技法は、ビデオシーケンスに固有の冗長性を低減または除去するために空間的(イントラピクチャ)予測および/または時間的(インターピクチャ)予測を実施する。ブロックベースのビデオコーディングでは、ビデオスライス(すなわち、ビデオフレームまたはビデオフレームの一部分)がビデオブロックに区分され得る。ピクチャのイントラコード化(I)スライス中のビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間予測を使用して符号化される。ピクチャのインターコード化(PまたはB)スライス中のビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間予測、または他の参照ピクチャ中の参照サンプルに対する時間予測を使用し得る。ピクチャはフレームと呼ばれる場合がある。
[0005]空間予測または時間予測は、コーディングされるべきブロックのための予測ブロックをもたらす。残差データは、コーディングされるべき元のブロックと予測ブロックとの間のピクセル差分を表す。インターコード化ブロックは、予測ブロックを形成する参照サンプルのブロックを指す動きベクトルに従って符号化され、残差データは、コード化ブロックと予測ブロックとの間の差分を示す。イントラコード化ブロックは、イントラコーディングモードと残差データとに従って符号化される。さらなる圧縮のために、残差データは、ピクセル領域から変換領域に変換され、残差係数が生じ得、その残差係数は、次いで量子化され得る。
[0006]本開示は、ビデオコーディングおよび圧縮のための技法について説明する。詳細には、本開示は、パレットコーディングを用いる、ビデオコンテンツ、特にスクリーンコンテンツのコーディングをサポートするための技法について説明する。従来のビデオコーディングでは、画像は、連続トーンであり空間的に滑らかであると仮定される。これらの仮定に基づいて、ブロックベースの変換、フィルタリングなどのような様々なツールが開発されており、そのようなツールは、自然のコンテンツのビデオに対しては良好な性能を示している。
[0007]一例では、ビデオデータを復号する方法は、ビットストリーム中の第1のエントロピー符号化データに基づいて、ビデオデータの現在ピクチャの現在ブロックのためのラン関係シンタックス要素グループのセットを決定することと、第2のエントロピー符号化データそのビットストリームに基づいて、現在ブロックのためのパレットインデックスシンタックス要素のセットを決定することと、第1のエントロピー符号化データが、第2のエントロピー符号化データの前にビットストリーム中で発生し、ここにおいて、ラン関係シンタックス要素グループのセットのうちの各それぞれのラン関係シンタックス要素グループが、等しいパレットモードタイプインジケータのそれぞれのランのそれぞれのタイプと、それぞれのランのそれぞれの長さとを示し、パレットインデックスシンタックス要素のセットのうちの各それぞれのパレットインデックスシンタックス要素が、サンプル値のセットを備えるパレット中のエントリを示す、パレット中のサンプル値に基づいて、現在ブロックを再構築することとを含む。
[0008]別の例では、ビデオデータを復号するためのデバイスは、ビデオデータのビットストリームを記憶するように構成されたメモリと、1つまたは複数のプロセッサとを含み、1つまたは複数のプロセッサが、ビットストリーム中の第1のエントロピー符号化データに基づいて、ビデオデータの現在ピクチャの現在ブロックのためのラン関係シンタックス要素グループのセットを決定することと、第2のエントロピー符号化データそのビットストリームに基づいて、現在ブロックのためのパレットインデックスシンタックス要素のセットを決定することと、第1のエントロピー符号化データが、第2のエントロピー符号化データの前にビットストリーム中で発生し、ここにおいて、ラン関係シンタックス要素グループのセットのうちの各それぞれのラン関係シンタックス要素グループが、等しいパレットモードタイプインジケータのそれぞれのランのそれぞれのタイプと、それぞれのランのそれぞれの長さとを示し、パレットインデックスシンタックス要素のセットのうちの各それぞれのパレットインデックスシンタックス要素が、サンプル値のセットを備えるパレット中のエントリを示す、パレット中のサンプル値に基づいて、現在ブロックを再構築することとを行うように構成される。
[0009]別の例では、ビデオデータを復号するための装置は、ビットストリーム中の第1のエントロピー符号化データに基づいて、ビデオデータの現在ピクチャの現在ブロックのためのラン関係シンタックス要素グループのセットを決定するための手段と、第2のエントロピー符号化データそのビットストリームに基づいて、現在ブロックのためのパレットインデックスシンタックス要素のセットを決定するための手段と、第1のエントロピー符号化データが、第2のエントロピー符号化データの前にビットストリーム中で発生し、ここにおいて、ラン関係シンタックス要素グループのセットのうちの各それぞれのラン関係シンタックス要素グループが、等しいパレットモードタイプインジケータのそれぞれのランのそれぞれのタイプと、それぞれのランのそれぞれの長さとを示し、パレットインデックスシンタックス要素のセットのうちの各それぞれのパレットインデックスシンタックス要素が、サンプル値のセットを備えるパレット中のエントリを示す、パレット中のサンプル値に基づいて、現在ブロックを再構築するための手段とを含む。
[0010]別の例では、1つまたは複数のプロセッサによって実行されたとき、1つまたは複数のプロセッサに、ビットストリーム中の第1のエントロピー符号化データに基づいて、ビデオデータの現在ピクチャの現在ブロックのためのラン関係シンタックス要素グループのセットを決定することと、第2のエントロピー符号化データそのビットストリームに基づいて、現在ブロックのためのパレットインデックスシンタックス要素のセットを決定することと、第1のエントロピー符号化データが、第2のエントロピー符号化データの前にビットストリーム中で発生し、ここにおいて、ラン関係シンタックス要素グループのセットのうちの各それぞれのラン関係シンタックス要素グループが、等しいパレットモードタイプインジケータのそれぞれのランのそれぞれのタイプと、それぞれのランのそれぞれの長さとを示し、パレットインデックスシンタックス要素のセットのうちの各それぞれのパレットインデックスシンタックス要素が、サンプル値のセットを備えるパレット中のエントリを示す、パレット中のサンプル値に基づいて、現在ブロックを再構築することとを行わせる命令を記憶する、コンピュータ可読記憶媒体。
[0011]1つまたは複数の例の詳細が以下の添付の図面および説明に記載されている。他の特徴、目的、および利点は、説明および図面、ならびに特許請求の範囲から明らかになろう。
[0012]本開示で説明される技法を利用し得る例示的なビデオコーディングシステムを示すブロック図。 [0013]パレットモードビデオコーディングを示す概念図。 [0014]本開示の技法に一致する、ビデオデータをコーディングするためのパレットを決定する例を示す概念図。 [0015]本開示の技法に一致する、ビデオブロックのためのパレットへのインデックスを決定する例を示す概念図。 [0016]本開示で説明される技法を実装し得る例示的なビデオエンコーダを示すブロック図。 [0017]本開示で説明される技法を実装し得る例示的なビデオデコーダを示すブロック図。 [0018]本開示の技法による、ビデオデータを符号化するための例示的な方法を示すフローチャート。 [0019]本開示の技法による、ビデオデータを符号化するための例示的な方法を示すフローチャート。
[0020]本開示は、ビデオコーディングおよび圧縮のための技法について説明する。詳細には、本開示は、パレットコーディングを用いる、ビデオコンテンツ、特にスクリーンコンテンツのコーディングをサポートするための技法について説明する。従来のビデオコーディングでは、画像は、連続トーンであり空間的に滑らかであると仮定される。これらの仮定に基づいて、ブロックベースの変換、フィルタリングなどのような様々なツールが開発されており、そのようなツールは、自然のコンテンツのビデオに対しては良好な性能を示している。
[0021]しかしながら、リモートデスクトップ、協調作業、およびワイヤレスディスプレイのような適用例では、コンピュータ生成スクリーンコンテンツが、圧縮されるべき主要なコンテンツであり得る。このタイプのコンテンツは、離散トーンを有し、鋭利な線と高コントラストのオブジェクト境界とを特徴とする傾向がある。連続的なトーンおよび滑らかさという仮定はもはや当てはまらないことがあるので、従来のビデオコーディング技法は、スクリーンコンテンツなど、いくつかのタイプのビデオコンテンツを圧縮するために使用されるとき、非効率的であり得る。
[0022]本開示は、スクリーン生成コンテンツコーディングに特に好適であり得る、パレットベースコーディングに関係する技法について説明する。たとえば、ビデオデータの特定のエリアが比較的少数の色を有すると仮定する。ビデオコーダ(たとえば、ビデオエンコーダまたはビデオデコーダ)は、特定のエリア(たとえば、所与のブロック)のビデオデータを表すための色のテーブルとして、いわゆる「パレット」をコーディングし得る。各ピクセルは、ピクセルの色を表すパレット中のエントリに関連付けられ得る。たとえば、ビデオコーダは、ピクセル値をパレット中の適切な値に関係付けるインデックスをコーディングし得る。
[0023]上記の例では、ビデオエンコーダは、ブロックのためのパレットを決定することと、各ピクセルの値を表すためのパレット中のエントリを位置特定することと、ピクセル値をパレットに関係付けるピクセルのためのインデックス値でパレットを符号化することとによって、ビデオデータのブロックを符号化し得る。ビデオデコーダは、符号化ビットストリームから取得されたシンタックス要素に基づいて、ブロックのためのパレット、ならびにブロックのピクセルのためのインデックス値を決定し得る。ビデオデコーダは、ブロックのピクセル値を再構築するために、ピクセルのインデックス値をパレットのエントリに関係付け得る。上記の例は、パレットベースコーディングの全般的な説明を与えることが意図されている。
[0024]本開示の技法は、概して、パレットモードコーディングにおいて利用されるシンタックス要素(たとえば、インデックスシンタックス要素、ランシンタックス要素、およびエスケープシンタックス要素)を効率的にコーディングするための技法に向けられている。以下でより詳細に説明されるように、本開示の技法は、コンテキスト適応型バイナリ算術コーディング(CABAC)コーディングされ得る、コンテキストコード化ラン値の後で、バイパスコーディングされ得る、非コンテキストコード化インデックスビンをグループ化することを含む。本開示はまた、ラン値のためのコンテキストが、インデックス値を使用して決定され得ないことを意味する、ラン値がインデックス値の前にコーディングされるとき、ラン値のためのコンテキストを決定するための技法についても説明する。本開示はまた、インデックス値のための様々な2値化技法についても説明する。本開示の技法は、いくつかのコーディングシナリオでは、パレットモードコーディング関係シンタックス要素を順序付け、既存の技法と比較されたとき、コーディング利得を生じる方法で、2値化技法とコンテキスト決定技法とを利用し得る。本開示の技法はまた、いくつかのコーディングシナリオでは、ハードウェア効率を改善し得る。
[0025]本開示の例によれば、ビデオデコーダは、ビットストリーム中の第1のエントロピー符号化データに基づいて、ビデオデータの現在ピクチャの現在ブロックのためのラン関係シンタックス要素グループのセットを決定し得る。さらに、ビデオデコーダは、ビットストリーム中の第2のエントロピー符号化データに基づいて、現在ブロックのためのパレットインデックスシンタックス要素のセットを決定し得、パレットインデックスシンタックス要素のセットが、ラン関係シンタックス要素グループのセットの後、ビットストリーム中で発生する。この例では、ラン関係シンタックス要素グループのセットのうちの各それぞれのラン関係シンタックス要素グループは、等しいパレットモードタイプインジケータのそれぞれのランのそれぞれのタイプと、それぞれのランのそれぞれの長さとを示す。この例では、サンプル値のセットを備えるパレット中のエントリを示す、パレットインデックスシンタックス要素のセットのうちの各それぞれのパレットインデックスシンタックス要素。ビデオデコーダは、パレット中のサンプル値に基づいて、現在ブロックを再構築し得る。
[0026]同様に、一例では、ビデオエンコーダは、ビットストリーム中に、ビデオデータの現在ピクチャの現在ブロックのためのラン関係シンタックス要素グループのセットに対応する、第1のエントロピー符号化データを含め得る。ビデオエンコーダは、ビットストリーム中に、現在ブロックのためのパレットインデックスシンタックス要素のセットに対応する、第2のエントロピー符号化データを含め得る。この例では、第1のエントロピー符号化データは、第2のエントロピー符号化データの前に、ビットストリーム中で発生する。この例では、ラン関係シンタックス要素グループのセットのうちの各それぞれのラン関係シンタックス要素グループは、等しいパレットモードタイプインジケータのそれぞれのランのそれぞれのタイプと、それぞれのランのそれぞれの長さとを示す。この例では、パレットインデックスシンタックス要素のセットのうちの各それぞれのパレットインデックスシンタックス要素は、サンプル値のセットを備えるパレット中のエントリを示す。
[0027]図1は、本開示で説明される技法を利用し得る例示的なビデオ符号化および復号システム10を示すブロック図である。図1に示されているように、システム10は、宛先デバイス14によって後で復号されるべき符号化ビデオデータを生成するソースデバイス12を含む。ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォン、いわゆる「スマート」パッドなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲のデバイスのいずれかを備え得る。場合によっては、ソースデバイス12および宛先デバイス14は、ワイヤレス通信のために装備され得る。
[0028]宛先デバイス14は、リンク16を介して、復号されるべき符号化ビデオデータを受信し得る。リンク16は、ソースデバイス12から宛先デバイス14に符号化ビデオデータを移動することが可能な任意のタイプの媒体またはデバイスを備え得る。一例では、リンク16は、ソースデバイス12が符号化ビデオデータをリアルタイムで宛先デバイス14に直接送信することを可能にするための通信媒体を備え得る。符号化ビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先デバイス14に送信され得る。通信媒体は、無線周波数(RF)スペクトルまたは1つもしくは複数の物理伝送線路などの、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス12から宛先デバイス14への通信を可能にするために有用であり得る任意の他の機器を含み得る。
[0029]代替的に、符号化データは、出力インターフェース22からストレージデバイス26に出力され得る。同様に、符号化データは、入力インターフェースによってストレージデバイス26からアクセスされ得る。ストレージデバイス26は、ハードドライブ、Blu−ray(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、揮発性または不揮発性メモリ、あるいは符号化ビデオデータを記憶するための任意の他の好適なデジタル記憶媒体など、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。さらなる一例では、ストレージデバイス26は、ソースデバイス12によって生成された符号化ビデオを保持し得る、ファイルサーバまたは別の中間ストレージデバイスに対応し得る。宛先デバイス14は、ストリーミングまたはダウンロードを介して、ストレージデバイス26から、記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化ビデオデータを記憶すること、およびその符号化ビデオデータを宛先デバイス14へ送信することが可能な任意のタイプのサーバであり得る。例示的なファイルサーバは、(たとえば、ウェブサイト用の)ウェブサーバ、FTPサーバ、ネットワーク接続ストレージ(NAS)デバイス、またはローカルディスクドライブを含む。宛先デバイス14は、インターネット接続を含む任意の標準的なデータ接続を通して符号化ビデオデータにアクセスし得る。これは、ワイヤレスチャネル(たとえば、Wi−Fi(登録商標)接続)、ワイヤード接続(たとえば、DSL、ケーブルモデムなど)、または、ファイルサーバ上に記憶された符号化ビデオデータにアクセスするのに好適である、両方の組合せを含み得る。ストレージデバイス26からの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであり得る。
[0030]本開示の技法は、必ずしもワイヤレス適用例または設定に限定されるとは限らない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえばインターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのデジタルビデオの符号化、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例など、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオ電話のような適用例をサポートするために、一方向または双方向のビデオ伝送をサポートするように構成され得る。
[0031]図1の例では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、出力インターフェース22とを含む。場合によっては、出力インターフェース22は、変調器/復調器(モデム)および/または送信機を含み得る。ソースデバイス12において、ビデオソース18は、ビデオキャプチャデバイス、たとえば、ビデオカメラ、前にキャプチャされたビデオを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェース、および/またはソースビデオとしてコンピュータグラフィックスデータを生成するためのコンピュータグラフィックスシステムなどのソース、あるいはそのようなソースの組合せを含み得る。一例として、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、いわゆるカメラフォンまたはビデオフォンを形成し得る。しかしながら、本開示で説明される技法は、概してビデオコーディングに適用可能であり得、ワイヤレスおよび/またはワイヤードの適用例に適用され得る。
[0032]キャプチャされたビデオ、プリキャプチャされたビデオ、またはコンピュータにより生成されたビデオは、ビデオエンコーダ20によって符号化され得る。符号化ビデオデータは、ソースデバイス12の出力インターフェース22を介して宛先デバイス14へ直接送信され得る。符号化ビデオデータは、さらに(または代替的に)、復号および/または再生のための宛先デバイス14または他のデバイスによる後のアクセスのために、ストレージデバイス26上に記憶され得る。
[0033]宛先デバイス14は、入力インターフェース28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。場合によっては、入力インターフェース28は、受信機および/またはモデムを含み得る。宛先デバイス14の入力インターフェース28は、リンク16を通じて符号化ビデオデータを受信する。リンク16を介して通信されるかまたはストレージデバイス26上で提供される符号化ビデオデータは、ビデオデータを復号する際にビデオデコーダ30などのビデオデコーダによって使用するための、ビデオエンコーダ20によって生成された様々なシンタックス要素を含み得る。そのようなシンタックス要素は、通信媒体上で送信される符号化ビデオデータとともに含められてよく、記憶媒体上に記憶されてよく、またはファイルサーバを記憶されてもよい。
[0034]ディスプレイデバイス32は、宛先デバイス14と一体化されるかまたはその外部にあり得る。いくつかの例では、宛先デバイス14は、集積ディスプレイデバイスを含んでよく、また、外部ディスプレイデバイスとインターフェースするように構成されてもよい。他の例では、宛先デバイス14はディスプレイデバイスであり得る。一般に、ディスプレイデバイス32は、復号ビデオデータをユーザに対して表示し、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを備え得る。
[0035]ビデオコーディング規格は、ITU−T H.261、ISO/IEC MPEG−1 Visual、ITU−T H.262またはISO/IEC MPEG−2 Visual、ITU−T H.263、ISO/IEC MPEG−4 Visual、およびそれのスケーラブルビデオコーディング(SVC)拡張とマルチビュービデオコーディング(MVC)拡張とを含む、(ISO/IEC MPEG−4 AVCとしても知られる)ITU−T H.264を含む。最近では、新しいビデオコーディング規格、すなわち、高効率ビデオコーディング(HEVC)の設計が、ITU−Tビデオコーディングエキスパートグループ(VCEG)とISO/IECモーションピクチャエキスパートグループ(MPEG)とのジョイントコラボレーションチームオンビデオコーディング(JCT−VC)によって確定された。以下でHEVCバージョン1と呼ばれる、最新のHEVC仕様は、http://www.itu.int/rec/T−REC−H.265−201304−Iから入手可能である。HEVCの範囲拡張、すなわち、HEVC−Rextもまた、JCT−VCによって開発中である。以下でRExt WD7と呼ばれる、範囲拡張の最近のワーキングドラフト(WD)は、http://phenix.int−evry.fr/jct/doc_end_user/documents/17_Valencia/wg11/JCTVC−Q1005−v4.zipから入手可能である。最近では、JCT−VCは、HEVC−Rextに基づく、スクリーンコンテンツコーディング(SCC)の開発を開始しており、いくつかの主要な技法が検討されている。
[0036]ビデオエンコーダ20およびビデオデコーダ30は、HEVC規格などのビデオ圧縮規格に従って動作し得、HEVCテストモデル(HM)に準拠し得る。ビデオエンコーダ20およびビデオデコーダ30はまた、上記に記載された規格のいずれか、ならびに、現在開発中の新しい規格を含む、他のプロプライエタリな規格または業界規格に従って動作し得る。本開示の技法は、いかなる特定のコーディング規格にも限定されない。
[0037]本開示の技法は、説明を簡単にするために、HEVC用語を利用し得る。しかしながら、本開示の技法がHEVCに限定されると仮定されるべきではなく、実際は、本開示の技法は、HEVCの後継規格およびその拡張、ならびに他の将来のコーデック設計および規格において実装され得ることが明示的に企図される。
[0038]図1には示されていないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30は、それぞれ、オーディオエンコーダおよびデコーダと統合され得、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理するために、適切なMUX−DEMUXユニット、または他のハードウェアおよびソフトウェアを含み得る。適用可能な場合、いくつかの例では、MUX−DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
[0039]ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアなど、様々な好適なエンコーダ回路のいずれか、あるいはそれらの任意の組合せとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、デバイスは、好適な非一時的コンピュータ可読媒体にソフトウェアのための命令を記憶し、本開示の技法を実施するために、1つまたは複数のプロセッサを使用して、ハードウェアでその命令を実行し得る。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも、それぞれのデバイスにおいて複合エンコーダ/デコーダ(コーデック)の一部として統合され得る。
[0040]上記で紹介したように、JCT−VCはHEVC規格の開発を最近確定した。HEVC規格化の取組みは、HEVCテストモデル(HM)と呼ばれるビデオコーディングデバイスの発展的モデルに基づいていた。HMは、たとえば、ITU−T H.264/AVCに従う既存のデバイスに対してビデオコーディングデバイスのいくつかの追加の能力を仮定する。たとえば、H.264は、9つのイントラ予測符号化モードを与えるが、HMは、35個ものイントラ予測符号化モードを与え得る。
[0041]HEVCおよび他のビデオコーディング仕様では、ビデオシーケンスは、一般に一連のピクチャを含む。ピクチャは、「フレーム」と呼ばれることもある。ピクチャは、SL、SCbおよびSCrと示される、3つのサンプルアレイを含み得る。SLは、ルーマサンプルの2次元アレイ(すなわち、ブロック)である。SCbは、Cbクロミナンスサンプルの2次元アレイである。SCrは、Crクロミナンスサンプルの2次元アレイである。クロミナンスサンプルは、本明細書では「クロマ」サンプルと呼ばれることもある。他の事例では、ピクチャはモノクロームであり得、ルーマサンプルのアレイのみを含み得る。
[0042]ピクチャの符号化された表現を生成するために、ビデオエンコーダ20は、コーディングツリーユニット(CTU)のセットを生成し得る。CTUの各々は、ルーマサンプルのコーディングツリーブロックと、クロマサンプルの2つの対応するコーディングツリーブロックと、それらのコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。モノクロームピクチャまたは3つの別々の色平面を有するピクチャでは、CTUは、単一のコーディングツリーブロックと、そのコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。コーディングツリーブロックは、サンプルのN×Nブロックであり得る。CTUは、「ツリーブロック」または「最大コーディングユニット」(LCU)と呼ばれることもある。HEVCのCTUは、H.264/AVCなど、他の規格のマクロブロックに広い意味で類似し得る。しかしながら、CTUは、必ずしも特定のサイズに限定されるとは限らず、1つまたは複数のコーディングユニット(CU)を含み得る。スライスは、ラスタ走査順序で連続的に順序付けられた整数個のCTUを含み得る。
[0043]コード化CTUを生成するために、ビデオエンコーダ20は、コーディングツリーブロックをコーディングブロックに分割するためにCTUのコーディングツリーブロックに対して4分木区分を再帰的に実施し得、したがって「コーディングツリーユニット」という名称がある。コーディングブロックは、サンプルのN×Nのブロックであり得る。CUは、ルーマサンプルアレイとCbサンプルアレイとCrサンプルアレイとを有するピクチャのルーマサンプルのコーディングブロックと、そのピクチャのクロマサンプルの2つの対応するコーディングブロックと、それらのコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。モノクロームピクチャまたは3つの別々の色平面を有するピクチャでは、CUは、単一のコーディングブロックと、そのコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。
[0044]ビデオエンコーダ20は、CUのコーディングブロックを1つまたは複数の予測ブロックに区分し得る。予測ブロックは、同じ予測が適用されるサンプルの矩形(すなわち、正方形または非正方形)ブロックである。CUの予測ユニット(PU)は、ルーマサンプルの予測ブロックと、クロマサンプルの2つの対応する予測ブロックと、それらの予測ブロックを予測するために使用されるシンタックス構造とを備え得る。モノクロームピクチャまたは3つの別々の色平面を有するピクチャでは、PUは、単一の予測ブロックと、その予測ブロックを予測するために使用されるシンタックス構造とを備え得る。ビデオエンコーダ20は、CUの各PUのルーマ予測ブロック、Cb予測ブロックおよびCr予測ブロックのための予測ルーマブロック、予測Cbブロックおよび予測Crブロックを生成し得る。
[0045]ビデオエンコーダ20は、PUのための予測ブロックを生成するために、イントラ予測、インター予測、またはパレットコーディングなどの別のコーディングモードを使用し得る。ビデオエンコーダ20が、PUの予測ブロックを生成するためにイントラ予測を使用する場合、ビデオエンコーダ20は、PUに関連付けられたピクチャの復号サンプルに基づいて、PUの予測ブロックを生成し得る。ビデオエンコーダ20が、PUの予測ブロックを生成するためにインター予測を使用する場合、ビデオエンコーダ20は、PUに関連付けられたピクチャ以外の1つまたは複数のピクチャの復号サンプルに基づいて、PUの予測ブロックを生成し得る。
[0046]ビデオエンコーダ20が、CUの1つまたは複数のPUのための予測ルーマブロック、予測Cbブロック、および予測Crブロックを生成した後、ビデオエンコーダ20は、CUのためのルーマ残差ブロックを生成し得る。CUのルーマ残差ブロック中の各サンプルは、CUの予測ルーマブロックのうちの1つ中のルーマサンプルとCUの元のルーマコーディングブロック中の対応するサンプルとの間の差分を示す。加えて、ビデオエンコーダ20は、CUのためのCb残差ブロックを生成し得る。CUのCb残差ブロック中の各サンプルは、CUの予測Cbブロックのうちの1つ中のCbサンプルとCUの元のCbコーディングブロック中の対応するサンプルとの間の差分を示し得る。ビデオエンコーダ20はまた、CUのためのCr残差ブロックを生成し得る。CUのCr残差ブロック中の各サンプルは、CUの予測Crブロックのうちの1つ中のCrサンプルとCUの元のCrコーディングブロック中の対応するサンプルとの間の差分を示し得る。
[0047]さらに、ビデオエンコーダ20は、CUのルーマ残差ブロックと、Cb残差ブロックと、Cr残差ブロックとを、1つまたは複数のルーマ変換ブロックと、Cb変換ブロックと、Cr変換ブロックとに分解するために、4分木区分を使用し得る。変換ブロックは、同じ変換が適用されるサンプルの矩形(たとえば、正方形または非正方形)ブロックである。CUの変換ユニット(TU)は、ルーマサンプルの変換ブロックと、クロマサンプルの2つの対応する変換ブロックと、それらの変換ブロックサンプルを変換するために使用されるシンタックス構造とを備え得る。したがって、CUの各TUは、ルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロックに関連付けられ得る。TUに関連付けられたルーマ変換ブロックは、CUのルーマ残差ブロックのサブブロックであり得る。Cb変換ブロックは、CUのCb残差ブロックのサブブロックであり得る。Cr変換ブロックは、CUのCr残差ブロックのサブブロックであり得る。モノクロームピクチャまたは3つの別々の色平面を有するピクチャでは、TUは、単一の変換ブロックと、その変換ブロックのサンプルを変換するために使用されるシンタックス構造とを備え得る。
[0048]ビデオエンコーダ20は、TUのためのルーマ係数ブロックを生成するために、TUのルーマ変換ブロックに1つまたは複数の変換を適用し得る。係数ブロックは、変換係数の2次元アレイであり得る。変換係数は、スカラー量であり得る。ビデオエンコーダ20は、TUのためのCb係数ブロックを生成するために、TUのCb変換ブロックに1つまたは複数の変換を適用し得る。ビデオエンコーダ20は、TUのためのCr係数ブロックを生成するために、TUのCr変換ブロックに1つまたは複数の変換を適用し得る。
[0049]係数ブロック(たとえば、ルーマ係数ブロック、Cb係数ブロックまたはCr係数ブロック)を生成した後、ビデオエンコーダ20は、係数ブロックを量子化することができる。量子化は、概して、変換係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を行うプロセスを指す。ビデオエンコーダ20が係数ブロックを量子化した後に、ビデオエンコーダ20は、量子化変換係数を示すシンタックス要素をエントロピー符号化し得る。たとえば、ビデオエンコーダ20は、量子化変換係数を示すシンタックス要素に対してCABACを実施し得る。
[0050]シンタックス要素にCABAC符号化を適用するために、ビデオエンコーダは、「ビン」と呼ばれる一連の1つまたは複数のビットを形成するために、シンタックス要素を2値化し得る。加えて、ビデオエンコーダは、コーディングコンテキストを特定することができる。コーディングコンテキストは、特定の値を有するビンをコーディングする確率を特定し得る。たとえば、コーディングコンテキストは、0の値のビンをコーディングする0.7の確率と、1の値のビンをコーディングする0.3の確率とを示し得る。コーディングコンテキストを特定した後、ビデオエンコーダは、間隔を下位サブ間隔と上位サブ間隔とに分割し得る。サブ間隔のうちの一方は、値0に関連付けられ得、他方のサブ間隔は、値1に関連付けられ得る。サブ間隔の幅は、特定されたコーディングコンテキストによって、関連付けられた値について示される確率に比例し得る。シンタックス要素のビンが、下位サブ間隔に関連付けられた値を有する場合、符号化された値は、下位サブ間隔の下位境界に等しくなり得る。シンタックス要素の同じビンが、上位サブ間隔に関連付けられた値を有する場合、符号化された値は、上位サブ間隔の下位境界に等しくなり得る。シンタックス要素の次のビンを符号化するために、ビデオエンコーダは、符号化ビットの値に関連付けられたサブ間隔である間隔で、これらのステップを繰り返し得る。ビデオエンコーダが、次のビンについてこれらのステップを繰り返すとき、ビデオエンコーダは、特定されたコーディングコンテキストおよび符号化されたビンの実際の値によって示される確率に基づく、修正された、すなわち、更新された確率を使用し得る。
[0051]ビデオデコーダが、シンタックス要素に対してCABAC復号を実施するとき、ビデオデコーダは、コーディングコンテキストを特定し得る。ビデオデコーダは次いで、間隔を下位サブ間隔と上位サブ間隔とに分割し得る。サブ間隔のうちの一方は、値0に関連付けられ得、他方のサブ間隔は、値1に関連付けられ得る。サブ間隔の幅は、特定されたコーディングコンテキストによって、関連付けられた値について示される確率に比例し得る。符号化された値が下位サブ間隔内にある場合、ビデオデコーダは、下位サブ間隔に関連付けられた値を有するビンを復号し得る。符号化された値が上位サブ間隔内にある場合、ビデオデコーダは、上位サブ間隔に関連付けられた値を有するビンを復号し得る。シンタックス要素の次のビンを復号するために、ビデオデコーダは、符号化された値を含んでいるサブ間隔である間隔で、これらのステップを繰り返し得る。ビデオデコーダが、次のビンについてこれらのステップを繰り返すとき、ビデオデコーダは、特定されたコーディングコンテキストおよび復号されたビンによって示される確率に基づく、修正された確率を使用し得る。ビデオデコーダは次いで、シンタックス要素を復元するために、ビンを逆2値化し得る。
[0052]すべてのシンタックス要素において正規のCABAC符号化を実施するのではなく、ビデオエンコーダは、バイパスCABACコーディング技法を使用して、いくつかのシンタックス要素(たとえば、ビン)を符号化し得る。ビンにおいて正規のCABACコーディングを実施することよりも、ビンにおいてバイパスCABACコーディングを実施することの方が、より計算コストが低くなり得る。さらに、バイパスCABACコーディングを実施することは、より高度の並列化およびスループットを可能にし得る。バイパスCABACコーディングを使用して符号化されたビンは、「バイパスビン」と呼ばれる場合がある。一緒にバイパスビンをグループ化することは、ビデオエンコーダおよびビデオデコーダのスループットを高め得る。バイパスCABACコーディングエンジンは、単一のサイクルにおいていくつかのビンをコーディングすることが可能であり得るのに対して、正規のCABACコーディングエンジンは、サイクルにおいて単一のビンのみをコーディングすることが可能であり得る。バイパスCABACコーディングエンジンは、コンテキストを選択せず、両方のシンボル(0および1)について1/2の確率を仮定し得るので、バイパスCABACコーディングエンジンは、より簡単であり得る。したがって、バイパスCABACコーディングでは、間隔は、半分に直接分割されるものとして概念化され得る。
[0053]ビデオエンコーダ20は、エントロピー符号化シンタックス要素を含むビットストリームを出力し得る。ビットストリームは、コード化ピクチャおよび関連するデータの表現を形成するビットのシーケンスを含み得る。ビットストリームは、ネットワークアブストラクションレイヤ(NAL)ユニットのシーケンスを備え得る。NALユニットの各々は、NALユニットヘッダを含み、ローバイトシーケンスペイロード(RBSP)をカプセル化する。NALユニットヘッダは、NALユニットタイプコードを示すシンタックス要素を含み得る。NALユニットのNALユニットヘッダによって指定されるNALユニットタイプコードは、NALユニットのタイプを示す。RBSPは、NALユニット内にカプセル化された整数個のバイトを含んでいるシンタックス構造であり得る。いくつかの事例では、RBSPは0ビットを含む。
[0054]異なるタイプのNALユニットは、異なるタイプのRBSPをカプセル化し得る。たとえば、第1のタイプのNALユニットは、ピクチャパラメータセット(PPS)のためのRBSPをカプセル化し得、第2のタイプのNALユニットは、コード化スライスのためのRBSPをカプセル化し得、第3のタイプのNALユニットは、補足エンハンスメント情報(SEI:Supplemental Enhancement Information)のためのRBSPをカプセル化し得、以下同様である。(パラメータセットおよびSEIメッセージのためのRBSPとは対照的に)ビデオコーディングデータのためのRBSPをカプセル化するNALユニットは、ビデオコーディングレイヤ(VCL)NALユニットと呼ばれることがある。
[0055]図1の例では、ビデオデコーダ30は、ビデオエンコーダ20によって生成されたビットストリームを受信する。加えて、ビデオデコーダ30は、ビットストリームからシンタックス要素を取得するために、ビットストリームをパースし得る。ビデオデコーダ30は、ビットストリームから取得されたシンタックス要素に少なくとも部分的に基づいて、ビデオデータのピクチャを再構築し得る。ビデオデータを再構築するためのプロセスは、概して、ビデオエンコーダ20によって実行されるプロセスの逆であり得る。たとえば、ビデオデコーダ30は、現在CUのPUの予測ブロックを決定するために、イントラ予測またはインター予測を使用し得る。加えて、ビデオデコーダ30は、現在CUのTUのための係数ブロックを逆量子化し得る。ビデオデコーダ30は、現在CUのTUのための変換ブロックを再構築するために、係数ブロックに対して逆変換を実施し得る。ビデオデコーダ30は、現在CUのPUのための予測ブロックのサンプルを、現在CUのTUのための変換ブロックの対応するサンプルに加算することによって、現在CUのコーディングブロックを再構築し得る。ピクチャの各CUのためのコーディングブロックを再構築することによって、ビデオデコーダ30は、ピクチャを再構築し得る。
[0056]いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、パレットベースコーディングを実施するように構成され得る。たとえば、パレットベースコーディングでは、上記で説明されたイントラ予測コーディング技法またはインター予測コーディング技法を実施するのではなく、ビデオエンコーダ20およびビデオデコーダ30は、特定のエリア(たとえば、所与のブロック)のビデオデータを表すための色のテーブルとして、いわゆるパレットをコーディングし得る。各ピクセルは、ピクセルの色を表すパレット中のエントリに関連付けられ得る。たとえば、ビデオエンコーダ20およびビデオデコーダ30は、ピクセル値をパレット中の適切な値に関係付けるインデックスをコーディングし得る。
[0057]上記の例では、ビデオエンコーダ20は、ブロックのためのパレットを決定することと、各ピクセルの値を表すためのパレット中のエントリを位置特定することと、ピクセル値をパレットに関係付けるピクセルについてのインデックス値を用いてパレットを符号化することとによって、ビデオデータのブロックを符号化し得る。ビデオデコーダ30は、符号化ビットストリームから、ブロックのためのパレット、ならびにブロックのピクセルのためのインデックス値を取得し得る。ビデオデコーダ30は、ブロックのピクセル値を再構築するために、ピクセルのインデックス値をパレットのエントリに関係付け得る。
[0058]いくつかの例では、ビデオエンコーダ20は、同じピクセル値を有する所与の走査順序における連続するピクセルの数を示す1つまたは複数のシンタックス要素を符号化し得る。同様の値のピクセル値の列は、本明細書では「ラン」と呼ばれることがある。例示を目的とする例では、所与の走査順序の2つの連続するピクセルが異なる値を有する場合、ランは0に等しい。所与の走査順序の2つの連続するピクセルが同じ値を有するが、その走査順序の3番目のピクセルが異なる値を有する場合、ランは1に等しい。ビデオデコーダ30は、符号化ビットストリームからランを示すシンタックス要素を取得し、同じインデックス値を有する連続するピクセルロケーションの数を決定するためにそのデータを使用し得る。
[0059]いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、マップの1つまたは複数のエントリのためのラインコピーを実施し得る。たとえば、ビデオエンコーダ20は、マップ中の特定のエントリのためのピクセル値が、特定のエントリの上のライン中のエントリに等しいことを示し得る。ビデオエンコーダ20はまた、特定のエントリのの上のライン中のエントリに等しい走査順序でのインデックスの数を、ランとして示し得る。この例では、ビデオエンコーダ20およびまたはビデオデコーダ30は、指定された隣接ラインから、および、現在コーディングされているマップのラインのための指定された数のエントリから、インデックス値をコピーし得る。
[0060]以下でより詳細に説明されるように、パレットモードでは、パレットは、ブロックサンプルのための予測子としてまたは最終的な再構築ブロックサンプルとして使用され得る色成分値を表すインデックスによって番号を付けられたエントリを含む。パレット中の各エントリは、1つの色成分(たとえば、ルーマ値)、または2つの成分(たとえば、2つのクロマ値)、または3つの色成分(たとえば、RGB、YUVなど)を含んでいることがある。
[0061]上記で導入されたように、HEVCの拡張および他のコーディング規格は、イントラ予測およびインター予測以外のコーディングモードを実装し得る。1つのそのようなコーディングモードは、パレットモードであり、パレットモードでは、ビデオエンコーダ20およびビデオデコーダ30は、両方で、ピクセルのブロックのためのパレットを導出し、ここで、パレットテーブル中の各エントリは、パレットテーブルへのインデックスによって特定される色値を含む。次いで、ビデオエンコーダ20は、パレットモードのサンプルについて、パレットのどのエントリがブロックの様々なサンプルのための色値に対応するかを示す、符号化ブロックインデックス値を符号化し得る。ビデオデコーダ30は、インデックス値を受信し、インデックス値に基づいて、ブロックを再構築する。
[0062]図2は、本開示の技法に一致する、ビデオデータをコーディングするためのパレットを決定する例を示す概念図である。図2の例は、第1のパレットのセット(すなわち、第1のパレット184)に関連付けられる第1のコーディングユニット(CU)180と、第2のパレットのセット(すなわち、第2のパレット192)に関連付けられる第2のCU188とを有する、ピクチャ178を含む。以下でより詳細に説明されるように、および本開示の技法のうちの1つまたは複数によれば、第2のパレット192は第1のパレット184に基づく。ピクチャ178はまた、イントラ予測コーディングモードによりコーディングされるブロック196と、インター予測コーディングモードによりコーディングされるブロック200とを含む。
[0063]図2の技法は、ビデオエンコーダ20(図1および図6)とビデオデコーダ30(図1および図7)のコンテキストにおいて、説明を目的としてHEVCビデオコーディング規格に関して説明される。HEVCフレームワークに関して、一例として、パレットベースコーディング技法は、CUモードとして使用されるように構成され得る。他の例では、パレットベースコーディング技法は、HEVCのフレームワークにおいてPUモードまたはTUモードとして使用されるように構成され得る。したがって、CUモードのコンテキストにおいて説明される以下の開示されるプロセスのすべてが、追加または代替として、PUまたはTUに適用され得る。しかしながら、本開示の技法はこのように限定されず、他のビデオコーディングプロセスおよび/または規格において他のビデオコーディングプロセッサおよび/またはデバイスによって適用され得ることを理解されたい。
[0064]概して、パレットは、現在コーディングされているCU(たとえば、図2の例ではCU188)について支配的である、および/またはそのCUを代表する、いくつかのピクセル値を指す。第1のパレット184および第2のパレット192は、複数のパレットを含むものとして示されている。いくつかの例では、本開示の態様によれば、(ビデオエンコーダ20またはビデオデコーダ30などの)ビデオコーダは、CUの各色成分について別々にパレットをコーディングし得る。たとえば、ビデオエンコーダ20は、CUのルーマ(Y)成分のためのパレットと、CUのクロマ(U)成分のための別のパレットと、CUのクロマ(V)成分のためのまた別のパレットとを符号化し得る。この例では、YパレットのエントリはCUのピクセルのY値を表し得、UパレットのエントリはCUのピクセルのU値を表し得、VパレットのエントリはCUのピクセルのV値を表し得る。
[0065]他の例では、ビデオエンコーダ20は、CUのすべての色成分のための単一のパレットを符号化し得る。この例では、ビデオエンコーダ20は、Yiと、Uiと、Viとを含む、三重の値であるi番目のエントリを有するパレットを符号化し得る。この場合、パレット中の各エントリは、ピクセルの成分の各々のための値を含む。したがって、複数の個々のパレットを有するパレットのセットとしてのパレット184および192の表現は、一例にすぎず、限定することは意図されない。それとは反対に述べられる場合を除いて、図2に関して以下で説明される技法は、単一の値を使用するパレットに適用可能であるように、三重の値を使用するパレットに等しく適用可能である。
[0066]図2の例では、第1のパレット184の各々は、それぞれ、エントリインデックス値1、エントリインデックス値2、およびエントリインデックス値3を有する、3つのエントリ202〜206を含む。エントリ202〜206は、それぞれ、ピクセル値A、ピクセル値B、およびピクセル値Cを含むピクセル値に、インデックス値を関係付ける。第1のパレット184の各々は、実際にはインデックスと列ヘッダとを含まず、ピクセル値A、B、およびCのみを含み、インデックスは、パレット中のエントリを特定するために使用されることに留意されたい。
[0067]本明細書で説明されるように、第1のCU180の実際のピクセル値をコーディングするのではなく、(ビデオエンコーダ20またはビデオデコーダ30などの)ビデオコーダは、インデックス1〜3を使用してブロックのピクセルをコーディングするために、パレットベースコーディングを使用し得る。すなわち、第1のCU180の各ピクセル位置について、ビデオエンコーダ20は、ピクセルのためのインデックス値を符号化し得、そこで、インデックス値は、第1のパレット184のうちの1つまたは複数の中のピクセル値に関連付けられる。ビデオデコーダ30は、ビットストリームからインデックス値を取得し得、インデックス値と第1のパレット184のうちの1つまたは複数とを使用して、ピクセル値を再構築し得る。言い換えれば、ブロックのための各それぞれのインデックス値について、ビデオデコーダ30は、第1のパレット184のうちの1つの中のエントリを決定し得る。ビデオデコーダ30は、ブロック中のそれぞれのインデックス値を、パレット中の決定されたエントリによって指定されるピクセル値で置き換え得る。ビデオエンコーダ20は、パレットベースの復号におけるビデオデコーダ30による使用のために、符号化ビデオデータビットストリーム中で第1のパレット184を送信し得る。一般に、1つまたは複数のパレットが、各CUのために送信され得るか、または異なるCUの間で共有され得る。
[0068]ビデオエンコーダ20およびビデオデコーダ30は、第1のパレット184に基づいて、第2のパレット192を決定し得る。たとえば、ビデオエンコーダ20は、(空間的に、または走査順序に基づいて)隣接CU、または原因となるネイバーの最頻のサンプルなど、1つまたは複数の他のCUに関連付けられた1つまたは複数のパレットから、CUのためのパレットが予測されるか否かを示すために、各CU(一例として、第2のCU188を含む)のためのpred_palette_flagを符号化し得る。たとえば、そのようなフラグの値が1に等しいとき、ビデオデコーダ30は、第2のCU188のための第2のパレット192が1つまたは複数のすでに復号されているパレットから予測され、したがって、第2のCU188のための新しいパレットがpred_palette_flagを含んでいるビットストリーム中に含まれないと決定し得る。そのようなフラグが0に等しいとき、ビデオデコーダ30は、第2のCU188のためのパレット192が新しいパレットとしてビットストリーム中に含まれると決定し得る。いくつかの例では、pred_palette_flagは、CUの各異なる色成分について別々にコーディングされ得る(たとえば、YUVビデオにおけるCUでは、Yのために1つ、Uのために1つ、およびVのために1つの、3つのフラグ)。他の例では、単一のpred_palette_flagが、CUのすべての色成分についてコーディングされ得る。
[0069]上記の例では、pred_palette_flagは、現在CUのためのパレットが前のCUのためのパレットと同じであるか否かを示すために、CUごとにシグナリングされる。pred_palette_flagの値が真である場合、第2のパレット192は、第1のパレット184に等しく、追加の情報がシグナリングされない。他の例では、1つまたは複数のシンタックス要素は、エントリごとにシグナリングされ得る。すなわち、そのエントリが現在のパレット中に存在するか否かを示すために、フラグがパレット予測子の各エントリについてシグナリングされ得る。上述のように、パレットエントリが予測されない場合、パレットエントリが明示的にシグナリングされ得る。他の例では、これらの2つの方法が組み合わされ得る。たとえば、最初に、pred_palette_flagがシグナリングされる。フラグが0である場合、エントリごとの予測フラグがシグナリングされ得る。加えて、新しいエントリの数およびそれらの明示的な値が、シグナリングされ得る。以下でより詳細に説明されるように、本開示の技法によれば、新しいエントリの値は、新しいエントリの実効値と予測子サンプルの値との間の差分情報としてシグナリングされ得る。
[0070]第1のパレット184に対して第2のパレット192を決定する(たとえば、pred_palette_flagが1に等しい)とき、ビデオエンコーダ20および/またはビデオデコーダ30は、そこから予測パレット、この例では第1のパレット184が決定される、1つまたは複数のブロックを位置特定し得る。予測パレットは、現在コーディングされているCUの1つまたは複数の隣接CU(たとえば、(空間的に、または走査順序に基づいて)隣接CU、または原因となるネイバーの最頻のサンプルなど)、すなわち第2のCU188に関連付けられ得る。1つまたは複数の隣接CUのパレットは、予測パレットに関連付けられ得る。図2に示されている例など、いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、第2のCU188のための予測パレットを決定するとき、左の隣接CUである第1のCU180を位置特定し得る。他の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、上のCUであるCU196など、第2のCU188に対して他の位置にある1つまたは複数のCUを位置特定し得る。別の例では、パレットモードを使用した走査順序中の最後のCUのためのパレットが、予測パレットとして使用され得る。
[0071]ビデオエンコーダ20および/またはビデオデコーダ30は、階層に基づいて、パレット予測のためのCUを決定し得る。たとえば、ビデオエンコーダ20および/またはビデオデコーダ30は、最初に、パレット予測のために、左の隣接CUである第1のCU180を特定し得る。左の隣接CUが予測のために利用可能ではない(たとえば、左の隣接CUが、イントラ予測モアもしくはイントラ予測モードなど、パレットベースコーディングモード以外のモードでコーディングされる、またはピクチャもしくはスライスの左端に位置する)場合、ビデオエンコーダ20および/またはビデオデコーダ30は、上の隣接CUであるCU196を特定し得る。ビデオエンコーダ20および/またはビデオデコーダ30は、パレット予測のために利用可能なパレットを有するCUを位置特定するまで、所定のロケーションの順序に従って利用可能なCUを探し続け得る。いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、複数のブロック、および/または隣接ブロックの再構築されたサンプルに基づいて、予測パレットを決定し得る。
[0072]図2の例は、単一のCU(すなわち、第1のCU180)からの予測パレットとして第1のパレット184を示すが、他の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、隣接CUの組合せから予測のためのパレットを位置特定し得る。たとえば、ビデオエンコーダ20および/またはビデオデコーダは、複数の(空間的な、または走査順序における)隣接CUの1つまたは組合せのパレットに基づいて予測パレットを生成するために、1つまたは複数の式、関数、ルールなどを適用し得る。
[0073]さらに他の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、パレット予測のためのいくつかの潜在的な候補を含む候補リストを構築し得る。そのような例では、ビデオエンコーダ20は、そこからパレット予測のために使用される現在CUが選択される(たとえば、パレットをコピーする)リスト中の候補CUを示すために、候補リストへのインデックスを符号化し得る。ビデオデコーダ30は、同じ方式で候補リストを構築し、インデックスを復号し、現在CUとともに使用するための対応するCUのパレットを選択するために、復号されたインデックスを使用し得る。別の例では、リスト中の示された候補CUのパレットは、現在CUのための現在のパレットのエントリごとの予測のための予測パレットとして使用され得る。
[0074]例示を目的とする例では、ビデオエンコーダ20およびビデオデコーダ30は、現在コーディングされているCUの上に配置されている1つのCUと、現在コーディングされているCUの左に配置されている1つのCUとを含む、候補リストを構築し得る。この例では、ビデオエンコーダ20は、候補選択を示すために、1つまたは複数のシンタックス要素を符号化し得る。たとえば、ビデオエンコーダ20は、現在CUのためのパレットが現在CUの左に配置されているCUからコピーされることを示すために、0の値を有するフラグを符号化し得る。ビデオエンコーダ20は、現在CUのためのパレットが現在CUの上に配置されているCUからコピーされることを示すために、1の値を有するフラグを符号化し得る。ビデオデコーダ30は、フラグを復号し、パレット予測のために適切なCUを選択する。別の例では、フラグは、上または左の隣接CUのパレットが予測パレットとして使用されるか否かを示し得る。次いで、予測パレット中の各エントリについて、そのエントリが現在CUのためのパレットにおいて使用されるか否かが示され得る。
[0075]さらに他の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、1つまたは複数の他のパレット中に含まれるサンプル値が1つまたは複数の隣接CUの中で現れる頻度に基づいて、現在コーディングされているCUのためのパレットを決定する。たとえば、ビデオエンコーダ20および/またはビデオデコーダ30は、所定の数のCUのコーディングの間に最も頻繁に使用されるインデックス値に関連付けられた色を追跡し得る。ビデオエンコーダ20および/またはビデオデコーダ30は、現在コーディングされているCUのためのパレットに、最も頻繁に使用される色を含め得る。
[0076]上述のように、いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダは、現在CUをコーディングするために、隣接CUからパレット全体をコピーし得る。追加または代替として、ビデオエンコーダ20および/またはビデオデコーダ30は、エントリごとの(entry−wise based)パレット予測を実施し得る。たとえば、ビデオエンコーダ20は、予測パレット(たとえば、別のCUのパレット)に基づいて、それぞれのエントリが予測されるか否かを示す、パレットの各エントリのための1つまたは複数のシンタックス要素を符号化し得る。この例では、ビデオエンコーダ20は、エントリが予測パレットからの予測された値(たとえば、隣接CUに関連付けられたパレットの対応するエントリ)であるとき、所与のエントリのための1の値を有するフラグを符号化し得る。ビデオエンコーダ20は、特定のエントリが別のCUのパレットから予測されないことを示すために、その特定のエントリのための0の値を有するフラグを符号化し得る。この例では、ビデオエンコーダ20はまた、予測されないパレットエントリの値を示す追加のデータを符号化し得る。
[0077]本開示は、現在CUのためのパレットを予測するためのいくつかの代替的な技法について説明する。一例では、1つまたは複数の前にコーディングされた隣接CUからのパレットエントリを含む予測パレットは、ある数の、すなわちN個のエントリを含む。この場合、ビデオエンコーダ20は、最初に、ビデオデコーダ30に、予測パレットと同じサイズ、すなわち、サイズNを有するバイナリベクトルVを送信する。バイナリベクトル中の各エントリは、予測パレット中の対応するエントリが現在CUのためのパレットに対して再使用またはコピーされるか否かを示す。たとえば、V(i)=1は、隣接CUのための予測パレット中のi番目のエントリが、現在CUにおいて異なるインデックスを有し得る現在CUのためのパレットに対して再使用またはコピーされることを意味する。
[0078]加えて、ビデオエンコーダ20は、いくつの新しいパレットエントリが現在CUのためのパレット中に含まれるかを示す数Mを送信し得、次いで、新しいパレットエントリの各々のためのピクセル値をビデオデコーダ30に送信する。この例では、現在CUのためのパレットの最終的なサイズは、M+Sに等しいものとして導出され得、ただし、Sは、現在CUのためのパレットに対して再使用またはコピーされ得る(すなわち、V(i)=1)予測パレット中のエントリの数である。現在CUのためのパレットを生成するために、ビデオデコーダ30は、送信された新しいパレットエントリと、予測パレットから再使用されるコピーされたパレットエントリとをマージし得る。場合によっては、このマージはピクセル値に基づき得るので、現在CUのためのパレット中のエントリは、パレットインデックスとともに増大(または減少)し得る。他の場合には、このマージは、エントリの2つのセット、すなわち、新しいパレットエントリおよびコピーされたパレットエントリの連結であり得る。
[0079]別の例では、ビデオエンコーダ20は、最初に、現在CUのためのパレットのサイズNの指示をビデオデコーダ30に送信する。次いで、ビデオエンコーダ20は、現在CUのためのパレットと同じサイズ、すなわちサイズNを有するベクトルVを、ビデオデコーダ30に送信する。ベクトル中の各エントリは、現在CUのためのパレット中の対応するエントリがビデオエンコーダ20によって明示的に送信されるか、または予測パレットからコピーされるかを示す。たとえば、V(i)=1は、ビデオエンコーダ20がパレット中のi番目のエントリをビデオデコーダ30に送信することを意味し、V(i)=0は、パレット中のi番目のエントリが予測パレットからコピーされることを意味する。予測パレットからコピーされる(すなわち、V(i)=0)エントリでは、ビデオエンコーダ20は、予測パレット中のどのエントリが現在CUのためのパレットにおいて使用されるかをシグナリングするために、異なる方法を使用し得る。場合によっては、ビデオエンコーダ20は、現在CUのためのパレットに予測パレットからコピーされるべきエントリのパレットインデックスをシグナリングし得る。他の場合には、ビデオエンコーダ20は、インデックスオフセットをシグナリングすることができ、インデックスオフセットは、現在CUのためのパレット中のインデックスと予測パレット中のインデックスとの間の差分である。
[0080]2つの上記の例では、現在CUのためのパレットの予測のために使用される予測パレットを生成するために使用される1つまたは複数の前にコーディングされた隣接CUは、現在CUに対して最上の隣接(すなわち、上の)CUまたは左の隣接CUであり得る。いくつかの例では、隣接CUの候補リストが構築され得、ビデオエンコーダ20は、どの候補隣接CUおよび関連付けられたパレットが現在CUのためのパレット予測のために使用されるかを示すために、インデックスを送信する。いくつかのCU、たとえば、スライスの始めもしくは他のスライス境界に配置されるCU、またはビデオデータのスライスもしくはピクチャ中の最も左のCUでは、パレット予測が無効にされ得る。
[0081]追加の例では、ビデオエンコーダ20は、現在CUのためのパレット中に含まれるエントリの数の指示をビデオデコーダ30に送信する。次いで、パレットエントリの各々について、ビデオエンコーダ20は、パレットエントリがビデオエンコーダ20によって明示的に送信されるか否か、またはパレットエントリが前に再構築されたピクセルから導出されるか否かを示すために、フラグまたは他のシンタックス要素を送信する。たとえば、1に等しく設定された1ビットのフラグは、ビデオエンコーダ20がパレットエントリを明示的に送ることを意味し得、0に等しく設定された1ビットのフラグは、パレットエントリが前に再構築されたピクセルから導出されることを意味し得る。前に再構築されたピクセルから導出されるパレットエントリの各々について、ビデオエンコーダ20は、パレットエントリに対応する現在CUまたは隣接CU中の再構築されたピクセルのピクセルロケーションに関する別の指示を送信する。場合によっては、再構築されたピクセルロケーション指示は、現在CUの左上の位置に対する変位ベクトルであり得る。他の場合には、再構築されたピクセルロケーション指示は、現在CUのためのパレットエントリを指定するために使用され得る再構築されたピクセルのリストへのインデックスであり得る。たとえば、このリストは、HEVCにおいて通常のイントラ予測のために使用され得るすべての参照ピクセルを含み得る。
[0082]図2の例では、第2のパレット192は、エントリインデックス値1、エントリインデックス値2、エントリインデックス値3、およびエントリインデックス4をそれぞれ有する、4つのエントリ208〜214を含む。エントリ208〜214は、ピクセル値A、ピクセル値B、ピクチャ値C、およびピクセル値Dをそれぞれ含むピクセル値に、インデックス値を関係付ける。本開示の1つまたは複数の態様によれば、ビデオエンコーダ20および/またはビデオデコーダ30は、パレット予測の目的で第1のCU180を位置特定し、第1のパレット184のエントリ1〜3を、第2のCU188をコーディングするための第2のパレット192のエントリ1〜3にコピーするために、上記で説明された技法のいずれかを使用し得る。このようにして、ビデオエンコーダ20および/またはビデオデコーダ30は、第1のパレット184に基づいて、第2のパレット192を決定し得る。加えて、ビデオエンコーダ20および/またはビデオデコーダ30は、第2のパレット192とともに含まれるべきエントリ4のためのデータをコーディングし得る。そのような情報は、予測パレットから予測されないパレットエントリの数と、それらのパレットエントリに対応するピクセル値とを含み得る。
[0083]いくつかの例では、本開示の態様によれば、1つまたは複数のシンタックス要素は、第2のパレット192などのパレットが予測パレット(図2では第1のパレット184として示されるが、1つまたは複数のブロックからのエントリから構成され得る)から完全に予測されるか否か、または第2のパレット192の特定のエントリが予測されるか否かを示し得る。たとえば、初期シンタックス要素は、エントリのすべてが予測されるか否かを示し得る。エントリのすべてが予測されるとは限らないことを初期シンタックス要素が示す(たとえば、0の値を有するフラグ)場合、1つまたは複数の追加のシンタックス要素が、第2のパレット192のどのエントリが予測パレットから予測されるかを示し得る。
[0084]本開示のいくつかの態様によれば、パレット予測に関連付けられたいくつかの情報は、コーディングされているデータの1つまたは複数の特性から推論され得る。すなわち、ビデオエンコーダ20がシンタックス要素を符号化する(および、ビデオデコーダ30がそのようなシンタックス要素を復号する)のではなく、ビデオエンコーダ20およびビデオデコーダ30は、コーディングされているデータの1つまたは複数の特性に基づいて、パレット予測を実施し得る。
[0085]一例では、例示の目的で、上記で説明されたpred_palette_flagの値は、例として、コーディングされているCUのサイズ、フレームタイプ、色空間、色成分、フレームサイズ、フレームレート、スケーラブルビデオコーディングにおけるレイヤid、またはマルチビューコーディングにおけるビューidのうちの1つまたは複数から推論され得る。すなわち、一例として、CUのサイズに関して、ビデオエンコーダ20および/またはビデオデコーダ30は、上記で説明されたpred_palette_flagが、所定のサイズを超えるかまたはそれ未満である任意のCUについて1に等しいと決定し得る。この例では、pred_palette_flagは、符号化ビットストリーム中でシグナリングされる必要はない。
[0086]pred_palette_flagに関して上記で説明されたが、ビデオエンコーダ20および/またはビデオデコーダ30は、同じくまたは代替的に、コーディングされているデータの1つまたは複数の特性に基づいて、そこからパレットが予測のために使用される候補CU、またはパレット予測候補を構築するためのルールなど、パレット予測に関連付けられた他の情報を推論し得る。
[0087]本開示の他の態様によれば、ビデオエンコーダ20および/またはビデオデコーダ30は、オンザフライでパレットを構築し得る。たとえば、第2のCU188を最初にコーディングするとき、パレット192の中にエントリはない。ビデオエンコーダ20およびビデオデコーダ30が第2のCU188のピクセルのための新しい値をコーディングするにつれて、各新しい値がパレット192の中に含められる。すなわち、たとえば、ビデオエンコーダ20は、ピクセル値がCU188の中の位置のために生成されシグナリングされるにつれて、ピクセル値をパレット192に追加する。ビデオエンコーダ20はCUにおいて相対的により後でピクセルを符号化するので、ビデオエンコーダ20は、ピクセル値をシグナリングするのではなくインデックス値を使用して、パレットにすでに含まれているものと同じ値を有するピクセルを符号化することができる。同様に、ビデオデコーダ30が第2のCU188の中の位置のための新しいピクセル値(たとえば、ビデオエンコーダ20によってシグナリングされる)を受信するとき、ビデオデコーダ30は、ピクセル値をパレット192に含める。第2のCU188において相対的により後で復号されるピクセル位置が、第2のパレット192に追加されているピクセル値を有するとき、ビデオデコーダ30は、第2のCU188のピクセル値の再構築のために、第2のパレット192中の対応するピクセル値を特定する情報、たとえばインデックス値などを受信し得る。
[0088]いくつかの例では、以下でより詳細に説明されるように、ビデオエンコーダ20および/またはビデオデコーダ30は、パレット184と192とを最大パレットサイズ以下に維持し得る。本開示の態様によれば、最大パレットサイズに達する場合、たとえば、第2のパレット192がオンザフライで動的に構築されるにつれて、ビデオエンコーダ20および/またはビデオデコーダ30は、第2のパレット192のエントリを除去するために同じプロセスを実施する。パレットエントリを除去するための1つの例示的なプロセスは、ビデオエンコーダ20およびビデオデコーダ30がパレットの最も古いエントリを除去する先入れ先出し(FIFO)技法である。別の例では、ビデオエンコーダ20およびビデオデコーダ30は、パレットから最も使用頻度の低いパレットエントリを除去し得る。さらに別の例では、ビデオエンコーダ20およびビデオデコーダ30は、どのエントリを除去するかを決定するために、FIFOプロセスと使用頻度プロセスの両方を重視し得る。すなわち、エントリの除去は、エントリがどれだけ古いか、およびエントリがどれだけ頻繁に使用されるかに基づき得る。
[0089]いくつかの態様によれば、エントリ(ピクセル値)がパレットから除去され、ピクセル値がコーディングされているCU中のより後の位置において再び現れる場合、ビデオエンコーダ20は、パレットにエントリを含めてインデックスを符号化する代わりに、ピクセル値を符号化し得る。追加または代替として、ビデオエンコーダ20は、たとえば、ビデオエンコーダ20およびビデオデコーダ30がCUの中の位置を走査するとき、パレットエントリを、除去された後でパレットに再び入れ得る。
[0090]いくつかの例では、オンザフライでパレットを導出するための技法は、パレットを決定するための1つまたは複数の他の技法と組み合わされ得る。具体的には、一例として、ビデオエンコーダ20およびビデオデコーダ30は、(たとえば、第1のパレット184から第2のパレット192を予測するためにパレット予測を使用して)第2のパレット192を最初にコーディングし得、第2のCU188のピクセルをコーディングするときに第2のパレット192を更新し得る。たとえば、初期パレットを送信すると、ビデオエンコーダ20は、CUの中の追加のロケーションのピクセル値が走査されるにつれて、値を初期パレットに追加し、または初期パレット中の値を変更し得る。同様に、初期パレットを受信すると、ビデオデコーダ30は、CUの中の追加のロケーションのピクセル値が走査されるにつれて、値を初期パレットに追加し(すなわち、含め)、または初期パレット中の値を変更し得る。
[0091]ビデオエンコーダ20は、いくつかの例では、現在CUがパレット全体の送信を使用するか、またはオンザフライのパレット生成を使用するか、または、初期パレットの送信とオンザフライの導出による初期パレットの更新との組合せを使用するかをシグナリングし得る。いくつかの例では、初期パレットは、最大パレットサイズにある満杯のパレットであり得、その場合、初期パレット中の値は変更され得る。他の例では、初期パレットは、最大パレットサイズよりも小さくなり得、その場合、ビデオエンコーダ20およびビデオデコーダ30は、初期パレットの値に値を追加し、および/または初期パレットの値を変更し得る。
[0092]本開示の1つまたは複数の態様によれば、たとえば、パレット中に含まれるピクセル値の数による、第1のパレット184および第2のパレット192などのパレットのサイズは、固定され得るか、または、符号化ビットストリーム中の1つまたは複数のシンタックス要素を使用してシグナリングされ得る。たとえば、いくつかの態様によれば、ビデオエンコーダ20およびビデオデコーダ30は、パレットサイズをコーディングするために、単項コードまたは切捨て単項コード(たとえば、最大限のパレットサイズにおいて切り捨てるコード)を使用し得る。他の態様によれば、ビデオエンコーダ20およびビデオデコーダ30は、パレットサイズをコーディングするために、指数ゴロムコードまたはライス−ゴロムコードを使用し得る。
[0093]さらに他の態様によれば、ビデオエンコーダ20およびビデオデコーダ30は、パレットの各エントリの後でパレットのサイズを示すデータをコーディングし得る。一例として、第2のパレット192に関して、ビデオエンコーダ20は、エントリ208〜214の各々の後で停止フラグを符号化し得る。この例では、1に等しい停止フラグは、現在コーディングされているエントリが第2のパレット192の最後のエントリであることを指定し得るが、0に等しい停止フラグは、第2のパレット192中に追加のエントリがあることを示し得る。したがって、ビデオエンコーダ20は、エントリ208〜212の各々の後で0の値を有する停止フラグを符号化し、エントリ214の後で1の値を有する停止フラグを符号化し得る。いくつかの事例では、停止フラグは、構築されたパレットが最大パレットサイズの限度に達すると、ビットストリーム中に含まれなくてよい。上記の例は、パレットのサイズを明示的にシグナリングするための技法を開示するが、他の例では、パレットのサイズはまた、いわゆるサイド情報(たとえば、上述のように、コーディングされているCUのサイズ、フレームタイプ、色空間、色成分、フレームサイズ、フレームレート、スケーラブルビデオコーディングにおけるレイヤid、またはマルチビューコーディングにおけるビューidのような特性情報)に基づいて、条件的に送信または推論され得る。
[0094]本開示の技法は、可逆的に、または代替的にはいくらかの損失を伴って(不可逆コーディング)、データをコーディングすることを含む。たとえば、不可逆コーディングに関して、ビデオエンコーダ20は、パレットのピクセル値を厳密にCU中の実際のピクセル値と厳密に照合することなく、CUのピクセルをコーディングし得る。本開示の技法が不可逆コーディングに適用されるとき、いくつかの制限がパレットに適用され得る。たとえば、ビデオエンコーダ20およびビデオデコーダ30は、第1のパレット184および第2のパレット192のようなパレットを量子化することができる。すなわち、ビデオエンコーダ20およびビデオデコーダ30は、エントリのピクセル値が互いに所定の範囲内にあるとき、パレットのエントリをマージまたは組み合わせる(すなわち、量子化する)ことができる。言い換えれば、新しいパレット値の誤差の限度内にあるパレット値がすでにある場合、新しいパレット値はパレットに追加されない。別の例では、ブロック中の複数の異なるピクセル値が、単一のパレットエントリに、または等価的に、単一のパレットピクセル値にマッピングされ得る。
[0095]ビデオデコーダ30は、特定のパレットが可逆的であるか不可逆的であるかにかかわらず、同じ方式でピクセル値を復号し得る。一例として、ビデオデコーダ30は、コード化ブロック中の所与のピクセル位置のためにビデオエンコーダ20によって送信されるインデックス値を使用して、パレットが可逆的であるか不可逆的であるかに関係なく、そのピクセル位置のためのパレット中のエントリを選択し得る。この例では、パレットエントリのピクセル値は、それが元のピクセル値と厳密に一致するか否かにかかわらず、コード化ブロック中のピクセル値として使用される。
[0096]例示の目的で、不可逆コーディングの例では、ビデオエンコーダ20は、デルタ値と呼ばれる誤差の限界を決定し得る。候補ピクセル値エントリPlt_candは、CUまたはPUなどのコーディングされるべきブロック中のある位置におけるピクセル値に対応し得る。パレットの構築の間、ビデオエンコーダ20は、候補ピクセル値エントリPlt_candとパレット中の既存のピクセル値エントリのすべてとの間の絶対差分を決定する。候補ピクセル値エントリPlt_candとパレット中の既存のピクセル値エントリとの間の絶対差分のすべてが、デルタ値よりも大きい場合、ビデオエンコーダ20は、ピクセル値候補をエントリとしてパレットに追加し得る。ピクセル値エントリPlt_candとパレット中の少なくとも1つの既存のピクセル値エントリとの間の絶対差分が、デルタ値以下である場合、ビデオエンコーダ20は、候補ピクセル値エントリPlt_candをパレットに追加しなくてよい。したがって、ピクセル値エントリPlt_candをコーディングするとき、ビデオエンコーダ20は、ピクセル値エントリPlt_candに最も近いピクセル値を伴うエントリを選択し、それによっていくらかの損失をシステムにもたらし得る。パレットが複数の成分(たとえば、3つの色成分)から構成されるとき、個々の成分値の絶対差分の合計が、デルタ値に対する比較のために使用され得る。代替または追加として、各成分値のための絶対差分は、第2のデルタ値に対して比較され得る。
[0097]いくつかの例では、上述されたパレット中の既存のピクセル値エントリが、同様のデルタ比較プロセスを使用して追加されていることがある。他の例では、パレット中の既存のピクセル値が、他のプロセスを使用して追加されていることがある。たとえば、1つまたは複数の初期ピクセル値エントリが、パレットを構築するデルタ比較プロセスを開始するために(デルタ比較を伴わずに)パレットに追加され得る。上記で説明されたプロセスは、ルーマパレットおよび/またはクロマパレットを生成するために、ビデオエンコーダ20および/またはビデオデコーダ30によって実施され得る。
[0098]パレット構築に関して上記で説明された技法も、ピクセルコーディングの間にビデオエンコーダ20およびビデオデコーダ30によって使用され得る。たとえば、ピクセル値を符号化するとき、ビデオエンコーダ20は、ピクセルの値をパレット中のエントリのピクセル値と比較し得る。ピクセルの値とパレット中のエントリのうちの1つとの間の絶対ピクセル値差分が、デルタ値以下である場合、ビデオエンコーダ20は、パレットのエントリとしてピクセル値を符号化し得る。すなわち、この例では、ビデオエンコーダ20は、ピクセル値がパレットエントリに対して十分に小さい(たとえば、所定の範囲内の)絶対差分を生じるとき、パレットのエントリのうちの1つを使用して、ピクセル値を符号化する。
[0099]いくつかの例では、ビデオエンコーダ20は、ピクセル値を符号化するために、(コーディングされているピクセル値と比較して)最小の絶対ピクセル値差分を生じるパレットエントリを選択し得る。一例として、ビデオエンコーダ20は、ピクセル値のために使用されることになるパレットエントリ、たとえば、ビデオデコーダ30においてコード化ピクセル値を再構築するために使用されることになるパレットピクセル値エントリを示すために、インデックスを符号化し得る。ピクセルの値とパレット中のエントリのすべてとの間の絶対ピクセル値差分が、デルタよりも大きい場合、エンコーダは、ピクセル値を符号化するためにパレットエントリのうちの1つを使用しなくてよく、代わりに、ビデオデコーダ30に(場合によっては、量子化後に)ピクセルのピクセル値を送信(および、場合によっては、ピクセル値をエントリとしてパレットに追加)し得る。
[0100]別の例では、ビデオエンコーダ20は、ピクセル値を符号化するためにパレットのエントリを選択し得る。ビデオエンコーダ20は、予測ピクセル値として、選択されたエントリを使用し得る。すなわち、ビデオエンコーダ20は、実際のピクセル値と選択されたエントリとの間の差分を表す残差値を決定し、残差を符号化し得る。ビデオエンコーダ20は、パレットのエントリによって予測されるブロック中のピクセルのための残差値を生成し得、ピクセルのブロックのためのそれぞれの残差ピクセル値を含む残差ブロックを生成し得る。ビデオエンコーダ20は、その後、(図2に関して上述されたような)変換と量子化とを残差ブロックに適用し得る。このようにして、ビデオエンコーダ20は、量子化された残差変換係数を生成し得る。別の例では、残差は、可逆的に(変換および量子化を伴わずに)、または変換を伴わずにコーディングされ得る。
[0101]ビデオデコーダ30は、残差ブロックを再生するために、変換係数を逆変換し、逆量子化し得る。次いで、ビデオデコーダ30は、予測パレットエントリ値とピクセル値のための残差値とを使用して、ピクセル値を再構築し得る。たとえば、ビデオデコーダ30は、コード化ピクセル値を再構築するために、残差値をパレットエントリ値と組み合わせ得る。
[0102]いくつかの例では、デルタ値は、異なるCUサイズ、ピクチャサイズ、色空間、または異なる色成分に対して異なり得る。デルタ値は、様々なコーディング条件に基づいて事前に決定されてよく、または決定されてよい。たとえば、ビデオエンコーダ20は、PPS、SPS、VPS、および/またはスライスヘッダ中のシンタックスのような高レベルのシンタックスを使用して、デルタ値をビデオデコーダ30にシグナリングすることができる。他の例では、ビデオエンコーダ20およびビデオデコーダ30は、同じ固定されたデルタ値を使用するように事前構成され得る。さらに他の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、サイド情報(たとえば、上述されたような、CUサイズ、色空間、色成分などのような)に基づいて、デルタ値を適応的に導出し得る。
[0103]いくつかの例では、不可逆コーディングパレットモードは、HEVCコーディングモードとして含まれ得る。たとえば、コーディングモードは、イントラ予測モードと、インター予測モードと、可逆コーディングパレットモードと、不可逆コーディングパレットモードとを含み得る。HEVCコーディングでは、図2および図3に関して上述されたように、可能にされたひずみを制御するために、量子化パラメータ(QP)が使用される。パレットベースコーディングのためのデルタの値は、QPの関数として計算され得るか、または別様に決定され得る。
[0104]本開示で説明される不可逆コーディング技法を使用したパレットの生成は、ビデオエンコーダ20、ビデオデコーダ30、または両方によって実施され得る。たとえば、ビデオエンコーダ20は、上記で説明されたデルタ比較技法を使用して、CUのためのパレット中のエントリを生成し、ビデオデコーダ30による使用のためにパレットの構築のための情報をシグナリングし得る。すなわち、ビデオエンコーダ20は、CUのためのパレット中のエントリのためのピクセル値を示す情報をシグナリングし、次いで、そのようなパレットエントリに関連付けられたピクセル値を使用して、ピクセル値を符号化するように構成され得る。ビデオデコーダ30は、そのような情報を使用してパレットを構築し得、次いで、コード化ブロックのピクセル値を復号するために、エントリを使用し得る。いくつかの例では、ビデオエンコーダ20は、コード化ブロックの1つまたは複数のピクセル位置のためのパレットエントリを特定するインデックス値をシグナリングし得、ビデオデコーダ30は、パレットから関連するピクセル値エントリを取り出すために、インデックス値を使用し得る。
[0105]他の例では、ビデオデコーダ30は、上記で説明されたデルタ比較技法を適用することによって、パレットを構築するように構成され得る。たとえば、ビデオデコーダ30は、コード化ブロック内の位置のためのピクセル値を受信し得、ピクセル値とパレット中の既存のピクセル値エントリとの間の絶対差分がデルタ値よりも大きいか否かを決定し得る。そうである場合、ビデオデコーダ30は、たとえば、ビデオエンコーダ20によってシグナリングされた対応するインデックス値を使用したブロックの他のピクセル位置のためのピクセル値のパレットベースの復号において後で使用するために、ピクセル値をエントリとしてパレット中に追加し得る。この場合、ビデオエンコーダ20およびビデオデコーダ30は、パレットを生成するために同じまたは同様のプロセスを適用する。そうでない場合、ビデオデコーダ30は、ピクセル値をパレットに追加しなくてよい。
[0106]例示を目的とする例では、ビデオデコーダ30は、ブロック中の様々なピクセル位置のためのインデックス値またはピクセル値を受信し得る。インデックス値がピクセル位置について受信される場合、たとえば、ビデオデコーダ30は、パレット中のエントリを特定するためにインデックス値を使用し、ピクセル位置のためのパレットエントリのピクセル値を使用し得る。ピクセル値がピクセル位置について受信される場合、ビデオデコーダ30は、ピクセル位置について受信されたピクセル値を使用し得、また、ピクセル値がパレットに追加され次いでパレットコーディングのために後で使用されるべきであるか否かを決定するために、デルタ比較を適用し得る。
[0107]エンコーダ側では、ブロック中の位置のためのピクセル値が、デルタ値以下である、ピクセル値とパレット中の既存のピクセル値エントリとの間の絶対差分を生じる場合、ビデオエンコーダ20は、その位置のためのピクセル値を再構築する際に使用するためのパレット中のエントリを特定するために、インデックス値を送り得る。ブロック中の位置のためのピクセル値が、すべてがデルタ値よりも大きい、ピクセル値とパレット中の既存のピクセル値エントリとの間の絶対差分値を生じる場合、ビデオエンコーダ20は、ピクセル値を送り得、ピクセル値をパレット中の新しいエントリとして追加し得る。パレットを構築するために、ビデオデコーダ30は、たとえば、上記で説明されたように、エンコーダによってシグナリングされたデルタ値を使用し、固定もしくは既知のデルタ値に依拠し、またはデルタ値を推論もしくは導出し得る。
[0108]上述のように、ビデオエンコーダ20および/またはビデオデコーダ30は、ビデオデータをコーディングするとき、イントラ予測モードと、インター予測モードと、可逆コーディングパレットモードと、不可逆コーディングパレットモードとを含む、コーディングモードを使用し得る。本開示のいくつかの態様によれば、ビデオエンコーダ20およびビデオデコーダ30は、パレットベースコーディングが有効にされるか否かを示す1つまたは複数のシンタックス要素をコーディングし得る。たとえば、各CUにおいて、ビデオエンコーダ20は、フラグPLT_Mode_flagのようなシンタックス要素を符号化することができる。PLT_Mode_flagまたは他のシンタックス要素は、パレットベースコーディングモードが所与のCU(または、他の例ではPU)のために使用されるべきであるか否かを示し得る。たとえば、このフラグは、CUレベルで符号化ビデオビットストリーム中でシグナリングされ得、次いで、符号化ビデオビットストリームを復号すると、ビデオデコーダ30によって受信され得る。
[0109]この例では、1に等しいこのPLT_Mode_flagの値は、パレットベースコーディングモードを使用して現在CUが符号化されることを指定し得る。この場合、ビデオデコーダ30は、CUを復号するために、パレットベースコーディングモードを適用し得る。いくつかの例では、シンタックス要素は、CUのための複数の異なるパレットベースコーディングモードのうちの1つ(たとえば、不可逆または可逆)を示し得る。0に等しいこのPLT_Mode_flagの値は、パレットモード以外のモードを使用して現在CUが符号化されることを指定し得る。たとえば、様々なインター予測コーディングモード、イントラ予測コーディングモード、または他のコーディングモードのいずれもが使用され得る。PLT_Mode_flagの値が0であるとき、ビデオエンコーダ20はまた、それぞれのCUを符号化するために使用される特定のモード(たとえば、HEVCコーディングモード)を示すように、追加のデータを符号化し得る。PLT_Mode_flagの使用が、例を目的に説明される。しかしながら、他の例では、マルチビットコードのような他のシンタックス要素が、パレットベースコーディングモードがCU(または、他の例ではPU)のために使用されるべきであるか否かを示すために、または、複数のモードのいずれがコーディングのために使用されるべきであるかを示すために使用され得る。
[0110]いくつかの例では、上記で説明されたフラグまたは他のシンタックス要素は、CU(またはPU)レベルよりも高いレベルで送信され得る。たとえば、ビデオエンコーダ20は、そのようなフラグをスライスレベルでシグナリングし得る。この場合、1に等しい値は、スライス中のCUのすべてがパレットモードを使用して符号化されることを示す。この例では、たとえばパレットモードまたは他のモードのために、追加のモード情報はCUレベルでシグナリングされない。別の例では、ビデオエンコーダ20は、そのようなフラグを、PPS、SPS、またはVPSにおいてシグナリングし得る。
[0111]本開示のいくつかの態様によれば、ビデオエンコーダ20および/またはビデオデコーダ30は、パレットモードが特定のスライス、ピクチャ、シーケンスなどのために有効にされるか無効にされるかを指定する1つまたは複数のシンタックス要素(たとえば、上記で説明されたフラグなど)を、スライスレベル、PPSレベル、SPSレベル、またはVPSレベルのうちの1つにおいてコーディングし得、一方、PLT_Mode_flagは、パレットベースコーディングモードが各CUのために使用されるか否かを示す。この場合、スライスレベル、PPSレベル、SPSレベル、またはVPSレベルで送られたフラグまたは他のシンタックス要素が、パレットコーディングモードが無効にされることを示す場合、いくつかの例では、各CUのためにPLT_Mode_flagをシグナリングする必要はないことがある。代替的に、スライスレベル、PPSレベル、SPSレベル、またはVPSレベルで送られたフラグまたは他のシンタックス要素が、パレットコーディングモードが有効にされることを示す場合、パレットベースコーディングモードが各CUのために使用されるべきであるか否かを示すために、PLT_Mode_flagがさらにシグナリングされ得る。やはり、上述のように、CUのパレットベースコーディングを示すためのこれらの技法の適用は、追加または代替として、PUのパレットベースコーディングを示すために使用され得る。
[0112]いくつかの例では、上記で説明されたシンタックス要素は、ビットストリーム中で条件付きでシグナリングされ得る。たとえば、ビデオエンコーダ20およびビデオデコーダ30は、CUのサイズ、フレームタイプ、色空間、色成分、フレームサイズ、フレームレート、スケーラブルビデオコーディングにおけるレイヤid、またはマルチビューコーディングにおけるビューidに基づいて、シンタックス要素をそれぞれ符号化するだけでよく、または復号するだけでよい。
[0113]上記で説明された例は、たとえば、ビットストリーム中の1つまたは複数のシンタックス要素を伴う明示的なシグナリングに関するが、他の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、パレットコーディングモードがアクティブであるか否か、および/または特定のブロックをコーディングするために使用されるか否かを暗黙的に決定し得る。ビデオエンコーダ20およびビデオデコーダ30は、たとえば、CUのサイズ、フレームタイプ、色空間、色成分、フレームサイズ、フレームレート、スケーラブルビデオコーディングにおけるレイヤid、またはマルチビューコーディングにおけるビューidに基づいて、パレットベースコーディングがブロックのために使用されるか否かを決定し得る。
[0114]図2の技法は、CU(HEVC)のコンテキストにおいて上記で説明されるが、この技法は、予測ユニット(PU)にも、または、他のビデオコーディングプロセスおよび/もしくは規格においても適用され得ることを理解されたい。
[0115]図3は、本開示の技法に一致する、ビデオブロックのためのパレットへのインデックスを決定する例を示す概念図である。たとえば、図3は、インデックス値に関連付けられたピクセルのそれぞれの位置をパレット244のエントリに関係付ける、インデックス値(値1、2、および3)のマップ240を含む。パレット244は、図2に関して上記で説明された第1のパレット184および第2のパレット192と同様の方式で決定され得る。
[0116]ここでも、図3の技法は、ビデオエンコーダ20(図1および図6)およびビデオデコーダ30(図1および図7)のコンテキストにおいて、説明の目的でHEVCビデオコーディング規格に関して説明される。しかしながら、本開示の技法はこのように限定されず、他のビデオコーディングプロセスおよび/または規格において他のビデオコーディングプロセッサおよび/またはデバイスによって適用され得ることを理解されたい。
[0117]マップ240は、各ピクセル位置のためのインデックス値を含むものとして図3の例に示されているが、他の例では、すべてのピクセル位置が、ブロックのピクセル値を指定するパレット244のエントリを示すインデックス値に関連付けられ得るとは限らないことを理解されたい。すなわち、上述のように、いくつかの例では、ビデオエンコーダ20は、ピクセル値がパレット244中に含まれない場合、マップ240中の位置のための実際のピクセル値(または、それの量子化バージョン)の指示を符号化し得る(および、ビデオデコーダ30は、符号化ビットストリームからその指示を取得し得る)。
[0118]いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、どのピクセル位置がインデックス値に関連付けられるかを示す追加のマップをコーディングするように構成され得る。たとえば、マップ中の(i,j)のエントリがCUの(i,j)の位置に対応すると仮定する。ビデオエンコーダ20は、エントリが、関連付けられたインデックス値を有するか否かを示す、マップの各エントリ(すなわち、各ピクセル位置)のための1つまたは複数のシンタックス要素を符号化し得る。たとえば、ビデオエンコーダ20は、CU中の(i,j)のロケーションにおけるピクセル値がパレット244中の値のうちの1つであることを示すように、1の値を有するフラグを符号化し得る。そのような例では、ビデオエンコーダ20はまた、パレット中のそのピクセル値を示し、ビデオデコーダがピクセル値を再構築することを可能にするように、パレットインデックス(値1〜3として図3の例では示される)を符号化し得る。パレット244が単一のエントリと関連付けられたピクセル値とを含む事例では、ビデオエンコーダ20は、インデックス値のシグナリングをスキップし得る。ビデオエンコーダ20は、CU中の(i,j)のロケーションにおけるピクセル値がパレット244中の値のうちの1つではないことを示すように、0の値を有するようにフラグを符号化し得る。この例では、ビデオエンコーダ20はまた、ピクセル値を再構築する際にビデオデコーダ30によって使用するために、ピクセル値の指示を符号化し得る。いくつかの事例では、ピクセル値は不可逆的な方式でコーディングされ得る。
[0119]CUの1つの位置におけるピクセルの値は、CUの他の位置における1つまたは複数の他のピクセルの値の指示を提供し得る。たとえば、CUの隣接ピクセル位置が同じピクセル値を有すること、または、(2つ以上のピクセル値が単一のインデックス値にマッピングされ得る、不可逆コーディングの場合において)CUの隣接ピクセル位置が同じインデックス値にマッピングされ得ることの確率が比較的高いことがある。
[0120]本開示の態様によれば、ビデオエンコーダ20は、同じピクセル値またはインデックス値を有する、所与の走査順序における連続するピクセル値またはインデックス値の数を示す、1つまたは複数のシンタックス要素を符号化し得る。上述のように、同様の値のピクセル値またはインデックス値の列は、本明細書では、ランと呼ばれることがある。例示を目的とする例では、所与の走査順序の2つの連続するピクセルまたはインデックスが異なる値を有する場合、ランは0に等しい。所与の走査順序の2つの連続するピクセルまたはインデックスが同じ値を有するが、その走査順序の3番目のピクセルまたはインデックスが異なる値を有する場合、ランは1に等しい。同じ値をもつ3つの連続するインデックスまたはピクセルでは、ランは2であり、以下同様である。ビデオデコーダ30は、符号化ビットストリームからランを示すシンタックス要素を取得し、同じピクセル値またはインデックス値を有する連続するロケーションの数を決定するためにそのデータを使用し得る。
[0121]いくつかの例では、現在CUのためのパレット中にあるピクセル値を有する現在CU中のすべてのピクセルロケーションは、連続的なピクセルロケーションにおいてピクセル値の「ラン」が後に続くパレットインデックスとともに符号化される。パレット中に1つのエントリしかない場合、パレットインデックスまたは「ラン」の送信は、現在CUについてはスキップされ得る。現在CU中のピクセルロケーションのうちの1つにおけるピクセル値が、パレット中のピクセル値に対して厳密な一致を有していない場合、ビデオエンコーダ20は、最も近いピクセル値を有するパレットエントリのうちの1つを選択し得、元のピクセル値とパレット中に含まれる予測ピクセル値との間の予測誤差または残差値を計算し得る。ビデオエンコーダ20は、ピクセルロケーションのための残差値を符号化し、ビデオデコーダに送信する。ビデオデコーダ30は次いで、対応する受信されたパレットインデックスに基づいて、ピクセルロケーションにおけるピクセル値を導出し得、次いで、導出されたピクセル値および残差値は、現在CU中のピクセルロケーションにおける元のピクセル値を予測するために使用される。一例では、残差値は、残差値を変換し、変換係数を量子化し、量子化変換係数をエントロピー符号化するために、RQTを適用することなど、HEVC方法を使用して符号化され得る。場合によっては、上記の例は、不可逆コーディングと呼ばれることがある。
[0122]例示を目的とする例では、マップ240のライン248を考える。水平方向の左から右への走査方向を仮定すると、ライン248は、5つの「2」のインデックス値と、3つの「3」のインデックス値とを含む。本開示の態様によれば、ビデオエンコーダ20は、走査方向におけるライン248の第1の位置のために2のインデックス値を符号化し得る。加えて、ビデオエンコーダ20は、シグナリングされたインデックス値と同じインデックス値を有する、走査方向における連続する値のランを示す1つまたは複数のシンタックス要素を符号化し得る。ライン248の例では、ビデオエンコーダ20は、4のランをシグナリングし、それによって、走査方向における後続の4つの位置のインデックス値がシグナリングされたインデックス値と同じインデックス値を共有することを示し得る。ビデオエンコーダ20は、ライン248中の次の異なるインデックス値のために、同じプロセスを実施し得る。すなわち、ビデオエンコーダ20は、3のインデックス値と、2のランを示す1つまたは複数のシンタックス要素とを符号化し得る。ビデオデコーダ30は、インデックス値と、同じインデックス値を有する走査方向における連続するインデックスの数(ラン)とを示す、シンタックス要素を取得し得る。
[0123]上述のように、マップのインデックスは、特定の順序で走査される。本開示の態様によれば、走査方向は、垂直方向、水平方向、または対角方向(たとえば、ブロックにおいて対角方向に45度または135度)であり得る。いくつかの例では、ビデオエンコーダ20は、ブロックのインデックスを走査するための走査方向を示す、各ブロックのための1つまたは複数のシンタックス要素を符号化し得る。追加または代替として、走査方向は、たとえば、ブロックサイズ、色空間、および/または色成分のようないわゆるサイド情報に基づいて、シグナリングまたは推論され得る。ビデオエンコーダ20は、ブロックの各色成分のための走査を指定し得る。代替的に、指定された走査は、ブロックのすべての色成分に適用され得る。
[0124]たとえば、列ベースの走査に関して、マップ240の列252を考える。垂直方向の上から下への走査方向を仮定すると、列252は、1つの「1」のインデックス値と、5つの「2」のインデックス値と、2つの「3」のインデックス値とを含む。本開示の態様によれば、ビデオエンコーダ20は、(列252の相対的な上部における)走査方向におけるライン252の第1の位置のために1のインデックス値を符号化し得る。加えて、ビデオエンコーダ20は、0のランをシグナリングし、それによって、走査方向において後続の位置のインデックス値が異なることを示し得る。ビデオエンコーダ20は次いで、走査方向における次の位置のための2のインデックス値と、4のラン、すなわち、走査方向における後続の4つの位置のインデックス値が、シグナリングされたインデックス値と同じインデックス値を共有することを示す、1つまたは複数のシンタックス要素とを符号化し得る。次いで、ビデオエンコーダ20は、走査方向における次の異なるインデックス値のための3のインデックス値と、1のランを示す1つまたは複数のシンタックス要素とを符号化し得る。ビデオデコーダ30は、インデックス値と、同じインデックス値を有する走査方向における連続するインデックスの数(ラン)とを示す、シンタックス要素を取得し得る。
[0125]本開示の態様によれば、ビデオエンコーダ20およびビデオデコーダ30は、追加または代替として、マップ240の1つまたは複数のエントリのためにラインコピーを実施し得る。ラインコピーは、いくつかの例では、走査方向に依存し得る。たとえば、ビデオエンコーダ20は、マップ中の特定のエントリのためのピクセル値またはインデックス値が、(水平方向の走査では)特定のエントリの上のラインにおける、または(垂直方向の走査では)特定のエントリの左の列における、ピクセル値またはインデックス値に等しいことを示し得る。ビデオエンコーダ20はまた、特定のエントリの上のライン、または特定のエントリの左の列におけるエントリに等しい、走査順序におけるピクセル値またはインデックス値の数を、ランとして示し得る。この例では、ビデオエンコーダ20およびまたはビデオデコーダ30は、指定された隣接ラインから、および、現在コーディングされているマップのラインのための指定された数のエントリから、ピクセル値またはインデックス値をコピーし得る。
[0126]例示を目的とする例では、マップ240の列256と260とを考える。垂直方向の上から下への走査方向を仮定すると、列256は、3つの「1」のインデックス値と、3つの「2」のインデックス値と、2つの「3」のインデックス値とを含む。列260は、走査方向において同じ順序を有する同じインデックス値を含む。本開示の態様によれば、ビデオエンコーダ20は、列260全体が列256からコピーされることを示す、列260のための1つまたは複数のシンタックス要素を符号化し得る。1つまたは複数のシンタックス要素は、マップ240の相対的な上部において列260の第1のエントリに関連付けられ得る。ビデオデコーダ30は、ラインコピーを示すシンタックス要素を取得し、列260を復号するときに列260のための列256のインデックス値をコピーし得る。
[0127]本開示の態様によれば、エントリのいわゆるランをコーディングするための技法が、上記で説明されたラインコピーのための技法とともに使用され得る。たとえば、ビデオエンコーダ20は、マップ中のエントリの値がパレットから取得されるか否か、または、マップ中のエントリの値がマップ240中の前にコーディングされたラインから取得されるか否かを示す、1つまたは複数のシンタックス要素(たとえば、フラグ)を符号化し得る。ビデオエンコーダ20はまた、パレットのインデックス値、またはライン(行または列)中のエントリのロケーションを示す、1つまたは複数のシンタックス要素を符号化し得る。ビデオエンコーダ20はまた、同じ値を共有する連続するエントリの数を示す、1つまたは複数のシンタックス要素を符号化し得る。ビデオデコーダ30は、符号化ビットストリームからそのような情報を取得し得、ブロックのためのマップとピクセル値とを再構築するために、その情報を使用し得る。
[0128]説明の目的のための一例では、マップ240の行264および268について考える。水平方向の左から右への走査方向を仮定すると、行264は、5つの「1」のインデックス値と、3つの「3」のインデックス値とを含む。行268は、3つの「1」のインデックス値と、2つの「2」のインデックス値と、3つの「3」のインデックス値とを含む。この例では、ビデオエンコーダ20は、行268のためのデータを符号化するときにランの前にある行264の特定のエントリを特定し得る。たとえば、ビデオエンコーダ20は、行268の第1の位置(行268の一番左の位置)が行264の第1の位置と同じであることを示す、1つまたは複数のシンタックス要素を符号化し得る。ビデオエンコーダ20はまた、行268中の走査方向における2つの連続するエントリの次のランが行264の第1の位置と同じであることを示す、1つまたは複数のシンタックス要素を符号化し得る。
[0129]いくつかの例では、ビデオエンコーダ20はまた、別の行(または列)中のある位置に対する現在のピクセル値もしくはインデックス値をコーディングするべきか否か、または、ランシンタックス要素を使用して現在のピクセル値もしくはインデックス値をコーディングするべきか否かを決定し得る。たとえば、(上述されたように)行264の第1の位置と2つのエントリのランとを示す、1つまたは複数のシンタックス要素を符号化した後、ビデオエンコーダ20は、ライン268中の(左から右に)第4の位置および第5の位置について、第4の位置のための2の値を示す1つまたは複数のシンタックス要素と、1のランを示す1つまたは複数のシンタックス要素とを符号化し得る。したがって、ビデオエンコーダ20は、別のライン(または列)を参照することなしに、これらの2つの位置を符号化する。ビデオエンコーダ20は次いで、上の行264に対する、行268中の3のインデックス値を有する第1の位置をコーディングし得る(たとえば、上の行264からのコピーと、同じインデックス値を有する、走査順序における連続する位置のランとを示す)。したがって、本開示の態様によれば、ビデオエンコーダ20は、たとえばランを使用して、ライン(または列)のピクセル値またはインデックス値をそのライン(または列)の他の値に対してコーディングすること、ライン(または列)のピクセル値またはインデックス値を別のライン(または列)の値に対してコーディングすること、またはそれらの組合せの間で選択し得る。いくつかの例では、ビデオエンコーダ20は、選択を行うために、レート/ひずみ最適化を実施し得る。
[0130]ビデオデコーダ30は、上記で説明されたシンタックス要素を受信し得、行268を再構築し得る。たとえば、ビデオデコーダ30は、現在コーディングされているマップ240の位置のための関連付けられたインデックス値をそこからコピーするための、隣接行中の特定のロケーションを示すデータを取得し得る。ビデオデコーダ30はまた、同じインデックス値を有する、走査順序における連続するロケーションの数を示すデータを取得し得る。
[0131]いくつかの事例では、そこからエントリがコピーされるラインは、(図3の例に示されているように)現在コーディングされているラインのエントリに直接隣接し得る。しかしながら、他の例では、ある数のラインが、ビデオエンコーダ20および/またはビデオデコーダ30によってバッファリングされ得るので、マップのその数のラインのいずれかが、現在コーディングされているマップのラインのための予測エントリとして使用され得る。したがって、いくつかの例では、エントリのためのピクセル値は、現在の行のすぐ上の行(もしくは左の列)、または現在の行の2つ以上上の行(もしくは左の列)の中のエントリのピクセル値に等しくなるようにシグナリングされ得る。
[0132]例示を目的とする例では、ビデオエンコーダ20および/またはビデオデコーダ30は、エントリの現在の行をコーディングするより前に、エントリの以前のn個の行を記憶するように構成され得る。この例では、ビデオエンコーダ20は、切捨て単項コードまたは他のコードを用いて、ビットストリーム中で予測行(そこからエントリがコピーされる行)を示し得る。別の例では、ビデオエンコーダ20は、現在のラインと、現在のラインをコーディングするために参照として使用されるマップ240の予測ラインとの間の、変位値を符号化し得る(および、ビデオデコーダ30は復号し得る)。すなわち、ビデオエンコーダ20は、そこからインデックス値がコピーされる特定のライン(または列)の指示を符号化し得る。いくつかの例では、変位値は変位ベクトルであり得る。すなわち、c[0]、c[1]、...を、マップ240の現在のラインのインデックスを示すものとし、u[0]、u[1]、u[2]、...を、上の隣接ラインなど、マップ240の予測ラインのインデックスを示すものとする。この例では、変位ベクトルがdであるとすると、c[i]のためのインデックス値は、dが負の値をとることを避けるために、u[i+d]またはu[i−d]から予測され得る。dの値は、単項コード、切捨て単項コード、指数ゴロムコード、またはゴロム−ライスコードを使用してコーディングされ得る。
[0133]別の例として、ビデオエンコーダ20は、「上のラインの左半分からコピー」または「上のラインの右半分からコピー」など、現在コーディングされているマップのラインにコピーするべき、隣接ラインと隣接ラインのエントリの数または部分とを示す、命令をシグナリングし得る。追加の例として、インデックス値のマップは、コーディングの前に再び順序付けられ得る。たとえば、インデックス値のマップは、コーディング効率を改善するために、90度、180度、もしくは270度回転されてよく、または上下もしくは左右が反転されてよい。
[0134]他の例では、ビデオエンコーダ20は、マップ240の同様の値のインデックス値のランをビデオデコーダ30に送信しなくてよい。この場合、ビデオエンコーダ20および/またはビデオデコーダ30は、ランの値を暗黙的に導出することができる。一例では、ランの値は、定数値、たとえば4、8、16などであってよい。別の例では、ランの値は、たとえば、ブロックサイズ、量子化パラメータ(QP)、フレームタイプ、色成分、カラーフォーマット(たとえば、4:4:4、4:2:2、または4:2:0)、色空間(たとえば、YUVまたはRGB)、走査方向、および/または現在ブロックのための他のタイプの特性情報のような、コーディングされているビデオデータの現在ブロックのサイド情報に依存し得る。ランの値がブロックサイズに依存する場合、ランは、現在ブロックの幅、現在ブロックの高さ、現在ブロックの幅の半分(もしくは、高さの半分)、現在ブロックの幅および/もしくは高さの分数、または現在ブロックの幅および/もしくは高さの倍数に等しくなり得る。別の例では、ビデオエンコーダ20は、ピクチャパラメータセット(PPS)、シーケンスパラメータセット(SPS)、ビデオパラメータセット(VPS)、および/またはスライスヘッダ中のシンタックス情報のような高レベルのシンタックスを使用して、ランの値をビデオデコーダ30にシグナリングし得る。
[0135]追加または代替として、ビデオエンコーダ20は、マップ240をビデオデコーダ30に送信する必要もないことがある。代わりに、ビデオエンコーダ20および/またはビデオデコーダ30は、マップ240中に含まれるインデックス値の各ランの開始の位置またはロケーションを、暗黙的に導出し得る。一例では、ビデオエンコーダ20および/またはビデオデコーダ30によって適用されるビデオコーディング規格は、ランがあるロケーションにおいてのみ開始し得ると決定し得る。たとえば、ランは、各行の始め、またはコーディングされている現在ブロックのN行ごとの始めにおいてのみ開始し得る。開始ロケーションは、異なる走査順序に対して異なり得る。たとえば、垂直方向の走査が使用される場合、ランは、列の始め、または現在ブロックのN列ごとの始めにおいてのみ開始し得る。
[0136]別の例では、開始ロケーションは、たとえば、ブロックサイズ、QP、フレームタイプ、色成分、カラーフォーマット(たとえば、4:4:4、4:2:2、または4:2:0)、色空間(たとえば、YUVまたはRGB)、走査方向、および/または現在ブロックのための他のタイプの特性情報のような、現在ブロックのためのサイド情報に応じて導出され得る。ランの開始ロケーションがブロックサイズに依存する場合、開始ロケーションは、各行および/もしくは各列の中間点、または各行および/もしくは列の分数(たとえば、1/n、2/n、...(n−1)/n)であり得る。別の例では、ビデオエンコーダ20は、PPS、SPS、VPS、および/またはスライスヘッダ中のシンタックスのような高レベルのシンタックスを使用して、開始位置をビデオデコーダ30にシグナリングし得る。
[0137]いくつかの例では、各々上記で説明された、暗黙的な開始位置の導出および暗黙的なランの導出は、組み合わされ得る。たとえば、ビデオエンコーダ20および/またはビデオデコーダ30は、マップの同様の値のインデックス値のランが2つの隣接開始位置の間の距離に等しいと決定し得る。開始位置が現在ブロックの各行の始め(すなわち、最初の位置)である場合、ビデオエンコーダ20および/またはビデオデコーダ30は、ランの長さが現在ブロックの行全体の長さに等しいと決定し得る。
[0138]パレットを使用して、サンプルブロックが、インデックスブロックにマッピングされ得る。ランレングスベースのエントロピーコーディングが、インデックスブロックを圧縮するために使用される。Per R.JoshiおよびJ. Xu、「High efficient video coding (HEVC) screen content coding:Draft 2」、JCTVC−S1005、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11とのジョイントコラボレーティブチームオンビデオコーディング(JCT−VC)、第18回会合:札幌、日本、2014年6月30日〜7月9日(以下、「JCTVC−S1005」)、パレットモードが、4:4:4クロマサブサンプリングのためのHEVCスクリーンコンテンツコーディング規格に採用された。本開示は、パレットモードを非4:4:4クロマサブサンプリングシナリオに拡張するための新しいプロセスについて説明する。たとえば、関連技術は、4:4:2クロマサブサンプリング、または4:2:0クロマサブサンプリングに適用され得る。
[0139]スクリーンコンテンツビデオの特性に基づいて、SCC効率を改善するために、パレットコーディングが導入された。詳細には、パレットコーディングは、SCCにおいて、1つのCU内の色が、通常、数個のピーク値に集中するという事実に基づいて繰返しピクセル値を圧縮するために、ルックアップテーブル、すなわち、カラーパレットを導入する。特定のCUのためのパレットを仮定すれば、CU内のピクセルは、パレットインデックスにマッピングされる。第2の段階では、インデックスブロックの繰返しパターンを効果的に圧縮するために、効果的なcopy from leftランレングス方法が提案される。後に、パレットインデックスコーディングモードは、ランレングスコーディングを用いるcopy from leftとcopy from aboveの両方に一般化された。変換プロセスは、理論的にはパレットコーディングとともに実装され得るが、大部分の実装形態では、スクリーンコンテンツの視覚的品質に悪影響を及ぼし得る、鋭いエッジのぼかしを回避するために、変換プロセスは呼び出されない。
[0140]パレットは、(インデックス、ピクセル値)ペアを記憶するデータ構造である。設計されたパレットは、たとえば、現在CU中のピクセル値のヒストグラムに基づいて、エンコーダ20によって決定され得る。たとえば、ビデオエンコーダ20は、パレット中に低周波数ピクセル値を含めることなしに、ピストグラム中のピーク値をパレットに追加し得る。パレットのサイズは、0から、31に等しいmax_palette_sizeまでの範囲内であるように制限され得る。
[0141]SCCでは、1つのスライス内のCUブロックは、多くの支配的な色を共有し得る。したがって、(CU復号順序における)前のパレットモードCUのパレットを参照として使用して、現在ブロックのパレットを予測することが可能であり得る。たとえば、0〜1バイナリベクトルが、参照パレット中のピクセル値が現在のパレットによって再利用されるか否かを示すためにシグナリングされ得る。一例として、図4では、参照パレットが6つの項目を有すると仮定される。ベクトル(1,0,1,1,1,1)が現在パレットを用いてシグナリングされ、これは、v0、v2、v3、v4、およびv5は現在パレット中で再利用されるが、v1は再利用されないことを示す。現在パレットが参照パレットから予測可能でない色を含んでいる場合、いくつかの予測されない色がコーディングされ、次いで、これらの色が直接シグナリングされる。たとえば、図4では、u0およびu1が、ビットストリーム中に直接シグナリングされる。
[0142]パレットモードを用いてコーディングされるブロックの場合、パレットは、前にパレットコーディングされたブロックのパレットエントリから予測され得、新しいエントリとして明示的にシグナリングされ得、または前にコーディングされたブロックのパレットが再利用され得る。再利用ベクトルは、デコーダに明示的にシグナリングされ得る。
[0143]現在のSCM4.0テストモード(すなわち、Joshiら、「HEVC Screen Content Coding Draft Text 3」、ITU−T SG16 WP3およびISO/IEC JTC1/SC29/WG11のジョイントコラボレーティブチームオンビデオコーディング(JCT−VC)、第20回会合、ジュネーブ、スイス、2015年2月10日〜2月17日、文書JCTVC−T1005、以下「JCTVC−T1005」)では、規範的観点からのパレットコーディングの2つの主要な態様は、パレットのコーディングと、パレットモードでコーディングされているブロック中の各サンプルのためのパレットインデックスのコーディングとである。パレットインデックスのコーディングは、「インデックス」モードおよび「copy above」モードという、2つの主要モードを使用して実施される。これは、palette_modeフラグをコーディングすることによってシグナリングされる。「インデックス」モードはまた、エスケープサンプル、すなわち、パレットに属さないサンプルを示すために使用される。現在の設計では、「copy above」モードは、パレットブロックの第1の行では可能でない。加えて、「copy above」モードは、別の「copy above」モードに後続しないことがある。これらの場合、「インデックス」モードが推論される。
[0144]具体的には、パレットモードでは、CU中のピクセルが、次のように水平/垂直スネーク走査順序で符号化される。
[0145]「インデックス」モードでは、1つのパレットインデックスが最初にシグナリングされる。インデックスがパレットのサイズに等しい場合、これは、サンプルがエスケープサンプルであることを示す。この場合、各成分のためのサンプル値または量子化サンプル値がシグナリングされる。たとえば、パレットサイズが4である場合、非エスケープサンプルについて、パレットインデックスは範囲[0,3]中にある。この場合、4のインデックス値がエスケープサンプルを示す。インデックスが非エスケープサンプルを示す場合、ランレングスを示す非負値n−1によって、同じインデックスを共有する走査順序での後続のサンプルの数を指定するランレングスがシグナリングされ、これは、現在ピクセルを含む後続のn個のピクセルが、最初にシグナリングされたピクセルインデックスと同じピクセルインデックスを有することを意味する。
[0146]「Copy from Above」ランモード(CA)では、現在ピクセルを含む後続のm個のピクセルについて、それぞれ、パレットインデックスがすぐ上のそれらのネイバーと同じであることを示すために、非負ランレングス値m−1のみが送信される。このモードは、パレットインデックスがCopy from Aboveランモード内で異なり得るという意味で、「インデックス」モードとは異なることに留意されたい。
[0147]現在の設計では、パレットモードは、CUレベルでシグナリングされるが、パレットモードは、PUレベルでそれをシグナリングすることが可能であり得る。現在ブロック中のエスケープサンプルの存在を示すために、フラグpalette_esc_val_present_flagもシグナリングされる。
[0148]パレットモードでは、ブロック中のピクセル走査は、2つのタイプ、すなわち、垂直トラバースまたは水平トラバース(スネーク状)走査であり得る。ブロック中で使用される走査パターンは、ブロック単位でシグナリングされるフラグpalette_transpose_flagに従って導出される。
[0149]パレットインデックスコーディング中に、パレットインデックス調整プロセスが適用され得る。ブロック中の第2のピクセルから開始すると、パレットインデックス調整プロセスは、前にコーディングされたピクセルのパレットモードを検査することを備えるか、またはそれからなり得る。最初に、パレットサイズが1だけ低減され、左モードがインデックスモードに等しい場合、コーディングされるべきパレットインデックスが1だけ低減される。インデックスが左パレットインデックスよりも大きい場合、または、左モードがCopy from Aboveモードである場合、コーディングされるべきパレットインデックスは、インデックスが上パレットインデックスよりも大きい場合、1だけ低減される。この説明は、符号化側から与えられており、対応するプロセスは、デコーダ側においても逆順で実施され得る。
[0150]現在のSCM4.0テストモードでは、パレットインデックスは、切捨て2進コードを使用してコーディングされる。切捨て2進コーディングは、典型的には、有限アルファベットを伴う一様確率分布のために使用されるが、現在のHEVCでは使用されない。切捨て2進コーディングは、数nの合計サイズをもつアルファベットによってパラメータ化される。切捨て2進コーディングは、nが2のべき乗ではないとき、2進符号化のわずかにより一般的な形式である。
[0151]nが2のべき乗である場合、0≦x<nについてのコード化値は、長さlog2(n)のxのための単純なバイナリコードである。それ以外の場合、2k≦n<2k+1となるようにk=floor(log2(n))とし、u=2k+1−nとする。
[0152]切捨て2進コーディングは、長さkのコードワードを最初のu個のシンボルに割り当て、次いで、長さk+1の最後のn−u個のコードワードを残りのn−u個のシンボルに割り当てる。表1は、n=5についての例である。
Figure 2018520562
[0153]現在のSCM4.0インデックスコーディングでは、切捨て2進コード中のすべてのビンが再バイパスコーディングした。切捨て2進コードの動的範囲は、上記で説明されたインデックス調整プロセス後の低減されたインデックス動的範囲である。
[0154]現在のSCM4.0では、表2に示されているように、ラン値の2値化は、単項コードと次数0の指数ゴロムコードとの連結(1における切替え点)である。
Figure 2018520562
[0155]プレフィックス中の最大で最初の5つのビンは、通常のビンと(もしあれば)残りのプレフィックスとを使用中であり、サフィックスは、バイパスビンを使用中である。最初のビンでは、コンテキスト割当ては、(パレットランモードがインデックスモードである場合は)パレットランモードおよびパレットインデックス値に依存する。
[0156]エントロピーコーディングのスループットを高めるために、バイパスビンのグループ化が望ましい。1つの可能な解決策は、Karczewiczら、「Non CE1:Grouping Palette Indices At Front」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11とのジョイントコラボレーティブチームオンビデオコーディング(JCT−VC)、第20回会合、JCTVC−T0065、ジュネーブ、スイス、2015年2月10〜18日(以下、「JCTVC−T0065)において説明されているように、(ランコーディング前に)前部でインデックスコーディングをグループ化することになる。別の可能な解決策は、(ランコーディング後に)最後にインデックスをグループ化することである。この場合、インデックスとランとの間の依存問題が解決されなければならない。以下は、提案される解決策である。
[0157]本開示の1つまたは複数の技法によれば、パレットインデックスのすべてが、(たとえば、ラン値の後で)最後にグループ化される。したがって、ラン値のコーディングは、インデックス値に依存しない。代わりに、ランコンテキストは、現在ブロック内のピクセル位置、もしくは現在ブロックのための(調整された)パレットサイズ、または両方の組合せに依存するように提案される。
[0158]インデックスコーディングのコーディング性能を改善するために、パレットサイズ(または調整されたパレットサイズ)とラン値とに依存する、新規の2値化方法が提案される。
[0159]エントロピーコーディングスループットを高めるために、本開示は、ランコーディングの後(たとえば、ラン関係シンタックス要素の後)、インデックスコーディング(たとえば、インデックス関係シンタックス要素)を一緒にグループ化することを提案する。そのような技法を実装するシンタックス構造の一例が、以下に表3において示される。
Figure 2018520562
[0160]いくつかの例では、表3に示されているシンタックスは、palette_codingシンタックス構造におけるものである。palette_codingシンタックス構造は、CUのためのcoding_unitシンタックス構造中に含まれる。
[0161]表3では、COPY_ABOVE_MODEに等しいシンタックス要素palette_run_type_flag[xC][yC]は、パレットインデックスが上の行の中の同じロケーションにおけるパレットインデックスに等しいことを指定する。COPY_INDEX_MODEに等しいpalette_run_type_flag[xC][yC]は、サンプルのパレットインデックスの指示がビットストリーム中でコーディングされることを指定する。アレイインデックスxC、yCは、ピクチャの左上ルーマサンプルに対するサンプルのロケーション(xC,yC)を指定する。palette_run_type_flagが存在しないとき、palette_run_type_flagは、次のように推論される。CurrNumIndicesがNumPaletteIndicesに等しく、MaxPaletteIndexが0よりも大きい場合、palette_run_type_flagは、COPY_ABOVE_MODEに等しいと推論される。そうでない場合(CurrNumIndicesがNumPaletteIndices未満であるか、またはMaxPaletteIndexが0に等しい)、palette_run_type_flagは、COPY_INDEX_MODEに等しいと推論される。
[0162]シンタックス要素palette_run_msb_id_plus1−1は、paletteRunの2進表現における最上位ビットのインデックスを指定する。palette_run_msb_id_plus1の値は、両端値を含む0〜Floor(Log2((MaxPaletteRun))+1の範囲内にあるものとする。
[0163]シンタックス要素palette_run_refinement_bitsは、paletteRunの2進表現におけるリファインメントビットを指定する。変数paletteRunは、palette_run_type_flagがCOPY_ABOVE_MODEに等しいときは、上の行の中の位置と同じパレットインデックスをもつ連続するロケーションの数−1を指定し、または、palette_run_type_flagがCOPY_INDEX_MODEに等しいときは、同じパレットインデックスをもつ連続するロケーションの数−1を指定する。palette_run_refinement_bitsが存在しないとき、palette_run_refinement_bitsは、0に等しいと推論される。palette_run_msb_id_plus1が存在するとき、変数paletteRunは、次のように導出される。
・palette_run_msb_id_plus1が1よりも大きい場合、paletteRun=(1<<(palette_run_msb_id_plus1−1))+palette_run_refinement_bits
そうでない場合(0または1にに等しいpalette_run_msb_id_plus1)、paletteRunは、palette_run_msb_id_plus1に等しく設定される。
[0164]シンタックス要素palette_index_idcは、currentPaletteEntriesによって表されたアレイへのインデックスの指示である。palette_index_idcの値は、ブロック中の最初のインデックスについては、両端値を含む0〜MaxPaletteIndexの範囲内にあるものとし、ブロック中の残りのインデックスについては、両端値を含む0〜(MaxPaletteIndex−1)の範囲内にあるものとする。palette_index_idcが存在しないとき、それは0に等しいと推論される。
[0165]ランが最初にコーディングされるとき、ランコンテキスト割当ては、インデックス値情報がこの段階で利用可能ではないので、インデックス値に依存しないことがある。この依存問題を解決し、ランコーディングの良好なコーディング性能を維持するために、異なるコンテキスト割当て方法が、以下において提案される。
[0166]したがって、本開示の一例によれば、ビデオデコーダ30は、ビットストリーム中の第1のエントロピー符号化データに基づいて、ビデオデータの現在ピクチャの現在ブロックのためのラン関係シンタックス要素グループのセット(たとえば、palette_run_type_flagシンタックス要素と、palette_run_msb_id_plus1シンタックス要素と、場合によってはpalette_run_refinement_bitsシンタックス要素と)を決定し得る。さらに、ビデオデコーダ30は、ビットストリーム中の第2のエントロピー符号化データに基づいて、現在ブロックのためのパレットインデックスシンタックス要素のセット(たとえば、palette_index_idc)を決定し得、パレットインデックスシンタックス要素のセットが、ラン関係シンタックス要素グループのセットの後、ビットストリーム中で発生する。この例では、ラン関係シンタックス要素グループのセットのうちの各それぞれのラン関係シンタックス要素グループは、等しいパレットモードタイプインジケータのそれぞれのランのそれぞれのタイプと、それぞれのランのそれぞれの長さとを示す。この例では、パレットインデックスシンタックス要素のセットのうちの各それぞれのパレットインデックスシンタックス要素は、サンプル値のセットを備えるパレット中のエントリを示す。ビデオデコーダ30は、パレット中のサンプル値に基づいて、現在ブロックを再構築し得る。
[0167]同様に、一例では、ビデオエンコーダ20は、ビットストリーム中に、ビデオデータの現在ピクチャの現在ブロックのためのラン関係シンタックス要素グループのセット(たとえば、palette_run_type_flagシンタックス要素と、palette_run_msb_id_plus1シンタックス要素と、場合によってはpalette_run_refinement_bitsシンタックス要素と)に対応する、第1のエントロピー符号化データを含め得る。ビデオエンコーダ20は、ビットストリーム中に、現在ブロックのためのパレットインデックスシンタックス要素のセット(たとえば、palette_index_idc)に対応する、第2のエントロピー符号化データを含め得る。この例では、第1のエントロピー符号化データは、第2のエントロピー符号化データの前に、ビットストリーム中で発生する。この例では、ラン関係シンタックス要素グループのセットのうちの各それぞれのラン関係シンタックス要素グループは、等しいパレットモードタイプインジケータのそれぞれのランのそれぞれのタイプと、それぞれのランのそれぞれの長さとを示す。この例では、パレットインデックスシンタックス要素のセットのうちの各それぞれのパレットインデックスシンタックス要素は、サンプル値のセットを備えるパレット中のエントリを示す。
[0168]本開示は、インデックス値に依存するのではなく、ランコンテキスト割当てを使用することを提案する。本開示は、ランコーディングのためのコンテキストを割り当てるために、現在のランのための開始ピクセルロケーションを使用することを提案する。一例として、開始ピクセルが現在ブロック中の第1のピクセルである場合、コンテキストAが、ランの第1のビンをコーディングするために使用され、そうでない場合、開始ピクセルが第1の行中のそのである場合、コンテキストBが、ランの第1のビンをコーディングするために使用され、そうでない場合、コンテキストCが、ランの第1のビンをコーディングするために使用される。この場合、「インデックス」モードおよび「copy above」モードのためのコンテキストは、同じであってもそうでなくてもよいことに留意されたい。言い換えれば、各palette_run_type_flagについて、位置依存コンテキスト割当てのセットが使用され得る。これらの2つのモードのためのコンテキストは、共有されてもされなくてもよい。また、位置依存コンテキスト割当ては、第1のビンのみに制限されず、他の通常のビンにも同様に適用され得ることに留意されたい。
[0169]たとえば、ラン関係シンタックス要素グループのセットのうちの各それぞれのラン関係シンタックス要素グループについて、ビデオコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)は、複数のエントロピーコーディングコンテキストから、それぞれのラン関係シンタックス要素グループのためのそれぞれのエントロピーコーディングコンテキストを選択し得る。この例では、それぞれのエントロピーコーディングコンテキストの選択は、パレットインデックスシンタックス要素のいずれにも依存しない。ビデオコーダは、選択されたエントロピーコーディングコンテキストに基づいて、それぞれのラン関係シンタックス要素グループのビンをエントロピーコーディングし得る。この例では、ビデオコーダは、それぞれのラン関係シンタックス要素グループに対応するそれぞれのランの開始ピクセルの現在ブロック内の位置に基づいて、それぞれのラン関係シンタックス要素グループのためのそれぞれのエントロピーコーディングコンテキストを選択し得る。
[0170]代替的に、本開示は、ランコーディングの第1のビン(または、他の通常のビン)のためのコンテキストを割り当てるために、現在ブロックのパレットサイズを使用することを提案する。一例として、現在のパレットサイズがしきい値T1よりも小さい場合、コンテキストAが、第1のビンをコーディングするために使用され、そうでない場合、パレットサイズがT2よりも小さい場合、コンテキストBが、第1のビンをコーディングするために使用され、そうでない場合、コンテキストCが、第1のビンをコーディングするために使用される。開始ピクセルロケーションに応じたランコンテキスト割当てに関して上記で説明された技法と同様に、コンテキスト割当ては、「インデックス」モードと「copy above」モードの両方、もしくは複数の通常のビン、またはこれらの組合せに一般化され得る。
[0171]たとえば、ビデオコーダは、パレットのサイズに基づいて、それぞれのラン関係シンタックス要素グループのためのそれぞれのエントロピーコーディングコンテキストを選択し得る。
[0172](調整された)パレットサイズとラン値情報との間の関係を効率的に活用するために、インデックス値をコーディングするために、新規の2値化方法が提案される。このセクションでは、提案される方法が、一例として、本開示における他の場所で上述されたように、インデックス調整後に調整されたパレットサイズに基づいて説明されることに留意されたい。提案される方法は、元のパレットサイズにも同様に適用され得る。容易な説明のために、調整されたパレットサイズが以下で使用される。
[0173]異なるラン値に応じて、異なるインデックス2値化方法が提案される。一例として、ラン値がR1である場合、2値化方法B1が使用され、そうでない場合、2値化方法B2が、表4に示されているように使用され、ただし、R1は、この例では0に等しい。B1およびB2は、両端値を含めて、[0,adjustedPaletteSize−1]の範囲内の値を表すことができる、任意の2値化方法であり得る。一例として、B1またはB2は、切捨て2進コードワードもしくは単項コード、またはゴロムファミリーコード(指数ゴロムコード、ゴロムライスコード、これらの連結、もしくはこれらの切捨てバージョン)、またはこれらの組合せ、またはフラグ+これらの2値化コードワードのいずれかであり得る。
[0174]代替例として、3つ以上の2値化方法が、ラン値に応じて使用され得る。
Figure 2018520562
[0175]たとえば、パレットインデックスシンタックス要素要素のセットのうちの各それぞれのパレットインデックスシンタックス要素について、ビデオデコーダ30は、ビットストリームから、それぞれのパレットインデックスシンタックス要素に対応するデータを取得し得る。この例では、ビデオデコーダ30は、それぞれのパレットインデックスシンタックス要素の2値化バージョンを決定するために、それぞれのパレットインデックスシンタックス要素に対応するデータをエントロピー復号し得る。さらに、ビデオデコーダ30は、同じパレットインデックスをもつ連続するロケーションの数に基づいて、2値化方法を決定し得る。ビデオデコーダ30は、それぞれのパレットインデックスシンタックス要素の2値化バージョンを逆2値化するために、決定された2値化方法を使用して、それぞれのパレットインデックスシンタックス要素を決定し得る。
[0176]別の例では、パレットインデックスシンタックス要素要素のセットのうちの各それぞれのパレットインデックスシンタックス要素について、ビデオエンコーダ20は、同じパレットインデックスをもつ連続するロケーションの数に基づいて、2値化方法を決定し得る。ビデオエンコーダ20は、決定された2値化方法を使用して、それぞれのパレットインデックスシンタックス要素の2値化バージョンを生成し得る。さらに、この例では、ビデオエンコーダ20は、それぞれのインデックスシンタックス要素の2値化バージョンをエントロピー符号化し得る。ビデオエンコーダ20は、ビットストリーム中に、それぞれのパレットインデックスシンタックス要素のエントロピー符号化された2値化バージョンを含め得る。
[0177]異なる調整されたパレットサイズ(adjustedPaletteSize)に応じて、異なるインデックス2値化方法が提案される。一例として、adjustedPaletteSizeがS1よりも小さい場合、2値化方法B1が使用され、そうでない場合、2値化方法B2が使用される。S1は、両端値を含めて、[0,maxPaletteSize]の範囲内の任意の有効な整数であり得る。しきい値S1は、エンコーダとデコーダの両方において、あらかじめ定義された値であり、またはスライス、ピクチャもしくはシーケンスレベルにおいて明示的にコーディングされ、または、0もしくはmaxPaletteSizeの間の相対差分を使用してコーディングされ得る。一例として、S1は、表5に示されている5に等しい。「ラン値情報を使用するインデックスコーディング」という名称の本開示のセクションと同様に、B1またはB2は、切捨て2進コードワードもしくは単項コード、またはゴロムファミリーコード(指数ゴロムコード、ゴロムライスコード、これらの連結、もしくはこれらの切捨てバージョン)、またはこれらの組合せ、またはフラグ+これらの2値化コードワードのいずれかであり得、B1およびB2は、潜在的に異なる。ここで、異なる2値化方法(B1またはB2)が、異なるインデックス動的範囲をコーディングするために使用される。たとえば、表5では、以下で、B1は、両端値を含めて、[0,4]のインデックス動的範囲をコーディングするために使用されるが、B2は、両端値を含めて、[5,adjustedPaletteSize−1]のインデックス動的範囲をコーディングするために使用される。
[0178]代替例として、3つ以上の2値化方法が、(調整された)パレットサイズに応じて使用され得る。
Figure 2018520562
[0179]たとえば、パレットインデックスシンタックス要素要素のセットのうちの各それぞれのパレットインデックスシンタックス要素について、ビデオデコーダ30は、ビットストリームから、それぞれのパレットインデックスシンタックス要素に対応するデータを取得し得る。この例では、ビデオデコーダ30は、それぞれのパレットインデックスシンタックス要素の2値化バージョンを決定するために、それぞれのパレットインデックスシンタックス要素に対応するデータをエントロピー復号し得る。さらに、ビデオデコーダ30は、パレットサイズに基づいて、2値化方法を決定し得る。ビデオデコーダ30は、それぞれのパレットインデックスシンタックス要素の2値化バージョンを逆2値化するために、決定された2値化方法を使用して、それぞれのパレットインデックスシンタックス要素を決定し得る。
[0180]別の例では、パレットインデックスシンタックス要素要素のセットのうちの各それぞれのパレットインデックスシンタックス要素について、ビデオエンコーダ20は、パレットサイズに基づいて、たとえば、複数の異なる2値化方法のうちの1つを選択することによって、2値化方法を決定し得る。ビデオエンコーダ20は、決定された2値化方法を使用して、それぞれのパレットインデックスシンタックス要素の2値化バージョンを生成し得る。さらに、この例では、ビデオエンコーダ20は、それぞれのインデックスシンタックス要素の2値化バージョンをエントロピー符号化し得る。ビデオエンコーダ20は、ビットストリーム中に、それぞれのパレットインデックスシンタックス要素のエントロピー符号化された2値化バージョンを含め得る。
[0181]本開示は、「ラン値情報を使用するインデックスコーディング」および「(調整された)パレットサイズ情報を使用するインデックスコーディング」という名称の本開示のセクションにおける方法と一緒に、ラン情報と(調整された)パレットサイズ情報の両方を使用してインデックスをコーディングすることを提案する。各2値化方法では、インデックス値並べ替えが、コーディング効率を改善するために適用され得る。たとえば、表6では、シンボル「0」は、すべてのシンボルをシフトし、シンボル「0」を最後に置くことによって、「00」の代わりに、コードワード「111」を使用中である。
Figure 2018520562
[0182]パレットサイズ情報とラン情報の両方を使用する一例として、以下は、インデックスコーディングのための2値化方法である。
Figure 2018520562
Figure 2018520562
[0183]いくつかの例では、これらのパレットインデックス予測子技法は、2つ(以上)の前にコーディングされたパレットインデックスが、現在のインデックスを予測するために使用される、以下でより詳細に説明される技法と組み合わされ得る。予測子機構は、パレットサイズおよび/またはランレングスに依存し得る。
[0184]使用されるべき可変長コードの明示的シグナリングもまた、実装され得る。そのような例では、複数の可変長コードが、インデックス値をコーディングするために使用され得る。各パレットブロックについて、使用されるべき可変長コードのタイプが、明示的にシグナリングされる。一例として、選定は、切捨て2進コードと指数ゴロムタイプのコードとの間であり得る。可変長コードがパラメータ化される場合、使用されるべき特定のパラメータがシグナリングされ得る。たとえば、指数ゴロムタイプのコードがシグナリングされるとき、指数ゴロムのためのパラメータがシグナリングされ得る。
[0185]代替実施形態では、シグナリングされた可変長コードのタイプは、RUN_THRESHOLD以上のランのためにのみ使用され得る。好ましい実施形態では、RUN_THRESHOLDは1である。可変長コードのタイプのシグナリングは、MAG_THRESHOLDを超えるRUN_THRESHOLD以上のランの数または割合を条件とし得る。可変長コードのタイプがシグナリングされない場合、デフォルトのものが使用され得る。デフォルトの可変長コードの一例は、切捨て2進コードになる。
[0186]RUN_THRESHOLDおよびMAG_THRESHOLDは、エンコーダとデコーダの両方に知られ得るか、または、たとえば、VPS、SPS、PPS、スライスヘッダなどにおいて、ビットストリーム中で送られ得る。
[0187]本開示の技法はまた、インデックスコーディングのための可変長コードを適応的に選定することを含む。そのような例では、複数の可変長コードが、インデックス値をコーディングするために使用され得る。しかしながら、使用するべき可変長コードを明示的にシグナリングするか、またはラン値およびadjustedPaletteSizeに基づく固定ルールを有するのではなく、可変長コードの選定は、インデックス統計値に基づいて適応的である。一例として、コーディングされる各インデックス値について、カウンタが維持される。値が特定のしきい値を超える場合、カウンタは、1だけインクリメントされ、そうでない場合、1だけデクリメントされる。しきい値は、ビデオシーケンス全体を通して固定され得るか、またはadjustedPaletteSizeに依存し得る。カウンタの値は、インデックス値をコーディングするために使用される可変長コードを決定し得る。たとえば、VLCコードのタイプは、adjustedPaletteSizeの切捨て値をもつ切捨て2進コード、指数ゴロムコード、または上記で説明された他のコードであり得る。
[0188]しきい値は、エンコーダとデコーダの両方に知られ得るか、または、たとえば、VPS、SPS、PPS、スライスヘッダなどにおいて、ビットストリーム中で送られ得る。
[0189]上記で説明された技法の一例では、パレットインデックスシンタックス要素要素のセットのうちの各それぞれのパレットインデックスシンタックス要素について、ビデオデコーダ30は、ビットストリームから、それぞれのパレットインデックスシンタックス要素に対応するデータを取得し得る。この例では、ビデオデコーダ30は、それぞれのパレットインデックスシンタックス要素の2値化バージョンを決定するために、それぞれのパレットインデックスシンタックス要素に対応するデータをエントロピー復号し得る。さらに、ビデオデコーダ30は、パレットサイズと、同じパレットインデックスをもつ連続するロケーションの数とに基づいて、2値化方法を決定し得る。ビデオデコーダ30は、それぞれのパレットインデックスシンタックス要素の2値化バージョンを逆2値化するために、決定された2値化方法を使用して、それぞれのパレットインデックスシンタックス要素を決定し得る。
[0190]別の例では、パレットインデックスシンタックス要素要素のセットのうちの各それぞれのパレットインデックスシンタックス要素について、ビデオエンコーダ20は、パレットサイズと、同じパレットインデックスをもつ連続するロケーションの数とに基づいて、2値化方法を決定し得る。ビデオエンコーダ20は、決定された2値化方法を使用して、それぞれのパレットインデックスシンタックス要素の2値化バージョンを生成し得る。さらに、この例では、ビデオエンコーダ20は、それぞれのインデックスシンタックス要素の2値化バージョンをエントロピー符号化し得る。ビデオエンコーダ20は、ビットストリーム中に、それぞれのパレットインデックスシンタックス要素のエントロピー符号化された2値化バージョンを含め得る。
[0191]ブロックの前部でインデックスをグループ化するのではなく、パレットランタイプおよびパレットランレングスシンタックス要素の発生の一部または全部をシグナリングした後、インデックスをグループ化するための例が、本明細書で説明される。そのような例では、パレットランレングスシンタックス要素のCABACコンテキストは、デコーダがインデックスを復号する前にランレングスを復号するので、対応するインデックスに依存しないことがある。インデックスの対応するランレングスに応じて、インデックスをコーディングするためのさらなる例が、本明細書で説明される。
[0192]いくつかの例では、INDEX_COPYランレングスが、対応するインデックスを復号する前に知られているとき、そのようなランレングス情報が、インデックスを復号するために使用され得る。たとえば、ブロックのためのパレットインデックスは、インデックス0、インデックス1、インデックス2、インデックス3、インデックス4、およびインデックス5を含む、{0,1,2,3,4,5}を含み得る。ランレングス情報を使用する一例では、ランレングスが、しきい値Tなどのしきい値よりも大きい場合、あるセットのコードワードが、インデックスを復号するために使用され得る。別の例では、ランレングスがしきい値T以下である場合、別のセットのコードワードが使用され得る。一例では、Tは、0に等しくなり得る。そのような例では、ランレングスが0よりも大きいとき、あるセットのコードワードが使用され得る。ランレングスが0に等しいとき、別のセットのコードワードが使用され得る。
[0193]いくつかの例では、ランレングスがTよりも大きいとき、インデックス予測子のリスト(または、インデックス予測子リスト)が、現在のインデックスをコーディングするために使用され得る。場合によっては、リストにおける最大サイズ制限があり得る。一例では、2の最大リストサイズが、本明細書で説明されるいくつかの例について説明するために使用される。しかしながら、本明細書で説明される例は、この例に限定されず、任意の他の予測子リストサイズ制限が使用され得る。
[0194]いくつかの例では、インデックス予測子リストは、前に復号されたインデックスを使用して構築され得る。ブロック中のインデックスを復号する前に、インデックス予測子リストは、空になるように初期化され得るか、またはいくつかのあらかじめ定義されたインデックスを用いて初期化され得る。一例では、インデックス予測子リストは、{0}または{0,1}に等しい単一の要素を用いて初期化され得る。いくつかの例では、1つまたは複数のプルーニング方法が、(個別に、または任意の組合せにおいて)予測子リストに適用され得る。たとえば、以下のようになる。
1.復号されたインデックスが、リスト中のいかなる既存の要素とも異なる場合のみ、復号されたインデックスが、インデックス予測子リストに追加され得る。
2.復号されたインデックスの対応するランレングスが、しきい値T1よりも大きい場合のみ、復号されたインデックスが、インデックス予測子リストに追加され得る。一例では、T1は、0に等しい。そのような例では、対応するランレングスが0よりも大きい場合のみ、復号されたインデックスが、リストに追加され得る。
3.一例では、インデックス予測子リストに追加される値は、復号されたインデックス値であり得る。別の実施形態では、インデックス予測子リストに追加される値は、復号前のパースされた値であり得る。本明細書で使用される、パースされた値という用語は、その隣接インデックス値に基づいて調整を行う前の、エントロピーデコーダの出力値を指すために使用される。
[0195]いくつかの例では、本明細書で説明されるパレットインデックス予測方法は、パレットサイズまたは最大実現可能インデックス値がしきい値よりも大きいときのみ、適用され得る。一例では、しきい値のための値は、4になるように選定され得る。
[0196]デコーダにおいて、リストが空ではない場合、対応するインデックスがインデックス予測子リストから予測されるか否かを示すために、フラグが復号され得る。一例では、フラグのための1の値が、インデックスがインデックス予測子リストから予測されることを示すために使用される。別の例では、フラグのための0の値が、インデックスがインデックス予測子リストから予測されることを示すために使用される。現在のインデックスがリストから予測される場合、リスト中のどのエントリが使用されるかを指定するために、値Iが復号される。リストサイズが1に等しい場合、リスト中に1つの候補のみがあるので、値Iがバイパスされ得る。リストサイズが1よりも大きい場合、コードは、Iをコーディングするために使用され得る。コードの例は、ゴロム−ライスコード、指数ゴロムコード、単項コード、これらのコードの切捨てバージョン、または他の好適なコードを含み得る。たとえば、リストサイズが2である場合、フラグは、リスト中のどのエントリが使用のために選定されるかを指定するために使用され得る。リスト中で選択されたエントリ値は、復号されたインデックスまたはパースされたインデックスのいずれかとして扱われ得る。選択されたエントリ値が、復号されたインデックスとして扱われる場合、値を得た後、デコーダは、隣接インデックスに基づいて、インデックス調整動作を実施する必要がないことがある。代替的に、選択されたエントリ値が、パースされたインデックスとして扱われる場合、値を得た後、デコーダは、その隣接インデックスに基づいて、インデックス調整動作を実施する必要があり得る。
[0197]いくつかの例では、フラグが、インデックスがインデックス予測子リストから予測可能であることを示す場合、デコーダは、予測子リスト中のアクティブな候補(または、エントリ)の数が定数またはしきい値Tであると仮定し得る。たとえば、デコーダは、予測子リスト中のアクティブな候補の数が2であると仮定し得る。候補の実際の数がTよりも大きい場合、それらのうちのT個のみが実際に使用され得る。たとえば、T=2の場合、最初の2つのエントリ、最後の2つのエントリ、またはあるルールに従って選択された2つのエントリのみが使用され得る。リスト中の実際のエントリの数がT未満である場合、冗長シグナリングが、実装を簡略化するために使用され得る。たとえば、T=2であり、候補がただ1つの要素を有する場合、リスト中の(合計1つからの)最初の要素が使用されることを示すために、1つの冗長ビンが依然としてシグナリングされ得る。
[0198]いくつかの例では、インデックスがインデックス予測子リストから予測可能であるか否かを示すために最初にフラグをシグナリングし、次いで、予測されたエントリインデックスをシグナリングするのではなく、インデックス予測子リスト中で使用されるエントリの代替的シグナリングが使用され得る。たとえば、別個のコードワードが、選択された予測されたエントリのために予約され得る。たとえば、T=2の場合、第1の予測子エントリは、コードワード「0」とともに割り振られ得、第2の予測子エントリは、コードワード「10」とともに割り振られ得、予測されないエントリは、「11」を前に付けられ得る。
[0199]いくつかの例では、パレットインデックス予測子リスト中の候補数を低減するために、プルーニング手順が適用され得る。たとえば、走査順序における前のピクセルが、INDEX_COPYのパレットランタイプを有する場合、現在のインデックスは、前のピクセルのインデックスと同じではないことがある。この例では、前のピクセルのインデックスが、インデックス予測子リストから除去され得るか、または、インデックス予測子リスト中で保たれるが、現在のインデックス予測のために無効としてマークされ得る。代替的に、走査順序における前のピクセルが、COPY_ABOVEのパレットランタイプを有する場合、現在のインデックスは、前のピクセルの上方ネイバーのインデックスと同じではないことがある。この例では、上方ネイバーのインデックスが、予測子リストから除去され得るか、または、リスト中で保たれるが、現在のインデックス予測のために無効としてマークされ得る。
[0200]上記で説明されたフラグが、現在のインデックスがインデックス予測子リストから予測可能ではないことを示す場合、インデックスは、ビットストリームから復号され得る。コードが、インデックスをコーディングするために使用され得る。コードの例は、ゴロム−ライスコード、指数ゴロムコード、単項コード、これらのコードの切捨てバージョン、または他の好適なコードを含み得る。いくつかの例では、調整プロセスが、インデックス値I、ならびに、最大実現可能インデックス値Mのために使用され得る(値Mは、コードワードの切捨てバージョンが使用される場合、使用され得る)。いくつかの例では、拡張リストは、隣接ベースの調整が適用可能ではない場合、インデックス予測子リストを示し得る。いくつかの例では,拡張リストは、隣接ベースの調整が適用可能である場合、インデックス予測子リストと参照隣接インデックスとをマージすることによって、インデックス予測子リストを示す。拡張リスト中に重複エントリがある場合、重複エントリのうちの1つのみが保たれる。最大実現可能インデックス値Mが、拡張リストサイズによって低減され得る。エンコーダ側で、インデックス値Iをコーディングするために、それらの値がIよりも小さい、拡張リスト中の数エントリによって、それが低減され得る。
[0201]いくつかの例では、実装を簡略化するために、動的範囲低減手順が緩められ得る。一例では、Mは、拡張予測子リストのサイズではなく、インデックス予測子リストのサイズによって減算され得る。この場合、予測子リストのサイズが一定(たとえば、上記で説明された定数T)である場合、最大実現可能インデックスが、パーシングの前にあらかじめ決定され得る。
[0202]上記で説明された技法を実装する一例では、ビデオエンコーダ20は、ビデオデータの符号化ブロックのためのパレットを生成する。パレットは、1つまたは複数のパレットエントリを含む。パレットエントリは、ビデオデータの符号化ブロックによって表されたビデオデータのブロックのピクセルのためのピクセル値を示す。ビデオエンコーダ20は、1つまたは複数のパレットエントリのための1つまたは複数のインデックス値を決定し、ビデオデータの符号化ブロックのためのシグナリング情報を送信する。シグナリング情報は、たとえば、パレットランタイプと、パレットランレングスと、1つまたは複数のインデックス値とを含む。パレットランタイプおよびパレットランレングスは、1つまたは複数のインデックス値の前にシグナリングされ得る。シグナリング情報は、インデックス値がインデックス予測子のリストを使用して予測可能であるか否かを示す、フラグをさらに含み得る。ビデオエンコーダ20は、ゴロム−ライスコーディング、指数ゴロムコーディング、単項コーディング、切捨てゴロム−ライスコーディング、切捨て指数ゴロムコーディング、または切捨て単項コーディングを使用して、1つまたは複数のインデックス値を決定し得る。
[0203]上記で説明された技法を実装する別の例では、ビデオデコーダ30は、ビデオデータの符号化ブロックを受信し、ビデオデータの符号化ブロックのためのパレットを取得する。パレットは、ビデオデータの符号化ブロックによって表されたビデオデータのブロックのピクセルのためのピクセル値を示す、1つまたは複数のパレットエントリを含む。ビデオデコーダ30は、ビデオデータの符号化ブロックのためのシグナリング情報を取得する。シグナリング情報は、パレットランタイプとパレットランレングスとを含む。ビデオデコーダ30は、パレットランレングスに基づいて、インデックス値を決定する。
[0204]一例では、ビデオデコーダ30は、インデックス値を決定するために使用するために、インデックス予測子のリストを決定する。インデックス予測子のリストは、1つまたは複数のインデックス値を含み、インデックス予測子のリストは、パレットランレングスがしきい値よりも大きいとき、インデックス値を決定するために使用され得る。ビデオデコーダ30は、インデックス予測子のリストを使用して、インデックス値を決定する。しきい値は、たとえば、0に等しくなり得る。ビデオデコーダ30は、1つまたは複数の前に復号されたインデックス値を使用して、インデックス予測子のリストを構築し得る。
[0205]1つまたは複数の前に復号されたインデックス値を使用して、インデックス予測子のリストを構築するために、ビデオデコーダ30は、たとえば、復号されたインデックス値が、インデックス予測子のリスト中に含まれる1つまたは複数の要素のいずれとも異なると決定し、復号されたインデックス値をインデックス予測子のリストに追加し得る。1つまたは複数の要素は、少なくとも1つの前に復号されたインデックス値を含み得る。1つまたは複数の前に復号されたインデックス値を使用して、インデックス予測子のリストを構築するために、含む、ビデオデコーダ30は、追加または代替として、復号されたインデックスのランレングスがしきい値よりも大きいと決定し、復号されたインデックスをインデックス予測子のリストに追加し得る。インデックス予測子のリスト中の1つまたは複数のインデックス値は、復号されたインデックス値またはパースされたインデックス値を含み得る。
[0206]いくつかの例では、シグナリング情報は、インデックス値がインデックス予測子のリストを使用して予測可能であるか否かを示す、フラグを含み得、ビデオデコーダ30は、フラグの値を決定し、フラグの値に基づいて、インデックス値がインデックス予測子のリストを使用して予測可能であると決定し得る。ビデオデコーダ30は、インデックス値を決定するために使用するために、インデックス予測子のリストからのエントリを示す、エントリ値を復号し得る。
[0207]いくつかの例では、領域IIに属するパレットインデックスが走査順序において連続的に現れるという規範的制限が、エンコーダに課せられる。たとえば、領域Iがパレットインデックス{0,1,2}を含んでおり、領域IIがパレットインデックス{3,4,5}を含んでおり、インデックス中の各値がインデックスであると仮定する。インデックス{0,1,2}にかかわらず、規範的制限は、インデックス3の最初の発生が{4,5}の前でなければならず、インデックス4の最初の発生が5の前でなければならないことを示す。
[0208]この段落では、ブロック中にエスケープピクセルがないと仮定される。切捨て2進コードを使用してパレットインデックスをコーディングするとき、2つの入力パラメータが使用される。第1の入力パラメータは、インデックス値自体であり、他方の入力パラメータは、最大実現可能インデックス値である。上記で提示された例示的な領域I({0,1,2})および領域IIインデックス({3,4,5})を使用すると、そのような最大実現可能インデックス値は、5であり得る。そのような例では、切捨て2進コードを使用して各インデックスをコーディングするコストは、2ビットと3ビットとの間である。いくつかの例では、上記で説明された規範的ビットストリーム制限が課せられる場合、ブロックの始めにおいて、デコーダがインデックスを復号することを開始するとき、5に等しい最大実現可能インデックス値を選定するのではなく、デコーダは、領域Iインデックス中の要素の数に等しくなるように、最大値を選定し得る。そのような例では、最大実現可能値は3であり得る。インデックスを復号した後、インデックスが最大実現可能値に等しい場合、最大実現可能値は、パレットサイズ−1に達するのでない限り、1だけ増加される(その例では、最大実現可能値は、5に達するとき、パレットサイズが6に等しくなるために、増加を停止する)。復号されたインデックスが、最大実現可能値に等しくない場合、最大実現可能値が不変のまま保たれる。
[0209]1つまたは複数のエスケープピクセルが現在ブロック中に存在する例では、エスケープピクセルは、現在のドラフト仕様におけるパレットサイズに等しい予約済みインデックスを使用してマークされる。いくつかの例では、エスケープピクセルは、ブロックのためのパレット中に含まれていないブロックのピクセルを含み得る。上記で説明された例では、インデックス6は、エスケープピクセルを表すために使用される。そのため、その例では、領域I={0,1,2}、領域II={3,4,5}、エスケープ={6}である。
[0210]いくつかの例では、上記で説明された規範的制限を使用するとき、エスケープピクセルは、領域Iのサイズに等しい予約済み値を使用してマークされ得る。上記で提示された例示的な領域I({0,1,2})および領域IIインデックス({3,4,5})を使用すると、エスケープピクセルは、インデックス3を使用してマークされる。この変更によって、領域II中のインデックスは、1だけ増加される。たとえば、領域IIは、インデックス{4,5,6}を含む。具体的には、領域I={0,1,2}、領域II={4,5,6}、エスケープ={3}である。この場合、デコーダがブロックを復号することを開始するとき、最大実現可能インデックスは、領域Iのサイズ+1に初期化され得る。その例では、初期最大実現可能インデックスは、(領域Iのサイズが3に等しいために)4になるように選定され得る。インデックスを復号した後、インデックスが最大実現可能値に等しい場合、最大実現可能値は、パレットサイズに達するのでない限り、1だけ増加される(その例では、最大実現可能値は、6に達するとき、増加を停止する)。復号されたインデックスが、最大実現可能値に等しくない場合、最大実現可能値が不変のまま保たれる。
[0211]いくつかの例では、切捨て単項コード、切捨て指数ゴロムコード、または切捨てゴロム−ライスコード、またはそれらの組合せなど、切捨て2進コード以外の切捨てコードも、同様にインデックスをコーディングするために使用され得る。
[0212]パレットモードのいくつかの事例では、パレットランがcopy aboveラン(またはモード)であるか、インデックスコピーラン(またはモード)であるかを指定する、パレットランタイプ(たとえば、パレットランタイプフラグ、またはパレットランモードフラグ)が最初にシグナリングされ、その後、タイプがインデックスコピーモードまたはランである場合、インデックス値が続き得る。そのような事例では、ビットストリーム中の全体的なビットは、以下のようになり得る。
copy aboveモードの場合:’1’
copy leftモードの場合:’0’+インデックス
[0213]インデックスは、両端値を含めて、0からしきい値Tまで選択され得る。一例では、Tは、エスケープピクセルがない場合、パレットサイズから1を引いたもの(パレットサイズ−1)に等しくなるように選択され得る。別の例では、Tは、エスケープピクセルが存在し得る場合、パレットサイズに等しくなるように選択され得る。これらの2つの例を表すために、1つまたは複数の統合されたコードワードを使用するための例が、本明細書で説明される。いくつかの例では、copy aboveモードは、T+1に等しい予約済みインデックスを割り振られ得る。
[0214]いくつかの例では、デコーダ側で、パレットランモードフラグまたはタイプフラグがない場合がある。たとえば、デコーダは、最初にインデックスコードワードを復号し得る。復号されたインデックスコードワードが、予約済みインデックス(たとえば、T+1)に等しい場合、現在のランは、copy aboveラン(またはモード)であると決定される。復号されたインデックスコードワードが、予約済みインデックス(たとえば、T+1)に等しくない場合、現在のランは、インデックスコピーラン(またはモード)であると決定される。
[0215]いくつかの例では、copy aboveランモードのために予約されたインデックスコードワードは、エンコーダとデコーダの両方によって知られているか、または推論される、1つまたは複数の所定の値であり得る。いくつかの例では、copy aboveランモードのために予約されたインデックスコードワードは、ブロックサイズ、パレットサイズ、エスケープピクセルの存在、ブロック中のインデックスの数、量子化ステップなどに基づいて、適応的に選択され得る。
[0216]いくつかの例では、統合されたインデックス(たとえば、1つまたは複数の統合されたコードワード)をコーディングするために、単項コード、ゴロムコード、2進コード、これらのコードの切捨てバージョン、それらの組合せ、または他の好適なコードが使用され得る。
[0217]上記で説明された技法を実装する一例では、ビデオエンコーダ20は、ビデオデータのブロックのためのパレットを生成する。パレットは、1つまたは複数のパレットエントリを含み、パレットエントリは、ビデオデータのブロックのピクセルのためのピクセル値を示す。ビデオエンコーダ20は、1つまたは複数のパレットエントリのための1つまたは複数のインデックス値を決定する。1つまたは複数のインデックス値のうちの少なくとも1つのインデックス値は、パレットの第1の領域と、パレットの第2の領域に属する1つまたは複数のインデックス値のうちの少なくとも1つの他のインデックス値とに属する。ビデオエンコーダ20は、制限に従って、インデックス値を連続的な走査順序においてパレットの第2の領域に割り当て、制限は、インデックス値が連続的な走査順序において第2の領域中に現れるべきであることを示す。制限は、たとえば、インデックス値の最初の発生が、連続的な走査順序において第2の領域中に現れるべきであることを示し得る。
[0218]いくつかの例では、ビデオデータのブロックは、エスケープピクセルを含まないが、他の例では、ビデオデータのブロックは、1つまたは複数のエスケープピクセルを含み得る。ビデオエンコーダ20は、切捨て2進コーディング、切捨て単項コーディング、切捨て指数ゴロムコーディング、または切捨てゴロム−ライスコーディングを使用して、1つまたは複数のインデックス値を決定し得る。
[0219]上記で説明された技法を実装する別の例では、ビデオデコーダ30は、符号化ビデオブロックを受信し、符号化ビデオブロックのためのパレットを取得する。パレットは、1つまたは複数のパレットエントリを含み、パレットエントリは、符号化ビデオブロックによって表されたビデオデータのブロックのピクセルのためのピクセル値を示す。ビデオデコーダ30は、1つまたは複数のパレットエントリのための1つまたは複数のインデックス値を復号する。1つまたは複数のインデックス値のうちの少なくとも1つのインデックス値は、パレットの第1の領域に属し、1つまたは複数のインデックス値のうちの少なくとも1つの他のインデックス値は、パレットの第2の領域に属する。第2の領域のインデックス値は、インデックス値が連続的な走査順序において第2の領域中に現れるべきであることを示す制限に従って、連続的な走査順序においてコーディングされる。ビデオデコーダ30は、パレットと1つまたは複数のインデックス値とを使用して、ビデオデータのブロックのピクセルのためのピクセル値を決定する。制限は、たとえば、インデックス値の最初の発生が、連続的な走査順序において第2の領域中に現れるべきであることを示し得る。ビデオデコーダ30は、切捨て2進コーディング、切捨て単項コーディング、切捨て指数ゴロムコーディング、または切捨てゴロム−ライスコーディングを使用して、1つまたは複数のインデックス値を復号し得る。
[0220]いくつかの例では、ビデオデータのブロックは、エスケープピクセルを含んでいない。ビデオデコーダ30はまた、第1の領域中のインデックス値の数になるように、最大実現可能インデックス値を選択し得る。ビデオデコーダ30は、インデックス値を復号し、復号されたインデックス値が最大実現可能値に等しいと決定し得る。ビデオデコーダ30は、復号されたインデックス値が最大実現可能値に等しいとき、最大実現可能インデックス値を1だけ増加させ得る。いくつかの例では、ビデオデコーダ30は、復号されたインデックス値がパレット中のインデックス値の数−1に等しいとき、最大実現可能インデックス値を増加させなくてよい。
[0221]いくつかの例では、ビデオデータのブロックは、1つまたは複数のエスケープピクセルを含む。エスケープピクセルは、第1の領域中のインデックス値の数に等しい予約済み値を使用して、インデックス付けされ得る。ビデオデコーダ30は、第1の領域中のインデックス値の数+1になるように、最大実現可能インデックス値を選択し得る。ビデオデコーダ30は、インデックス値を復号し、復号されたインデックス値が最大実現可能値に等しいと決定し得る。ビデオデコーダ30は、復号されたインデックス値が最大実現可能値に等しいとき、最大実現可能インデックス値を1だけ増加させ得る。いくつかの例では、復号されたインデックス値がパレット中のインデックス値の数に等しいとき、最大実現可能インデックス値が増加されない。
[0222]現在のSCCテキスト仕様およびテストモデルでは、パレットモードを使用してブロックがコーディングされる場合、ブロック中のサンプルのためのパレットインデックスは、ランコーディングを使用してコーディングされる。単項コードと次数0の指数ゴロムコードとの連結の切捨てバージョンが、個々のランをコーディングするために使用される。6の切捨て値(最大値)のために使用されるコードの一例が、表8において以下で示されている。表8はまた、対応する非切捨てコードを示している。ラン値4、5、および6では、プレフィックスとサフィックスの両方が切り捨てられることに留意されたい。プレフィックスでは、切捨て単項コードが使用される。したがって、ラン値4、5、および6では、プレフィックスとして0001を使用するのではなく、プレフィックス000を使用することで十分である。サフィックスでは、切捨て2進コードが使用される。これは、4のラン値では1ビットプレフィックスと、5および6のラン値では2ビットプレフィックスとを生じる。また、タイプ0001(ゼロの後に1が続く)のプレフィックスを使用するのではなく、我々は、等価なコードを作成するために、1110(1の後に0が続く)を使用した可能性がある。
Figure 2018520562
[0223]切捨て値T≧2が与えられれば、2k≦T<2k+1であるように、kを決定することが必要である。次いで、最高の単項プレフィックスは、(k+1)個の0からなる。所与のラン値xでは、プレフィックスが最高の可能な(k+1個の0)である場合、サフィックスは、(T−2k)の最大可能値をもつ、(x−2k)のための切捨て2進コードである。切捨て2進コードを符号化および復号するために、いくつかのさらなる計算が必要である。
[0224]HEVC SCCドラフト仕様において現在使用されている切捨てラン2値化では、ランがブロックの最後まで継続する場合、切捨て値は、最大可能ラン値である。現在のサンプルのためのトラバース走査インデックスがnであり、ブロック中のサンプルの数がpである場合、最大可能ラン値は、(p−1−n)である。したがって、切捨て値は、各ランとともに変化する。これは、各ランについて、kと、(サフィックスのための)切捨て2進コードとを再計算することを必要とし、それは望ましくないことがある。たとえば、kと切捨て2進コードとの再計算は、ランコーディングの複雑さを増すことがある。
[0225]本開示は、ランコーディングの複雑さを低減するための技法を提示する。本開示で提案された技法または態様のいずれも、個別に、あるいは他の技法のうちの1つまたは複数と組み合わせて適用され得る。
[0226]本開示の1つまたは複数の技法によれば、ビデオコーダは、各パレットブロックのための最大ラン値をコーディングし得る。たとえば、各パレットブロックについて、そのブロックのための最大ラン値が、エンコーダによってビットストリーム中で明示的にコーディング(シグナリング)され、デコーダによって受信され得る。次いで、この値が、トラバース走査における現在のサンプルの位置に基づいて切捨て値を使用する代わりに、ランコーディングのための切捨て値として使用され得る。いくつかの例では、最大ラン値は、ビットストリーム中で実際にシグナリングされる任意のラン値以上であるべきである。いくつかの例では、last_run_type_flagが、ラン値を送る前に送られ得、最後のラン値は、ビットストリーム中で決して明示的にシグナリングされなくてよい。
[0227]最大ラン値は、固定長コード、単項コード、指数ゴロムコード、ゴロム−ライスコード、ゴロム−ライスコードと指数ゴロムコードとの連結を使用して、コーディングされ得る。これらのコードの切捨てバージョン、または切捨て2進コードは、(p−1)の最大可能(切捨て)値に基づいて使用され得、ただし、pは、ブロック中のサンプルの数である。
[0228]いくつかの例では、ブロック全体のための最大ラン値をコーディングするのではなく、インデックスがINDEX_THRESHOLD以上であるとき、COPY_INDEX_MODEに対応する最大ラン値がシグナリングされ得る。そのような例のいくつかでは、ランがCOPY_ABOVE_MODEに対応する場合、または、ランがCOPY_INDEX_MODEに対応し、対応するインデックスがINDEX_THRESHOLD未満である場合、(p−1)の切捨て値が使用され得、ただし、pは、ブロック中のサンプルの数である。切捨て値として(p−1)を使用するのではなく、表8に示されているようなコードの非切捨てバージョンが使用され得る。
[0229]いくつかの例では、ランがCOPY_INDEX_MODEに対応し、対応するインデックスがINDEX_THRESHOLD以上である場合、シグナリングされた最大ラン値が、切捨て値として使用され得る。INDEX_THRESHOLDは、エンコーダとデコーダの両方に知られ得るか、または、たとえば、VPS、SPS、PPS、スライスヘッダなどにおいて、ビットストリーム中で送られ得る。
[0230]いくつかの例では、そのような最大ラン値がビットストリーム中でシグナリングされるか否かを示すために、フラグがパレットブロックレベルにおいて送られ得る。フラグが0である場合、最大ラン値は、ビットストリーム中でシグナリングされなくてよい。この場合、(p−1)の切捨て値は、すべてのコード化ランのために使用され得、ただし、pは、ブロック中のサンプルの数である。いくつかの例では、表8に示されているようなコードの非切捨てバージョンが使用され得る。フラグが1である場合、上記で説明されたシグナリング戦略が後続され得る。フラグは、バイパスモードでコンテキストコーディングまたはコーディングされ得る。
[0231]各パレットブロックのための最大ラン値をコーディングすることは、1つまたは複数の利点を提示し得る。たとえば、各パレットブロックのための最大ラン値をコーディングすることによって、1つまたは2つの切捨て値のみがブロックごとに使用され得、それはランコーディングを簡略化し得る。
[0232]いくつかの例では、ラン2値化は(場合によっては、非切捨てバージョンを使用することを除いて)不変であり得、異なる切捨て値(サンプル位置に依存しない)のみが使用され得る。
[0233]本開示の1つまたは複数の技法によれば、limit_run_indexなどのインデックス値が、各パレットブロックのためにシグナリングされ得る。limit_run_indexは、対応するインデックス値がlimit_run_index以上であり、コード化ラン値がRUN_THRESHOLD以下であるところの、COPY_INDEX_MODEに対応するランについて、それを示し得る。したがって、この場合、COPY_ABOVE_MODEに対応するランでは、および、limit_run_index未満の対応するインデックス値をもつCOPY_INDEX_MODEに対応するランでは、(p−1)の切捨て値が、ランをコーディングするために使用され得、ただし、pは、ブロック中のサンプルの数である。いくつかの例では、表8に示されているようなコードの非切捨てバージョンが使用され得る。
[0234]ランがCOPY_INDEX_MODEに対応し、対応するインデックスがlimit_index_run以上である場合など、いくつかの例では、パレットランコーディングが、RUN_THRESHOLDに等しく設定された切捨て値とともに呼び出され得る。RUN_THRESHOLDは、エンコーダとデコーダの両方に知られ得るか、または、たとえば、VPS、SPS、PPS、スライスヘッダなどにおいて、ビットストリーム中で送られ得る。
[0235]いくつかの例では、limit_run_index値は、固定長コード、単項コード、指数ゴロムコード、ゴロム−ライスコード、ゴロム−ライスコードと指数ゴロムコードとの連結を使用して、コーディングされ得る。これらのコードの切捨てバージョン、または切捨て2進コードは、palette_esc_val_present_flagが1であるとき、エスケープ値に割り振られた余分のインデックスを検討した後、パレットインデックスのための最大可能値に等しい切捨て値に基づいて使用され得る。
[0236]いくつかの例では、limit_run_indexは、(palette_esc_val_present_flagが1であるとき、エスケープシンボルを表すために余分のインデックスを考慮した後の)パレットサイズがINDEX_THRESHOLD_2よりも大きいときのみ、シグナリングされ得る。limit_run_indexが、パレットコード化ブロックのためにシグナリグされないとき、(p−1)の切捨て値は、ランをコーディングするために使用され得、ただし、pは、ブロック中のサンプルの数である。いくつかの例では、表8に示されているようなコードの非切捨てバージョンが使用され得る。いくつかの例では、INDEX_THRESHOLD_2は、エンコーダとデコーダの両方に知られ得るか、または、たとえば、VPS、SPS、PPS、スライスヘッダなどにおいて、ビットストリーム中で送られ得る。
[0237]いくつかの例では、limit_run_indexがビットストリーム中でシグナリングされるか否かを示すために、フラグがパレットブロックレベルにおいて送られ得る。フラグが0である場合、limit_run_indexは、ビットストリーム中でシグナリングされなくてよい。そのような例のうちのいくつかでは、(p−1)の切捨て値は、すべてのコード化ランのために使用され得、ただし、pは、ブロック中のサンプルの数である。いくつかの例では、表8に示されているようなコードの非切捨てバージョンが使用され得る。フラグが1である場合、上記で説明されたシグナリング戦略が後続され得る。フラグは、バイパスモードでコンテキストコーディングまたはコーディングされ得る。フラグは、このセクションで説明された2つの例のいずれかとともに使用され得る。
[0238]各パレットブロックのためのインデックス値をコーディングすることは、1つまたは複数の利点を提示し得る。たとえば、各パレットブロックのためのインデックス値をコーディングすることによって、1つまたは2つの切捨て値のみがブロックごとに使用され得、それはランコーディングを簡略化し得る。
[0239]いくつかの例では、ラン2値化は(場合によっては、非切捨てバージョンを使用することを除いて)不変であり得、異なる切捨て値(サンプル位置に依存しない)のみが使用され得る。
[0240]Sunら「CE1−related:Harmonization between JCTVC−T0065 Non CE1:Grouping Palette Indices At Front and CE1 Test A.1.5」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11とのジョイントコラボレーティブチームオンビデオコーディング(JCT−VC)、第20回会合:ジュネーブ、スイス、2015年2月10〜18日、JCTVC−T0233では、パレットブロックの外部からの値のコピーと、ブロックの始めにおけるインデックスのグルーピングとの組合せが説明された。この組合せでは、ブロック中のサンプルのためのパレットインデックスについての情報が、以下の順序でコーディングされる。
1.コーディングされるべきパレットインデックスの数(num_palette_indices_idc)
2.実際のパレットインデックス(palette_index_idc)
3.last_palette_run_type_flag
4.ブロック全体のためのパレットサンプルモード(COPY_ABOVE_MODEおよびCOPY_INDEX_MODE)
5.ブロック全体のためのラン値
[0241]2つ以上のラン値が、プレフィックスとサフィックスとからなる。最大5つのプレフィックスビンが、コンテキストコーディングされる。残りのプレフィックスビンおよびすべてのサフィックスビンは、バイパスコーディングされる。バイパスビンのグループ化は、CABACスループットを高め得る。しかしながら、切捨てランコーディングのために、次のランのための切捨て値は、現在のランが十分に復号される(プレフィックスならびにサフィックス)まで、知られない。これは、次のランの開始の位置を計算するために、現在のランの厳密な値を知ることが必要であり、それが望ましくないことがあるからである。この限定は、次のように克服され得る。
[0242]本開示の1つまたは複数の技法によれば、現在のHEVC SCCテキスト仕様およびテストモデルにおける切捨てランコーディングは、上記で説明された技法のうちの1つによって置き換えられる。一例として、現在のHEVC SCCテキスト仕様およびテストモデルにおける切捨てランコーディングは、各ブロックのための最大ラン値をコーディングすることによって置き換えられ得る。別の例として、現在のHEVC SCCテキスト仕様およびテストモデルにおける切捨てランコーディングは、各ブロックのためのインデックス値をコーディングすることによって置き換えられ得る。このようにして、トラバースにおけるサンプル位置上のランコーディングの依存性が除去され得る。また、ブロック中のすべてのサンプルのためのパレットサンプルモードがすでにコーディングされているので、コード化ランの数も同様に知られ得る。このために、コーディングされるべきラン値のプレフィックスのすべてが、一緒にグループ化され得る。これは、コーディングされるべきラン値のすべてのサフィックスのグループ化によって後続され得る。
[0243]本明細書で説明された技法を実装する一例では、ビデオコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)は、ビデオデータの現在ブロックのために、およびコード化ビデオビットストリーム中で、現在ブロックのために使用される最大ラン値を示すシンタックス要素をコーディングし、ビデオデータの現在ブロックのために、切捨て値として最大ラン値を使用して、ラン値をコーディングし得る。シンタックス要素をコーディングするために、ビデオコーダは、固定長コード、単項コード、指数ゴロムコード、ゴロム−ライスコード、またはゴロム−ライスコードと指数ゴロムコードとの連結を使用して、シンタックス要素をコーディングし得る。ビデオコーダは、シンタックス要素がビットストリーム中に存在するか否かを示すフラグをコーディングし得る。
[0244]上記で説明された技法を実装する別の例では、ビデオコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)は、ビデオデータの現在ブロックのために、およびコード化ビデオビットストリーム中で、現在ブロックのラン値をコーディングするために使用されるインデックス値を示すシンタックス要素をコーディングし得る。ビデオコーダは、ランしきい値に等しい第1の切捨て値に基づいて、コピーインデックスモードに対応し、シンタックス要素によって示されたインデックス値以上である対応するインデックス値を有する、現在ブロックのラン値をコーディングし得る。ビデオコーダは、現在ブロック中のサンプルの数に基づく第2の切捨て値に基づいて、copy aboveモードに対応し、シンタックス要素によって示されたインデックス値未満である対応するインデックス値を有する、現在ブロックのラン値をコーディングし得る。
[0245]ビデオコーダは、固定長コード、単項コード、指数ゴロムコード、ゴロム−ライスコード、またはゴロム−ライスコードと指数ゴロムコードとの連結を使用して、シンタックス要素をコーディングし得る。シンタックス要素は、たとえば、limit_runインデックスシンタックス要素であり得る。現在ブロック中のサンプルの数に基づく切捨て値は、たとえば、現在ブロック中のサンプルの数未満のものであり得る。ランしきい値は、コード化ビデオビットストリーム中でコーディングされ得るか、あらかじめ決定され得るか、または何らかの他の方法で決定され得る。ビデオコーダは、現在ブロックのためのパレットサイズがパレットサイズしきい値よりも大きいことに応答して、シンタックス要素をコーディングし得る。
[0246]現在のSCCテキスト仕様およびテストモデル(JCTVC−T1005−v2)では、パレットブロック中のサンプルのためのパレットインデックス情報が、以下の順序で送られる。
1.コード化インデックスの数(num_palette_indices_idc)
2.COPY_INDEX_MODEに対応するパレットインデックス(palette_index_idc)
3.last_palette_run_type_flag
4.ランタイプ(last_run_type_flag)
5.ラン値
6.エスケープサンプル値
[0247]ランタイプおよびラン値は、インターリーブされる。この場合、すべてのインデックスが、前方でグループ化され、切捨て2進コーディングを使用してコーディングされる。パレットインデックスコーディングのための切捨て値は、次のように導出されるMaxPaletteIndexである。
CurrentPaletteSize=NumPredictedPaletteEntries+num_signalled_palette_entries
Figure 2018520562
[0248]上記の順序は、インデックス情報が(たとえば、ラン値の後であるが、エスケープサンプル値の前に)ブロックの最後に向かってグループ化されるように変更され、または、ランタイプ、ラン値、およびパレットインデックスが、パレットインデックスがラン値の後でシグナリングされるようにインターリーブされる場合、パレットインデックスをシグナリングするコーディング効率を改善することが可能であり得る。パレットインデックスがこのモードのためにのみコーディングされる必要があるので、これらの方法は、ランタイプ(または、パレットサンプルモード)がCOPY_INDEX_MODEであるときのみ適用可能であることに留意されたい。
[0249]パレットインデックスが、対応するラン値の後でシグナリングされる(インターリーブされるか、またはブロックの最後でグループ化されるかのいずれかの)とき、我々は、対応するラン値に基づいて、パレットインデックスのコーディングの改善を提案する。本開示で提案された方法または態様のいずれも、個別に、または、互いともしくは既存の方法と組み合わせて適用され得る。
[0250]本開示の1つの例示的な技法では、ランがRUN_THRESHOLD以上であるときに発生する、最大パレットインデックス値を指定するために、パレットブロックのためのブロックレベルにおいてシンタックス要素を、ビデオエンコーダ20はシグナリングし得、ビデオデコーダ30は受信し得る。そのような値がMaxPaletteInexRestrictedによって示されるとする。次いで、ラン値がRUN_THRESHOLD以上であるとき、インデックスをコーディングするために、MaxPaletteInexRestrictedの切捨て値とともに、切捨て2進コーディングが呼び出される。ラン値がRUN_THRESHOLD未満である場合、maxPaletteIndexの切捨て値とともに、切捨て2進コーディングが呼び出される。MaxPaletteIndexRestrictedは、常にMaxPaletteIndex以下であるので、これは、インデックスコーディングのためのビット節約を生じ得る。例示的な一実装形態では、1に等しいRUN_THRESHOLD値が使用され得る。
[0251]RUN_THRESHOLDは、エンコーダとデコーダの両方に知られ得るか、または、たとえば、VPS、SPS、PPS、スライスヘッダなどにおいて、ビットストリーム中で送られ得る。
[0252]MaxPaletteIndexRestrictedは、固定長コード、単項コード、指数ゴロムコード、ゴロム−ライスコード、ゴロム−ライスコードと指数ゴロムコードとの連結を使用して、直接コーディングされ得る。これらのコードの切捨てバージョン、または切捨て2進コードは、MaxPaletteIndexに等しい切捨て値に基づいて使用され得る。
[0253]MaxPaletteIndexRestrictedを直接コーディングする代わりに、MaxPaletteIndexRestrictedは、MaxPaletteIndexに対して予測コーディングされ得る。例示的な一実装形態では、シンボルS=(MaxPaletteIndex−MaxPaletteIndexRestricted)がコーディングされる。それは、固定長コード、単項コード、指数ゴロムコード、ゴロム−ライスコード、ゴロム−ライスコードと指数ゴロムコードとの連結を使用して、コーディングされ得る。これらのコードの切捨てバージョン、または切捨て2進コードは、MaxPaletteIndexに等しい切捨て値に基づいて使用され得る。例示的な一実装形態では、次数0の切捨て指数コード(切捨てEG0)が使用される。さらに、ソースシンボルは、次のように再配列される。シンボル、(MaxPaletteIndex−MaxPaletteIndexRestricted)が、0または1に等しい場合、シンボルは、それぞれ0および1にマッピングされる。シンボルSがMaxPaletteIndexに等しい場合、シンボルSは2にマッピングされる。これに適応するために、2から(MaxPaletteIndex−1)までのシンボルは、1だけインクリメントされる。例示的な一実装形態では、シンボルSがMaxPaletteIndex−1に等しい場合、シンボルSは2にマッピングされる。これに適応するために、2から(MaxPaletteIndex−2)までのシンボルは、1だけインクリメントされる。
[0254]本開示の別の技法によれば、フラグは、ランがRUN_THRESHOLD以上であるとき、そのような最大パレットインデックス値がシグナリングされるか否かを示すために、ブロックレベルでシグナリングされ得る。フラグが0である場合、フラグは、MaxPaletteInexRestrictedがMaxPaletteInexに等しいことを示す。この場合、すべてのインデックスが、MaxPaletteIndexの切捨て値とともに切捨て2進コーディングを使用してコーディングされる。そうでない場合、MaxPaletteIndexRestrictedがエンコーダによってシグナリングされ、デコーダによって受信され、それがMaxPaletteIndex未満であることが推論され得る。この場合、(MaxPaletteIndex−MaxPaletteIndexRestricted−1)がシグナリングされ得る。フラグは、コンテキストコーディングまたはバイパスコーディングされ得る。
[0255](MaxPaletteIndex−MaxPaletteIndexRestricted)が、切捨てEG0、またはEG0、または、シンボルが非0であるか否かを第1のビンが示す任意の他のコードを使用してコーディングされるとき、これは、上記で説明されたように、フラグを送ることと等価であることに留意されたい。
[0256]本開示の別の技法によれば、ブロックレベルフラグは、ランがRUN_THRESHOLD以上であるとき、パレットインデックスがコーディングされず、0に推論されることを示すために、シグナリングされる。したがって、フラグが0であるとき、すべてのインデックスが、MaxPaletteIndexの切捨て値とともに切捨て2進コーディングを使用してコーディングされる。同様に、フラグが1であり、ランがRUN_THRESHOLD未満であるとき、インデックスはまた、MaxPaletteIndexの切捨て値とともに切捨て2進コーディングを使用してコーディングされる。フラグが1であり、ランがRUN_THRESHOLD以上であるとき、インデックスはコーディングされないが、0であると推論される。
[0257]RUN_THRESHOLDは、エンコーダとデコーダの両方に知られ得るか、または、たとえば、VPS、SPS、PPS、スライスヘッダなどにおいて、ビットストリーム中で送られ得る。
[0258](MaxPaletteIndex−MaxPaletteIndexRestricted)の第1のビンまたは最初のいくつかのビンは、複数のCABACコンテストを使用してコーディングされ得る。コンテキストは、パレットサイズ、および/またはMaxPaletteIndex、およびまたはブロックサイズ、およびまたはインデックスの数、および/またはランの数、および/またはcopy aboveランの数、および/またはインデックスコピーランの数に依存し得る。
[0259]本開示の別の技法によれば、シンタックス要素limit_run_valueは、ランがlimit_run_value以上である場合、最大可能インデックス値がINDEX_THRESHOLD以下であることを示すために、シグナリングされる。ブロックのためのMaxPaletteIndexがINDEX_THRESHOLD以下である場合、limit_run_valueがコーディングされない。この場合、すべてのインデックスが、MaxPaletteInexの切捨て値とともに切捨て2進コーディングを使用してコーディングされる。そうでない場合、limit_run_valueがシグナリングされる。この場合、ランがlimit_run_value以上である場合、インデックスは、INDEX_THRESHOLDの切捨て値とともに切捨て2進コーディングを使用してコーディングされる。ランがlimit_run_value未満である場合、インデックスは、MaxPaletteInexの切捨て値とともに切捨て2進コーディングを使用してコーディングされる。
[0260]INDEX_THRESHOLDは、エンコーダとデコーダの両方に知られ得るか、または、たとえば、VPS、SPS、PPS、スライスヘッダなどにおいて、ビットストリーム中で送られ得る。シンタックス要素「limit_run_value」は、固定長コード、単項コード、指数ゴロムコード、ゴロム−ライスコード、またはゴロム−ライスコードと指数ゴロムコードとの連結を使用して、コーディングされ得る。これらのコードの切捨てバージョン、または切捨て2進コードは、ブロックサイズ−1に等しい切捨て値に基づいて使用され得る。
[0261]ブロックのためのMaxPaletteIndexがINDEX_THRESHOLDよりも大きいとき、ブロックレベルフラグは、limit_run_valueがコーディングされるか否かを示すためにシグナリングされ得る。それがコーディングされない場合、すべてのインデックスが、MaxPaletteInexの切捨て値とともに切捨て2進コーディングを使用してコーディングされる。フラグが1である場合、limit_run_valueがコーディングされ、インデックスコーディングが、上記で説明された技法に従って実施される。
[0262]上記で説明された技法を実装する一例では、ビデオコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)は、ビデオデータのブロックがパレットモードを使用してコーディングされると決定し、第1の最大パレットインデックス値を決定し得る。ビデオコーダは、第2の最大パレットインデックス値を決定し得る。第2の最大パレットインデックス値は、ランがランしきい値以上であるときのための最大パレットインデックス値であり得、第2の最大パレットインデックス値は、第1の最大パレットインデックス値未満であり得る。ラン値がランしきい値以上であることに応答して、ビデオコーダは、第2の最大パレットインデックス値に等しい切捨て値とともに切捨て2進コーディングを使用して、インデックス値をコーディングし得る。ビデオコーダはまた、ラン値がランしきい値未満であることに応答して、第1の最大パレットインデックス値に等しい切捨て値とともに切捨て2進コーディングを使用して、インデックス値をコーディングし得る。第1の最大パレットインデックス値は、第2の最大パレットインデックス値の予測であり得る。第2の最大パレットインデックス値を決定するために、ビデオコーダ(ビデオ復号を実施中の場合)は、第2の最大パレットインデックス値を示すブロックレベルシグナリングを受信し得る。
[0263]ビデオコーダは、たとえば、シグナリング情報を送信すること、またはシグナリング情報を受信することによって、たとえば、VPS、SPS、PPS、またはスライスヘッダのうちの1つまたは複数において、ランしきい値をシグナリングし得る。ランしきい値は、代替的に、ビデオCODECによって定義され得る。
[0264]第2の最大パレットインデックス値を決定するために、ビデオコーダは、第2の最大パレットインデックス値の指示をシグナリングし得る。指示は、たとえば、固定長コーディング、単項コーディング、指数ゴロムコーディング、ゴロム−ライスコーディング、または、ゴロム−ライスコードと指数ゴロムコードとの連結のうちの1つまたは複数を使用してコーディングされ得る。指示はまた、上記のコーディング技法の切捨てバージョン、または切捨て2進コーディングを使用してコーディングされ得る。切捨て値は、第1の最大パレットインデックス値に等しくなり得る。
[0265]第2の最大パレットインデックス値を決定するために、ビデオコーダは、第2の最大パレットインデックス値を予測し、予測と第2の最大パレットインデックス値との間の差分をシグナリングし得る。ビデオコーダは、固定長コーディング、単項コーディング、指数ゴロムコーディング、ゴロム−ライスコーディング、または、ゴロム−ライスコードと指数ゴロムコードとの連結のうちの1つまたは複数を使用して、差分をコーディングし得る。差分はまた、上記で具陳されたコーディング技法の切捨てバージョン、または切捨て2進コーディングを使用してコーディングされ得る。切捨て値は、第1の最大パレットインデックス値に等しくなり得る。
[0266]上記で説明された技法を実装する別の例では、ビデオコーダは、ビデオデータのブロックがパレットモードを使用してコーディングされると決定し、ビデオデータのブロックのための最大パレットインデックス値を決定する。ビデオコーダは、インデックスしきい値を決定し、第1の最大パレットインデックス値がインデックスしきい値よりも大きいことに応答して、ラン限界値を決定する。ラン値がラン限界値以上であることに応答して、ビデオコーダは、インデックスしきい値に等しい切捨て値とともに切捨て2進コーディングを使用して、インデックス値をコーディングする。ビデオコーダは、たとえば、シグナリング情報を送信すること、またはシグナリング情報を受信することによって、たとえば、VPS、SPS、PPS、またはスライスヘッダのうちの1つまたは複数において、ランしきい値をシグナリングし得る。ランしきい値は、代替的に、ビデオCODECによって定義され得る。
[0267]第1の最大パレットインデックス値がインデックスしきい値以下であることに応答して、ビデオコーダは、最大パレットインデックス値に等しい切捨て値とともに切捨て2進コーディングを使用して、インデックス値をコーディングし得る。第2の最大パレットインデックス値を決定するために、ビデオコーダは、第2の最大パレットインデックス値の指示をシグナリングし得る。指示は、たとえば、固定長コーディング、単項コーディング、指数ゴロムコーディング、ゴロム−ライスコーディング、または、ゴロム−ライスコードと指数ゴロムコードとの連結のうちの1つまたは複数を使用してコーディングされ得る。指示はまた、上記のコーディング技法の切捨てバージョン、または切捨て2進コーディングを使用してコーディングされ得る。切捨て値は、第1の最大パレットインデックス値に等しくなり得る。
[0268]図5は、本開示の技法を実装し得る例示的なビデオエンコーダ20を示すブロック図である。図5は、説明の目的で与えられており、本開示で広く例示され、説明される技法を限定するものと見なされるべきではない。説明の目的で、本開示は、HEVCコーディングのコンテキストにおいてビデオエンコーダ20について説明する。ただし、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
[0269]ビデオエンコーダ20は、本開示で説明される様々な例に従ってパレットベースビデオコーディングのための技法を実施するように構成され得るデバイスの一例を表す。
[0270]図5の例では、ビデオエンコーダ20は、予測処理ユニット300と、ビデオデータメモリ301と、残差生成ユニット302と、変換処理ユニット304と、量子化ユニット306と、逆量子化ユニット308と、逆変換処理ユニット310と、再構築ユニット312と、フィルタユニット314と、復号ピクチャバッファ316と、エントロピー符号化ユニット318とを含む。予測処理ユニット300は、インター予測処理ユニット320と、イントラ予測処理ユニット326とを含む。インター予測処理ユニット320は、動き推定ユニットと、動き補償ユニットとを含む(図示せず)。ビデオエンコーダ20はまた、本開示で説明されるパレットベースコーディング技法の様々な態様を実施するように構成された、パレットベース符号化ユニット322を含む。他の例では、ビデオエンコーダ20は、より多数の、より少数の、または異なる機能構成要素を含み得る。
[0271]ビデオデータメモリ301は、ビデオエンコーダ20の構成要素によって符号化されるべきビデオデータを記憶するように構成され得る。ビデオデータメモリ301に記憶されたビデオデータは、たとえば、ビデオソース18から取得され得る。復号ピクチャバッファ316は、たとえば、イントラコーディングモードまたはインターコーディングモードでビデオエンコーダ20によってビデオデータを符号化する際に使用するための、参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ301および復号ピクチャバッファ316は、同期DRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗性RAM(RRAM(登録商標))、または他のタイプのメモリデバイスなど、様々なメモリデバイスのうちのいずれかによって形成され得る。ビデオデータメモリ301および復号ピクチャバッファ316は、同じメモリデバイスまたは別個のメモリデバイスによって与えられ得る。様々な例では、ビデオデータメモリ301は、ビデオエンコーダ20の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
[0272]ビデオエンコーダ20は、ビデオデータを受信する。ビデオエンコーダ20は、ビデオデータのピクチャのスライス中の各CTUを符号化し得る。CTUの各々は、ピクチャの等しいサイズのルーマコーディングツリーブロック(CTB)と、対応するCTBとに関連付けられ得る。CTUを符号化することの一部として、予測処理ユニット300は、CTUのCTBを徐々により小さいブロックに分割するために4分木区分を実施し得る。より小さいブロックは、CUのコーディングブロックであり得る。たとえば、予測処理ユニット300は、CTUに関連付けられたCTBを4つの等しいサイズのサブブロックに区分し、サブブロックのうちの1つまたは複数を4つの等しいサイズのサブサブブロックに区分し得、以下同様である。
[0273]ビデオエンコーダ20は、CUの符号化された表現(すなわち、コード化CU)を生成するために、CTUのCUを符号化し得る。CUを符号化することの一部として、予測処理ユニット300は、CUの1つまたは複数のPUの間でCUに関連付けられたコーディングブロックを区分し得る。したがって、各PUは、ルーマ予測ブロックと、対応するクロマ予測ブロックとに関連付けられ得る。ビデオエンコーダ20およびビデオデコーダ30は、様々なサイズを有するPUをサポートし得る。上記のように、CUのサイズは、CUのルーマコーディングブロックのサイズを指すことがあり、PUのサイズは、PUのルーマ予測ブロックのサイズを指すことがある。特定のCUのサイズが2N×2Nであると仮定すると、ビデオエンコーダ20およびビデオデコーダ30は、イントラ予測のための2N×2NまたはN×NのPUサイズと、インター予測のための2N×2N、2N×N、N×2N、N×N、または同様の対称PUサイズとをサポートし得る。ビデオエンコーダ20およびビデオデコーダ30は、インター予測のための2N×nU、2N×nD、nL×2N、およびnR×2NのPUサイズに対する非対称区分をもサポートし得る。
[0274]インター予測処理ユニット320は、CUの各PUに対してインター予測を実施することによって、PUのための予測データを生成し得る。PUのための予測データは、PUの予測ブロックと、PUのための動き情報とを含み得る。インター予測処理ユニット320は、PUがIスライス中にあるか、Pスライス中にあるか、Bスライス中にあるかに応じて、CUのPUに対して異なる動作を実施し得る。Iスライス中では、すべてのPUがイントラ予測される。したがって、PUがIスライス中にある場合、インター予測処理ユニット320は、PUに対してインター予測を実施しない。したがって、Iモードで符号化されたブロックの場合、予測ブロックは、同じフレーム内の前に符号化された隣接ブロックからの空間予測を使用して形成される。PUがPスライス中にある場合、インター予測処理ユニット320は、PUの予測ブロックを生成するために、単方向インター予測を使用し得る。PUがBスライス中にある場合、インター予測処理ユニット320は、PUの予測ブロックを生成するために、単方向インター予測または双方向インター予測を使用し得る。
[0275]本開示の様々な例によれば、ビデオエンコーダ20は、パレットベースコーディングを実施するように構成され得る。HEVCフレームワークに関して、一例として、パレットベースコーディング技法は、コーディングユニット(CU)モードとして使用されるように構成され得る。他の例では、パレットベースコーディング技法は、HEVCのフレームワークにおいてPUモードとして使用されるように構成され得る。したがって、CUモードのコンテキストにおいて(本開示全体を通して)本明細書で説明される開示されるプロセスのすべてが、追加または代替として、PUに適用され得る。しかしながら、これらのHEVCベースの例は、本明細書で説明されるパレットベースコーディング技法が、独立して、あるいは他の既存のまたはまだ開発されていないシステム/規格の一部として動作するように適用され得るので、そのような技法の制限または限定であると見なされるべきではない。これらの場合、パレットコーディングのためのユニットは、正方形ブロック、矩形ブロック、さらには非矩形形状の領域であり得る。
[0276]パレットベース符号化ユニット322は、たとえば、パレットベース符号化モードが、たとえば、CUまたはPUのために選択されるとき、パレットベース復号を実施し得る。たとえば、パレットベース符号化ユニット322は、ピクセル値を示すエントリを有するパレットを生成し、ビデオデータのブロックの少なくともいくつかの位置のピクセル値を表すためにパレット中のピクセル値を選択し、ビデオデータのブロックの位置のうちの少なくともいくつかを選択されたピクセル値にそれぞれ対応するパレット中のエントリに関連付ける情報をシグナリングするように構成され得る。様々な機能がパレットベースの符号化ユニット322によって実施されるものとして説明されるが、そのような機能のいくつかまたはすべては、他の処理ユニット、または異なる処理ユニットの組合せによって実施され得る。
[0277]イントラ予測処理ユニット326は、PUに対してイントラ予測を実施することによって、PUのための予測データを生成し得る。PUのための予測データは、PUの予測ブロックと、様々なシンタックス要素とを含み得る。イントラ予測処理ユニット326は、Iスライス、Pスライス、およびBスライス中のPUに対してイントラ予測を実施し得る。
[0278]PUに対してイントラ予測を実施するために、イントラ予測処理ユニット326は、PUのための予測データの複数のセットを生成するために複数のイントラ予測モードを使用し得る。イントラ予測処理ユニット326は、PUのための予測ブロックを生成するために、隣接PUのサンプルブロックからのサンプルを使用し得る。隣接PUは、PU、CU、およびCTUについて左から右、上から下の符号化順序を仮定すると、PUの上、右上、左上、または左にあり得る。イントラ予測処理ユニット326は、様々な数のイントラ予測モード、たとえば、33個の方向性イントラ予測モードを使用し得る。いくつかの例では、イントラ予測モードの数は、PUに関連付けられた領域のサイズに依存し得る。
[0279]予測処理ユニット300は、PUのためにインター予測処理ユニット320によって生成された予測データ、またはPUのためにイントラ予測処理ユニット326によって生成された予測データの中から、CUのPUのための予測データを選択し得る。いくつかの例では、予測処理ユニット300は、予測データのセットのレート/ひずみメトリックに基づいて、CUのPUのための予測データを選択する。選択された予測データの予測ブロックは、本明細書では、選択された予測ブロックと呼ばれることがある。
[0280]残差生成ユニット302は、CUのためのコーディングブロック(たとえば、ルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロック)、ならびにCUのPUのための選択された予測ブロック(たとえば、予測ルーマブロック、予測Cbブロック、および予測Crブロック)に基づいて、CUのための残差ブロック(たとえば、ルーマ残差ブロック、Cb残差ブロック、およびCr残差ブロック)を生成し得る。たとえば、残差生成ユニット302は、残差ブロック中の各サンプルが、CUのコーディングブロック中のサンプルと、CUのPUの対応する選択された予測ブロック中の対応するサンプルとの間の差分に等しい値を有するように、CUの残差ブロックを生成し得る。
[0281]変換処理ユニット304は、CUに関連付けられた残差ブロックをCUのTUに関連付けられた変換ブロックに区分するために、4分木区分を実施し得る。したがって、TUは、ルーマ変換ブロックと2つのクロマ変換ブロックとに関連付けられ得る。CUのTUのルーマ変換ブロックとクロマ変換ブロックとのサイズおよび位置は、CUのPUの予測ブロックのサイズおよび位置に基づくことも基づかないこともある。「残差4分木」(RQT:residual quad-tree)として知られる4分木構造は、領域の各々に関連付けられたノードを含み得る。CUのTUは、RQTのリーフノードに対応し得る。
[0282]変換処理ユニット304は、TUの変換ブロックに1つまたは複数の変換を適用することによって、CUの各TUのための変換係数ブロックを生成し得る。変換処理ユニット304は、TUに関連付けられた変換ブロックに様々な変換を適用し得る。たとえば、変換処理ユニット304は、離散コサイン変換(DCT)、方向変換、または概念的に同様の変換を、変換ブロックに適用し得る。いくつかの例では、変換処理ユニット304は、変換ブロックに変換を適用しない。そのような例では、変換ブロックは、変換係数ブロックとして扱われ得る。
[0283]量子化ユニット306は、係数ブロック中の変換係数を量子化し得る。量子化プロセスは、変換係数の一部または全部に関連付けられたビット深度を低減し得る。たとえば、nビット変換係数は量子化の間にmビットの変換係数に切り捨てられ得、ただし、nはmよりも大きい。量子化ユニット306は、CUに関連付けられた量子化パラメータ(QP)値に基づいて、CUのTUに関連付けられた係数ブロックを量子化し得る。ビデオエンコーダ20は、CUに関連付けられたQP値を調整することによって、CUに関連付けられた係数ブロックに適用される量子化の程度を調整し得る。量子化は情報の損失をもたらし得、したがって、被量子化変換係数は、元の係数よりも低い精度を有し得る。
[0284]逆量子化ユニット308および逆変換処理ユニット310は、係数ブロックから残差ブロックを再構築するために、それぞれ、係数ブロックに逆量子化および逆変換を適用し得る。再構築ユニット312は、TUに関連付けられた再構築された変換ブロックを生成するために、再構築された残差ブロックを、予測処理ユニット300によって生成された1つまたは複数の予測ブロックからの対応するサンプルに加算し得る。このようにCUの各TUのための変換ブロックを再構築することによって、ビデオエンコーダ20は、CUのコーディングブロックを再構築し得る。
[0285]フィルタユニット314は、CUに関連付けられたコーディングブロック中のブロッキングアーティファクトを低減するために、1つまたは複数のデブロッキング演算を実施し得る。復号ピクチャバッファ316は、フィルタユニット314が、再構築されたコーディングブロックに対して1つまたは複数のデブロッキング演算を実施した後、再構築されたコーディングブロックを記憶し得る。インター予測処理ユニット320は、他のピクチャのPUに対してインター予測を実施するために、再構築されたコーディングブロックを含んでいる参照ピクチャを使用し得る。さらに、イントラ予測処理ユニット326は、CUと同じピクチャ中の他のPUに対してイントラ予測を実施するために、復号ピクチャバッファ316中の再構築されたコーディングブロックを使用し得る。
[0286]エントロピー符号化ユニット318は、ビデオエンコーダ20の他の機能構成要素からデータを受信し得る。たとえば、エントロピー符号化ユニット318は、量子化ユニット306から係数ブロックを受信し得、予測処理ユニット300からシンタックス要素を受信し得る。エントロピー符号化ユニット318は、エントロピー符号化データを生成するために、データに対して1つまたは複数のエントロピー符号化演算を実施し得る。たとえば、エントロピー符号化ユニット318は、CABAC演算、コンテキスト適応型可変長コーディング(CAVLC)演算、可変対可変(V2V)長コーディング演算、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)演算、確率間隔区分エントロピー(PIPE)コーディング演算、指数ゴロム符号化演算、または別のタイプのエントロピー符号化演算を、データに対して実施し得る。ビデオエンコーダ20は、エントロピー符号化ユニット318によって生成されたエントロピー符号化データを含むビットストリームを出力し得る。たとえば、ビットストリームは、CUのためのRQTを表すデータを含み得る。
[0287]本開示の例示的な技法によれば、エントロピー符号化ユニット318は、ビットストリーム中に、ビデオデータの現在ピクチャの現在ブロックのためのラン関係シンタックス要素グループのセットに対応する、第1のエントロピー符号化データを含め得る。エントロピー符号化ユニット318は、ビットストリーム中に、現在ブロックのためのパレットインデックスシンタックス要素のセットに対応する、第2のエントロピー符号化データを含め得、第1のエントロピー符号化データは、第2のエントロピー符号化データの前にビットストリーム中で発生する。この例では、ラン関係シンタックス要素グループのセットのうちの各それぞれのラン関係シンタックス要素グループは、等しいパレットモードタイプインジケータのそれぞれのランのそれぞれのタイプと、それぞれのランのそれぞれの長さとを示す。さらに、この例では、パレットインデックスシンタックス要素のセットのうちの各それぞれのパレットインデックスシンタックス要素は、サンプル値のセットを備えるパレット中のエントリを示す。
[0288]図6は、本開示の技法を実装するように構成される例示的なビデオデコーダ30を示すブロック図である。図6は、説明の目的で与えられており、本開示で広く例示され、説明される技法に対する限定ではない。説明の目的で、本開示は、HEVCコーディングのコンテキストにおいてビデオデコーダ30について説明する。ただし、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
[0289]ビデオエンコーダ20は、本開示で説明される様々な例に従ってパレットベースビデオコーディングのための技法を実施するように構成され得るデバイスの一例を表す。たとえば、ビデオエンコーダ20は、パレットベースコーディングまたは非パレットベースコーディングのいずれかを使用して、HEVCコーディングにおけるCUまたはPUなど、ビデオデータの様々なブロックを選択的に復号するように構成され得る。非パレットベースコーディングモードは、HEVCバージョン1によって指定される様々なコーディングモードなど、様々なインター予測時間コーディングモードまたはイントラ予測空間コーディングモードを指し得る。ビデオデコーダ30は、一例では、ピクセル値を示すエントリを有するパレットを生成し、ビデオデータのブロック中の少なくともいくつかのピクセルロケーションをパレット中のエントリに関連付ける情報を受信し、情報に基づいてパレット中のピクセル値を選択し、パレット中の選択されたピクセル値に基づいてブロックのピクセル値を再構築するように構成され得る。
[0290]図6の例では、ビデオデコーダ30は、エントロピー復号ユニット350と、ビデオデータメモリ351と、予測処理ユニット352と、逆量子化ユニット354と、逆変換処理ユニット356と、再構築ユニット358と、フィルタユニット360と、復号ピクチャバッファ362とを含む。予測処理ユニット352は、動き補償ユニット364と、イントラ予測処理ユニット366とを含む。ビデオデコーダ30はまた、本開示で説明されるパレットベースコーディング技法の様々な態様を実施するように構成された、パレットベース復号ユニット365を含む。他の例では、ビデオデコーダ30は、より多数の、より少数の、または異なる機能構成要素を含み得る。
[0291]ビデオデータメモリ351は、ビデオデコーダ30の構成要素によって復号されるべき、符号化ビデオビットストリームなどのビデオデータを記憶し得る。ビデオデータメモリ351に記憶されるビデオデータは、たとえば、コンピュータ可読媒体36から、たとえば、カメラなどのローカルビデオソースから、ビデオデータのワイヤードまたはワイヤレスネットワーク通信を介して、あるいは物理データ記憶媒体にアクセスすることによって取得され得る。ビデオデータメモリ351は、符号化ビデオビットストリームからの符号化ビデオデータを記憶するコード化ピクチャバッファ(CPB)を形成し得る。復号ピクチャバッファ362は、たとえば、イントラコーディングモードまたはインターコーディングモードでビデオデコーダ30によってビデオデータを復号する際に使用するための、参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ351および復号ピクチャバッファ362は、同期DRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗性RAM(RRAM)、または他のタイプのメモリデバイスなど、様々なメモリデバイスのうちのいずれかによって形成され得る。ビデオデータメモリ351および復号ピクチャバッファ362は、同じメモリデバイスまたは別個のメモリデバイスによって与えられ得る。様々な例では、ビデオデータメモリ351は、ビデオデコーダ30の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
[0292]ビデオデータメモリ351は、ビットストリームの符号化ビデオデータ(たとえば、NALユニット)を受信し、記憶する。エントロピー復号ユニット350は、CPBから符号化ビデオデータ(たとえば、NALユニット)を受信し、シンタックス要素を取得するために、NALユニットをパースし得る。エントロピー復号ユニット350は、NALユニット中のエントロピー符号化シンタックス要素をエントロピー復号し得る。予測処理ユニット352、逆量子化ユニット354、逆変換処理ユニット356、再構築ユニット358、およびフィルタユニット360は、ビットストリームから抽出されたシンタックス要素に基づいて復号ビデオデータを生成し得る。エントロピー復号ユニット350は、エントロピー符号化ユニット318のプロセスとは全体的に逆のプロセスを実施し得る。
[0293]ビットストリームからシンタックス要素を取得することに加えて、ビデオデコーダ30は、区分されていないCUに対して再構築演算を実施し得る。CUに対して再構築演算を実施するために、ビデオデコーダ30は、CUの各TUに対して再構築演算を実施し得る。CUの各TUに対して再構築演算を実施することによって、ビデオデコーダ30は、CUの残差ブロックを再構築し得る。
[0294]CUのTUに対して再構築演算を実施することの一部として、逆量子化ユニット354は、TUに関連付けられた係数ブロックを逆量子化、すなわち、量子化解除し得る。逆量子化ユニット354は、量子化の程度を決定し、同様に、逆量子化ユニット354が適用すべき逆量子化の程度を決定するために、TUのCUに関連付けられたQP値を使用し得る。すなわち、圧縮比、すなわち、元のシーケンスと圧縮されたシーケンスとを表すために使用されるビット数の比は、変換係数を量子化するときに使用されるQPの値を調整することによって制御され得る。圧縮比はまた、採用されたエントロピーコーディングの方法に依存し得る。
[0295]逆量子化ユニット354が係数ブロックを逆量子化した後、逆変換処理ユニット356は、TUに関連付けられた残差ブロックを生成するために、係数ブロックに1つまたは複数の逆変換を適用し得る。たとえば、逆変換処理ユニット356は、逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT)、逆回転変換、逆方向変換、または別の逆変換を係数ブロックに適用し得る。
[0296]本開示の例示的な技法によれば、エントロピー復号ユニット350は、ビットストリーム中の第1のエントロピー符号化データに基づいて、ビデオデータの現在ピクチャの現在ブロックのためのラン関係シンタックス要素グループのセットを決定し得る。加えて、エントロピー復号ユニット350は、第2のエントロピー符号化データそのビットストリームに基づいて、現在ブロックのためのパレットインデックスシンタックス要素のセットを決定し得、第1のエントロピー符号化データは、第2のエントロピー符号化データの前にビットストリーム中で発生する。この例では、ラン関係シンタックス要素グループのセットのうちの各それぞれのラン関係シンタックス要素グループは、等しいパレットモードタイプインジケータのそれぞれのランのそれぞれのタイプと、それぞれのランのそれぞれの長さとを示す。この例では、パレットインデックスシンタックス要素のセットのうちの各それぞれのパレットインデックスシンタックス要素は、サンプル値のセットを備えるパレット中のエントリを示す。ビデオデコーダ30の他の構成要素は、パレット中のサンプル値に基づいて、現在ブロックを再構築し得る。たとえば、パレットベース復号ユニット365は、CUのPUのための予測ブロックを生成するために、パレット中のサンプル値を使用し得る。
[0297]PUが、イントラ予測を使用して符号化される場合、イントラ予測処理ユニット366は、PUの予測ブロックを生成するために、イントラ予測を実施し得る。イントラ予測処理ユニット366は、サンプル空間的隣接ブロックに基づいてPUの予測ブロックを生成するために、イントラ予測モードを使用し得る。イントラ予測処理ユニット366は、ビットストリームから取得された1つまたは複数のシンタックス要素に基づいて、PUのためのイントラ予測モードを決定し得る。
[0298]PUが、インター予測を使用して符号化される場合、エントロピー復号ユニット350は、PUのための動き情報を決定し得る。動き補償ユニット364は、PUの動き情報に基づいて、1つまたは複数の参照ブロックを決定し得る。動き補償ユニット364は、1つまたは複数の参照ブロックに基づいて、PUのための予測ブロック(たとえば、予測ルーマブロック、予測Cbブロック、および予測Crブロック)を生成し得る。
[0299]再構築ユニット358は、CUのためのコーディングブロック(たとえば、ルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロック)を再構築するために、適用可能であれば、CUのTUのための変換ブロック(たとえば、ルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロック)、ならびにCUのPUの予測ブロック(たとえば、ルーマブロック、Cbブロック、およびCrブロック)、すなわち、イントラ予測データまたはインター予測データのいずれかを使用し得る。たとえば、再構築ユニット358は、CUのコーディングブロック(たとえば、ルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロック)を再構築するために、変換ブロック(たとえば、ルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロック)のサンプルを、予測ブロック(たとえば、ルーマ予測ブロック、Cb予測ブロック、およびCr予測ブロック)の対応するサンプルに加算し得る。
[0300]フィルタユニット360は、CUのコーディングブロックに関連付けられたブロッキングアーティファクトを低減するために、デブロッキング演算を実施し得る。ビデオデコーダ30は、復号ピクチャバッファ362にCUのコーディングブロックを記憶し得る。復号ピクチャバッファ362は、後続の動き補償、イントラ予測、および図1のディスプレイデバイス32などのディスプレイデバイス上での提示のために、参照ピクチャを与え得る。たとえば、ビデオデコーダ30は、復号ピクチャバッファ362中のブロックに基づいて、他のCUのPUに対してイントラ予測動作またはインター予測動作を実施し得る。
[0301]ビデオデコーダ30は、パレットベースコーディングを実施するように構成され得る。たとえば、パレットベース復号ユニット365は、パレットベース復号モードが、たとえば、CUまたはPUのために選択されるとき、パレットベース復号を実施し得る。たとえば、パレットベース復号ユニット365は、ピクセル値を示すエントリを有するパレットを生成し、ビデオデータのブロック中の少なくともいくつかのピクセルロケーションをパレット中のエントリに関連付ける情報を受信し、情報に基づいてパレット中のピクセル値を選択し、パレット中の選択されたピクセル値に基づいてブロックのピクセル値を再構築し得る。様々な機能がパレットベース復号ユニット365によって実施されるものとして説明されるが、そのような機能のいくつかまたはすべては、他の処理ユニット、または異なる処理ユニットの組合せによって実施され得る。
[0302]パレットベース復号ユニット365は、パレットコーディングモード情報を受信し、パレットコーディングモードがブロックに適用されることをパレットコーディングモード情報が示すとき、上記の動作を実施し得る。パレットコーディングモードがブロックに適用されないことをパレットコーディングモード情報が示すとき、または他のモード情報が異なるモードの使用を示すとき、パレットベース復号ユニット365は、たとえば、HEVCインター予測またはイントラ予測コーディングモードなど、非パレットベースコーディングモードを使用してビデオデータのブロックを復号する。ビデオデータのブロックは、たとえば、HEVCコーディングプロセスに従って生成されるCUまたはPUであり得る。パレットベースコーディングモードは、複数の異なるパレットベースコーディングモードのうちの1つを備え得るか、または単一のパレットベースコーディングモードがあり得る。
[0303]本明細書で説明された技法のすべてが、個々にまたは組合せで使用され得ることを理解されたい。例に応じて、本明細書で説明された技法のうちのいずれかのいくつかの行為またはイベントは、異なるシーケンスで実施され得、追加、マージ、または完全に除外され得る(たとえば、すべての説明された行為またはイベントが本技法の実施のために必要であるとは限らない)ことを認識されたい。その上、いくつかの例では、行為またはイベントは、連続的にではなく、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを通して同時に実施され得る。加えて、本開示のいくつかの態様は、明快のために単一のモジュールまたはユニットによって実施されるものとして説明されるが、本開示の技法は、ビデオコーダに関連付けられたユニットまたはモジュールの組合せによって実施され得ることを理解されたい。
[0304]例示のためにHEVC規格に関して、本開示のいくつかの態様が説明された。ただし、本開示で説明された技法は、まだ開発されていない他の規格またはプロプライエタリビデオコーディングプロセスを含む、他のビデオコーディングプロセスのために有用であり得る。
[0305]上記で説明された技法は、その両方が一般にビデオコーダと呼ばれることがある、ビデオエンコーダ20(図1および図5)および/またはビデオデコーダ30(図1および図6)によって実施され得る。同様に、ビデオコーディングは、適用可能なとき、ビデオ符号化またはビデオ復号を指すことがある。
[0306]図7は、本開示の技法による、ビデオデータを符号化するための例示的な方法を示すフローチャートである。図7の技法は、図1および5のビデオエンコーダ20に関して説明されるが、図7の技法は、いかなる特定のタイプのビデオエンコーダにも限定されない。図7の例では、ビデオエンコーダ20は、ビットストリーム中に、ビデオデータの現在ピクチャの現在ブロックのためのラン関係シンタックス要素グループのセットに対応する、第1のエントロピー符号化データを含める(402)。ビデオエンコーダ20は、ビットストリーム中に、現在ブロックのためのパレットインデックスシンタックス要素のセットに対応する、第2のエントロピー符号化データを含め、第1のエントロピー符号化データは、第2のエントロピー符号化データの前にビットストリーム中で発生する(404)。ラン関係シンタックス要素グループのセットのうちの各それぞれのラン関係シンタックス要素グループは、等しいパレットモードタイプインジケータのそれぞれのランのそれぞれのタイプと、それぞれのランのそれぞれの長さとを示し、パレットインデックスシンタックス要素のセットのうちの各それぞれのパレットインデックスシンタックス要素は、サンプル値のセットを備えるパレット中のエントリを示す。ビデオエンコーダ20は、第1のエントロピー符号化ビデオデータと、第2のエントロピー符号化ビデオデータとともに、ビットストリームを出力する(406)。
[0307]第1のエントロピー符号化データを含めるために、ラン関係シンタックス要素グループのセットのうちの各それぞれのラン関係シンタックス要素グループについて、ビデオエンコーダ20は、複数のエントロピーコーディングコンテキストから、それぞれのラン関係シンタックス要素グループのためのそれぞれのエントロピーコーディングコンテキストを選択し、ここにおいて、それぞれのエントロピーコーディングコンテキストの選択が、パレットインデックスシンタックス要素のいずれにも依存せず、また、選択されたエントロピーコーディングコンテキストに基づいて、それぞれのラン関係シンタックス要素グループのビンをエントロピー符号化する。エントロピーコーディングコンテキストを選択するために、ビデオエンコーダ20は、それぞれのラン関係シンタックス要素グループに対応するそれぞれのランの開始ピクセルの現在ブロック内の位置に基づいて、それぞれのラン関係シンタックス要素グループのためのそれぞれのエントロピーコーディングコンテキストを選択する。追加または代替として、エントロピーコーディングコンテキストを選択するために、ビデオエンコーダ20は、パレットのサイズに基づいて、それぞれのラン関係シンタックス要素グループのためのそれぞれのエントロピーコーディングコンテキストを選択する。
[0308]第2のエントロピー符号化データを含めるために、パレットインデックスシンタックス要素要素のセットのうちの各それぞれのパレットインデックスシンタックス要素について、ビデオエンコーダ20は、同じパレットインデックスをもつ連続するロケーションの数に基づいて、2値化方法を決定し、決定された2値化方法を使用して、それぞれのパレットインデックスシンタックス要素の2値化バージョンを生成し得る。ビデオエンコーダ20は、それぞれのインデックスシンタックス要素の2値化バージョンをエントロピー符号化し、ビットストリーム中に、それぞれのパレットインデックスシンタックス要素のエントロピー符号化された2値化バージョンを含め得る。
[0309]パレットインデックスシンタックス要素のセットを取得するために、ビデオエンコーダ20は、パレットインデックスシンタックス要素要素のセットのうちの各それぞれのパレットインデックスシンタックス要素について、パレットサイズに基づいて、2値化方法を決定し、決定された2値化方法を使用して、それぞれのパレットインデックスシンタックス要素の2値化バージョンを生成し、それぞれのインデックスシンタックス要素の2値化バージョンをエントロピー符号化し、ビットストリーム中に、それぞれのパレットインデックスシンタックス要素のエントロピー符号化された2値化バージョンを含め得る。パレットサイズの異なる値は、異なる2値化方法に対応し得る。ビデオエンコーダ20はまた、調整されたパレットサイズを生じるために、パレットサイズ調整プロセスを実施し得る。
[0310]パレットインデックスシンタックス要素のセットを取得するために、パレットインデックスシンタックス要素要素のセットのうちの各それぞれのパレットインデックスシンタックス要素について、ビデオエンコーダ20は、パレットサイズと、同じパレットインデックスをもつ連続するロケーションの数とに基づいて、2値化方法を決定し、決定された2値化方法を使用して、それぞれのパレットインデックスシンタックス要素の2値化バージョンを生成し、それぞれのインデックスシンタックス要素の2値化バージョンをエントロピー符号化し、ビットストリーム中に、それぞれのパレットインデックスシンタックス要素のエントロピー符号化された2値化バージョンを含め得る。ビデオエンコーダ20はまた、調整されたパレットサイズを生じるために、パレットサイズ調整プロセスを実施し得る。
[0311]図8は、本開示の技法による、ビデオデータを復号するための例示的な方法を示すフローチャートである。図8の技法は、図1および6のビデオデコーダ30に関して説明されるが、図8の技法は、いかなる特定のタイプのビデオデコーダにも限定されない。図8の例では、ビデオデコーダ30は、ビットストリーム中の第1のエントロピー符号化データに基づいて、ビデオデータの現在ピクチャの現在ブロックのためのラン関係シンタックス要素グループのセットを決定する(422)。ビデオデコーダ30は、第2のエントロピー符号化データそのビットストリームに基づいて、現在ブロックのためのパレットインデックスシンタックス要素のセットを決定し、第1のエントロピー符号化データは、第2のエントロピー符号化データの前にビットストリーム中で発生する(424)。ラン関係シンタックス要素グループのセットのうちの各それぞれのラン関係シンタックス要素グループは、等しいパレットモードタイプインジケータのそれぞれのランのそれぞれのタイプと、それぞれのランのそれぞれの長さとを示し、パレットインデックスシンタックス要素のセットのうちの各それぞれのパレットインデックスシンタックス要素は、サンプル値のセットを備えるパレット中のエントリを示す。ビデオデコーダ30は、パレット中のサンプル値に基づいて、現在ブロックを再構築する(426)。
[0312]ラン関係シンタックス要素グループのセットを決定することは備える、ラン関係シンタックス要素グループのセットのうちの各それぞれのラン関係シンタックス要素グループについて、ビデオデコーダ30は、複数のエントロピーコーディングコンテキストから、それぞれのラン関係シンタックス要素グループのためのそれぞれのエントロピーコーディングコンテキストを選択し、選択されたエントロピーコーディングコンテキストに基づいて、それぞれのラン関係シンタックス要素グループのビンをエントロピー復号する。それぞれのエントロピーコーディングコンテキストの選択は、パレットインデックスシンタックス要素のいずれにも依存しなくてよい。エントロピーコーディングコンテキストを選択するために、ビデオデコーダ30は、それぞれのラン関係シンタックス要素グループに対応するそれぞれのランの開始ピクセルの現在ブロック内の位置に基づいて、それぞれのラン関係シンタックス要素グループのためのそれぞれのエントロピーコーディングコンテキストを選択し得る。エントロピーコーディングコンテキストを選択するために、ビデオデコーダ30は、パレットのサイズに基づいて、それぞれのラン関係シンタックス要素グループのためのそれぞれのエントロピーコーディングコンテキストを選択し得る。
[0313]パレットインデックスシンタックス要素のセットを決定するために、パレットインデックスシンタックス要素要素のセットのうちの各それぞれのパレットインデックスシンタックス要素について、ビデオデコーダ30は、ビットストリームから、それぞれのパレットインデックスシンタックス要素に対応するデータを取得し、それぞれのパレットインデックスシンタックス要素の2値化バージョンを決定するために、それぞれのパレットインデックスシンタックス要素に対応するデータをエントロピー復号する。ビデオデコーダ30はまた、同じパレットインデックスをもつ連続するロケーションの数に基づいて、2値化方法を決定し、それぞれのパレットインデックスシンタックス要素の2値化バージョンを逆2値化するために、決定された2値化方法を使用して、それぞれのパレットインデックスシンタックス要素を決定し得る。
[0314]パレットインデックスシンタックス要素のセットを決定するために、ビデオデコーダ30は、パレットインデックスシンタックス要素要素のセットのうちの各それぞれのパレットインデックスシンタックス要素について、ビットストリームから、それぞれのパレットインデックスシンタックス要素に対応するデータを取得し、それぞれのパレットインデックスシンタックス要素の2値化バージョンを決定するために、それぞれのパレットインデックスシンタックス要素に対応するデータをエントロピー復号し得る。ビデオデコーダ30はまた、パレットサイズに基づいて、2値化方法を決定し、それぞれのパレットインデックスシンタックス要素の2値化バージョンを逆2値化するために、決定された2値化方法を使用して、それぞれのパレットインデックスシンタックス要素を決定し得る。パレットサイズの異なる値は、異なる2値化方法に対応し得る。ビデオデコーダ30は、調整されたパレットサイズを生じるために、パレットサイズ調整プロセスを実施し得る。
[0315]パレットインデックスシンタックス要素のセットを決定するために、パレットインデックスシンタックス要素要素のセットのうちの各それぞれのパレットインデックスシンタックス要素について、ビデオデコーダ30は、ビットストリームから、それぞれのパレットインデックスシンタックス要素に対応するデータを取得し、それぞれのパレットインデックスシンタックス要素の2値化バージョンを決定するために、それぞれのパレットインデックスシンタックス要素に対応するデータをエントロピー復号し得る。ビデオデコーダ30はまた、パレットサイズと、同じパレットインデックスをもつ連続するロケーションの数とに基づいて、2値化方法を決定し、それぞれのパレットインデックスシンタックス要素の2値化バージョンを逆2値化するために、決定された2値化方法を使用して、それぞれのパレットインデックスシンタックス要素を決定し得る。ビデオデコーダ30は、調整されたパレットサイズを生じるために、パレットサイズ調整プロセスを実施し得る。
[0316]技法の様々な態様の特定の組合せが上記で説明されているが、これらの組合せは、本開示で説明された技法の例を示すために与えられたにすぎない。したがって、本開示の技法は、これらの例示的な組合せに限定されるべきでなく、本開示で説明された技法の様々な態様の任意の考えられる組合せを包含し得る。
[0317]1つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応する、コンピュータ可読記憶媒体を含み得るか、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、(1)非一時的である有形コンピュータ可読記憶媒体、または(2)信号もしくは搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明される技法の実装のための命令、コードおよび/またはデータ構造を取り出すために、1つまたは複数のコンピュータあるいは1つまたは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
[0318]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMもしくは他の光ディスクストレージ、磁気ディスクストレージ、もしくは他の磁気ストレージデバイス、フラッシュメモリ、または、命令もしくはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る任意の他の媒体を備え得る。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用してウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)、およびBlu−rayディスク(disc)を含み、ここで、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せも、コンピュータ可読媒体の範囲内に含まれるべきである。
[0319]命令は、1つもしくは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の等価な集積回路もしくはディスクリート論理回路など、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用される「プロセッサ」という用語は、上記の構造、または、本明細書で説明された技法の実装のために好適な任意の他の構造のいずれかを指すことがある。さらに、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成された専用ハードウェアおよび/またはソフトウェアモジュール内に与えられるか、あるいは複合コーデックに組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素で十分に実装され得る。
[0320]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置に実装され得る。様々な構成要素、モジュール、またはユニットは、開示された技法を実施するように構成されたデバイスの機能的態様を強調するように本開示で説明されるが、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上記で説明されたように、様々なユニットは、好適なソフトウェアおよび/またはファームウェアとともに、上記で説明された1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わされるか、または相互動作ハードウェアユニットの集合によって提供され得る。
[0321]様々な例が、説明された。これらおよび他の例は、以下の特許請求の範囲の範囲内にある。
[0321]様々な例が、説明された。これらおよび他の例は、以下の特許請求の範囲の範囲内にある。
以下に本願の出願当初の特許請求の範囲に記載された発明を付記する。
[C1]
ビデオデータを復号する方法であって、
ビットストリーム中の第1のエントロピー符号化データに基づいて、前記ビデオデータの現在ピクチャの現在ブロックのためのラン関係シンタックス要素グループのセットを決定することと、
第2のエントロピー符号化データ前記ビットストリームに基づいて、前記現在ブロックのためのパレットインデックスシンタックス要素のセットを決定することと、前記第1のエントロピー符号化データが、前記第2のエントロピー符号化データの前に前記ビットストリーム中で発生し、ここにおいて、
前記ラン関係シンタックス要素グループのセットのうちの各それぞれのラン関係シンタックス要素グループが、等しいパレットモードタイプインジケータのそれぞれのランのそれぞれのタイプと、前記それぞれのランのそれぞれの長さとを示し、
前記パレットインデックスシンタックス要素のセットのうちの各それぞれのパレットインデックスシンタックス要素が、サンプル値のセットを備えるパレット中のエントリを示す、
前記パレット中の前記サンプル値に基づいて、前記現在ブロックを再構築することと
を備える方法。
[C2]
前記ラン関係シンタックス要素グループのセットを決定することが、前記ラン関係シンタックス要素グループのセットのうちの各それぞれのラン関係シンタックス要素グループについて、
複数のエントロピーコーディングコンテキストから、前記それぞれのラン関係シンタックス要素グループのためのそれぞれのエントロピーコーディングコンテキストを選択することと、ここにおいて、前記それぞれのエントロピーコーディングコンテキストの前記選択が、前記パレットインデックスシンタックス要素のいずれにも依存しない、
前記選択されたエントロピーコーディングコンテキストに基づいて、前記それぞれのラン関係シンタックス要素グループのビンをエントロピー復号することと
を備える、C1に記載の方法。
[C3]
前記エントロピーコーディングコンテキストを選択することが、
基準に基づいて、前記それぞれのラン関係シンタックス要素グループのための前記それぞれのエントロピーコーディングコンテキストを選択すること、ここにおいて、前記基準が、前記それぞれのラン関係シンタックス要素グループに対応するそれぞれのランの開始ピクセルの前記現在ブロック内の位置、または前記パレットのサイズのうちの一方または両方を備える
を備える、C2に記載の方法。
[C4]
前記パレットインデックスシンタックス要素のセットを決定することが、
前記パレットインデックスシンタックス要素のセットのうちの各それぞれのパレットインデックスシンタックス要素について、
前記ビットストリームから、前記パレットインデックスシンタックス要素のうちのそれぞれの1つに対応するデータを取得することと、
前記それぞれのパレットインデックスシンタックス要素の2値化バージョンを決定するために、前記それぞれのパレットインデックスシンタックス要素に対応する前記データをエントロピー復号することと、
同じパレットインデックスをもつ連続するロケーションの数に基づいて、2値化方法を決定することと、
前記それぞれのパレットインデックスシンタックス要素の前記2値化バージョンを逆2値化するために、前記決定された2値化方法を使用して、前記それぞれのパレットインデックスシンタックス要素を決定することと
を備える、C1に記載の方法。
[C5]
前記パレットインデックスシンタックス要素のセットを決定することが、
前記パレットインデックスシンタックス要素のセットのうちの各それぞれのパレットインデックスシンタックス要素について、
前記ビットストリームから、前記パレットインデックスシンタックス要素のうちのそれぞれの1つに対応するデータを取得することと、
前記それぞれのパレットインデックスシンタックス要素の2値化バージョンを決定するために、前記それぞれのパレットインデックスシンタックス要素に対応する前記データをエントロピー復号することと、
パレットサイズに基づいて、2値化方法を決定することと、
前記それぞれのパレットインデックスシンタックス要素の前記2値化バージョンを逆2値化するために、前記決定された2値化方法を使用して、前記それぞれのパレットインデックスシンタックス要素を決定することと
を備える、C1に記載の方法。
[C6]
前記パレットインデックスシンタックス要素のセットを決定することが、
前記パレットインデックスシンタックス要素のセットのうちの各それぞれのパレットインデックスシンタックス要素について、
前記ビットストリームから、前記パレットインデックスシンタックス要素のうちのそれぞれの1つに対応するデータを取得することと、
前記それぞれのパレットインデックスシンタックス要素の2値化バージョンを決定するために、前記それぞれのパレットインデックスシンタックス要素に対応する前記データをエントロピー復号することと、
パレットサイズと、同じパレットインデックスをもつ連続するロケーションの数とに基づいて、2値化方法を決定することと、
前記それぞれのパレットインデックスシンタックス要素の前記2値化バージョンを逆2値化するために、前記決定された2値化方法を使用して、前記それぞれのパレットインデックスシンタックス要素を決定することと
を備える、C1に記載の方法。
[C7]
前記パレットインデックスシンタックス要素のセットのためのインデックス値が、インデックス予測子のリストを使用して予測可能であるか否かを示す、フラグを受信することをさらに備える、C1に記載の方法。
[C8]
前記現在ブロックのために使用される前記ラン関係シンタックス要素グループのセット中で示す最大ラン値を示すシンタックス要素を復号することと、
切捨て値として前記最大ラン値を使用して、ラン値を復号することと
をさらに備える、C1に記載の方法。
[C9]
第1の最大パレットインデックス値を決定することと、
第2の最大パレットインデックス値を決定することと、ここにおいて、前記第2の最大パレットインデックス値が、ランがランしきい値以上であるときのための最大パレットインデックス値を備え、ここにおいて、前記第2の最大パレットインデックス値が、前記第1の最大パレットインデックス値未満である、
ラン値が前記ランしきい値以上であるとき、前記第2の最大パレットインデックス値に等しい切捨て値とともに切捨て2進コーディングを使用して、インデックス値をコーディングすることと、
前記ラン値が前記ランしきい値未満であるとき、前記第1の最大パレットインデックス値に等しい切捨て値とともに切捨て2進コーディングを使用して、前記インデックス値をコーディングすることと
をさらに備える、C1に記載の方法。
[C10]
前記1つまたは複数のパレットエントリのための1つまたは複数のインデックス値を復号すること、前記1つまたは複数のインデックス値のうちの少なくとも1つのインデックス値が、前記パレットの第1の領域に属し、前記1つまたは複数のインデックス値のうちの少なくとも1つの他のインデックス値が、前記パレットの第2の領域に属し、ここにおいて、制限に従って、前記第2の領域のインデックス値が連続的な走査順序においてコーディングされ、前記制限が、前記インデックス値が前記連続的な走査順序において前記第2の領域中に現れるべきであることを示す
をさらに備える、C1に記載の方法。
[C11]
デバイスが、ワイヤレス通信デバイスを備え、前記デバイスが、符号化ビデオデータを受信するように構成された受信機をさらに備える、C1に記載のデバイス。
[C12]
前記ワイヤレス通信デバイスが、電話ハンドセットを備え、ここにおいて、前記受信機が、ワイヤレス通信規格に従って、前記符号化ビデオデータを備える信号を復調するように構成される、C11に記載のデバイス。
[C13]
ワイヤレス通信デバイスの受信機において、前記ビデオデータを受信することと、
前記ワイヤレス通信デバイスのメモリ上に、前記ビデオデータを記憶することと、
1つまたは複数のプロセッサによって、前記現在ブロックを再構築するために、前記メモリ中に記憶された前記ビデオデータを処理することと
をさらに備える、C1に記載の方法。
[C14]
前記ワイヤレス通信デバイスがセルラー電話を備え、ここにおいて、前記受信機において前記ビデオデータを受信することが、セルラー通信規格に従って、前記ビデオデータを復調することを備える、C13に記載の方法。
[C15]
ビデオデータを復号するためのデバイスであって、
ビデオデータのビットストリームを記憶するように構成されたメモリと、
1つまたは複数のプロセッサと
を備え、前記1つまたは複数のプロセッサが、
前記ビットストリーム中の第1のエントロピー符号化データに基づいて、前記ビデオデータの現在ピクチャの現在ブロックのためのラン関係シンタックス要素グループのセットを決定することと、
第2のエントロピー符号化データ前記ビットストリームに基づいて、前記現在ブロックのためのパレットインデックスシンタックス要素のセットを決定することと、前記第1のエントロピー符号化データが、前記第2のエントロピー符号化データの前に前記ビットストリーム中で発生し、ここにおいて、
前記ラン関係シンタックス要素グループのセットのうちの各それぞれのラン関係シンタックス要素グループが、等しいパレットモードタイプインジケータのそれぞれのランのそれぞれのタイプと、前記それぞれのランのそれぞれの長さとを示し、
前記パレットインデックスシンタックス要素のセットのうちの各それぞれのパレットインデックスシンタックス要素が、サンプル値のセットを備えるパレット中のエントリを示す、
前記パレット中の前記サンプル値に基づいて、前記現在ブロックを再構築することと
を行うように構成される、デバイス。
[C16]
前記ラン関係シンタックス要素グループのセットを決定するために、前記1つまたは複数のプロセッサが、前記ラン関係シンタックス要素グループのセットのうちの各それぞれのラン関係シンタックス要素グループについて、
複数のエントロピーコーディングコンテキストから、前記それぞれのラン関係シンタックス要素グループのためのそれぞれのエントロピーコーディングコンテキストを選択することと、ここにおいて、前記それぞれのエントロピーコーディングコンテキストの前記選択が、前記パレットインデックスシンタックス要素のいずれにも依存しない、
前記選択されたエントロピーコーディングコンテキストに基づいて、前記それぞれのラン関係シンタックス要素グループのビンをエントロピー復号することと
を行うように構成される、C15に記載のデバイス。
[C17]
前記エントロピーコーディングコンテキストを選択するために、前記1つまたは複数のプロセッサが、
基準に基づいて、前記それぞれのラン関係シンタックス要素グループのための前記それぞれのエントロピーコーディングコンテキストを選択すること、ここにおいて、前記基準が、前記それぞれのラン関係シンタックス要素グループに対応するそれぞれのランの開始ピクセルの前記現在ブロック内の位置、または前記パレットのサイズのうちの一方または両方を備える
を行うように構成される、C16に記載のデバイス。
[C18]
前記パレットインデックスシンタックス要素のセットを決定するために、前記1つまたは複数のプロセッサが、
前記パレットインデックスシンタックス要素のセットのうちの各それぞれのパレットインデックスシンタックス要素について、
前記ビットストリームから、前記パレットインデックスシンタックス要素のうちのそれぞれの1つに対応するデータを取得することと、
前記それぞれのパレットインデックスシンタックス要素の2値化バージョンを決定するために、前記それぞれのパレットインデックスシンタックス要素に対応する前記データをエントロピー復号することと、
同じパレットインデックスをもつ連続するロケーションの数に基づいて、2値化方法を決定することと、
前記それぞれのパレットインデックスシンタックス要素の前記2値化バージョンを逆2値化するために、前記決定された2値化方法を使用して、前記それぞれのパレットインデックスシンタックス要素を決定することと
を行うように構成される、C15に記載のデバイス。
[C19]
前記パレットインデックスシンタックス要素のセットを決定するために、前記1つまたは複数のプロセッサが、
前記パレットインデックスシンタックス要素のセットのうちの各それぞれのパレットインデックスシンタックス要素について、
前記ビットストリームから、前記パレットインデックスシンタックス要素のうちのそれぞれの1つに対応するデータを取得することと、
前記それぞれのパレットインデックスシンタックス要素の2値化バージョンを決定するために、前記それぞれのパレットインデックスシンタックス要素に対応する前記データをエントロピー復号することと、
パレットサイズに基づいて、2値化方法を決定することと、
前記それぞれのパレットインデックスシンタックス要素の前記2値化バージョンを逆2値化するために、前記決定された2値化方法を使用して、前記それぞれのパレットインデックスシンタックス要素を決定することと
を行うように構成される、C15に記載のデバイス。
[C20]
前記パレットインデックスシンタックス要素のセットを決定するために、前記1つまたは複数のプロセッサが、
前記パレットインデックスシンタックス要素のセットのうちの各それぞれのパレットインデックスシンタックス要素について、
前記ビットストリームから、前記パレットインデックスシンタックス要素のうちのそれぞれの1つに対応するデータを取得することと、
前記それぞれのパレットインデックスシンタックス要素の2値化バージョンを決定するために、前記それぞれのパレットインデックスシンタックス要素に対応する前記データをエントロピー復号することと、
パレットサイズと、同じパレットインデックスをもつ連続するロケーションの数とに基づいて、2値化方法を決定することと、
前記それぞれのパレットインデックスシンタックス要素の前記2値化バージョンを逆2値化するために、前記決定された2値化方法を使用して、前記それぞれのパレットインデックスシンタックス要素を決定することと
を行うように構成される、C15に記載のデバイス。
[C21]
前記1つまたは複数のプロセッサが、
前記パレットインデックスシンタックス要素のセットのためのインデックス値が、インデックス予測子のリストを使用して予測可能であるか否かを示す、フラグを受信することを行うように構成される、C15に記載のデバイス。
[C22]
前記1つまたは複数のプロセッサが、
前記現在ブロックのために使用される前記ラン関係シンタックス要素グループのセット中で示す最大ラン値を示すシンタックス要素を復号することと、
切捨て値として前記最大ラン値を使用して、ラン値を復号することと
を行うように構成される、C15に記載のデバイス。
[C23]
前記1つまたは複数のプロセッサが、
第1の最大パレットインデックス値を決定することと、
第2の最大パレットインデックス値を決定することと、ここにおいて、前記第2の最大パレットインデックス値が、ランがランしきい値以上であるときのための最大パレットインデックス値を備え、ここにおいて、前記第2の最大パレットインデックス値が、前記第1の最大パレットインデックス値未満である、
ラン値が前記ランしきい値以上であるとき、前記第2の最大パレットインデックス値に等しい切捨て値とともに切捨て2進コーディングを使用して、インデックス値をコーディングすることと、
前記ラン値が前記ランしきい値未満であるとき、前記第1の最大パレットインデックス値に等しい切捨て値とともに切捨て2進コーディングを使用して、前記インデックス値をコーディングすることと
を行うように構成される、C15に記載のデバイス。
[C24]
前記1つまたは複数のプロセッサが、
前記1つまたは複数のパレットエントリのための1つまたは複数のインデックス値を復号すること、前記1つまたは複数のインデックス値のうちの少なくとも1つのインデックス値が、前記パレットの第1の領域に属し、前記1つまたは複数のインデックス値のうちの少なくとも1つの他のインデックス値が、前記パレットの第2の領域に属し、ここにおいて、制限に従って、前記第2の領域のインデックス値が連続的な走査順序においてコーディングされ、前記制限が、前記インデックス値が前記連続的な走査順序において前記第2の領域中に現れるべきであることを示す
を行うように構成される、C15に記載のデバイス。
[C25]
前記デバイスが、ワイヤレス通信デバイスを備え、前記デバイスが、符号化ビデオデータを受信するように構成された受信機をさらに備える、C15に記載のデバイス。
[C26]
前記ワイヤレス通信デバイスが、電話ハンドセットを備え、ここにおいて、前記受信機が、ワイヤレス通信規格に従って、前記符号化ビデオデータを備える信号を復調するように構成される、C25に記載のデバイス。
[C27]
ビデオデータを復号するための装置であって、
ビットストリーム中の第1のエントロピー符号化データに基づいて、前記ビデオデータの現在ピクチャの現在ブロックのためのラン関係シンタックス要素グループのセットを決定するための手段と、
第2のエントロピー符号化データ前記ビットストリームに基づいて、前記現在ブロックのためのパレットインデックスシンタックス要素のセットを決定するための手段と、前記第1のエントロピー符号化データが、前記第2のエントロピー符号化データの前に前記ビットストリーム中で発生し、ここにおいて、
前記ラン関係シンタックス要素グループのセットのうちの各それぞれのラン関係シンタックス要素グループが、等しいパレットモードタイプインジケータのそれぞれのランのそれぞれのタイプと、前記それぞれのランのそれぞれの長さとを示し、
前記パレットインデックスシンタックス要素のセットのうちの各それぞれのパレットインデックスシンタックス要素が、サンプル値のセットを備えるパレット中のエントリを示す、
前記パレット中の前記サンプル値に基づいて、前記現在ブロックを再構築するための手段と
を備える装置。
[C28]
前記ラン関係シンタックス要素グループのセットを決定するための前記手段が、
前記ラン関係シンタックス要素グループのセットのうちの各それぞれのラン関係シンタックス要素グループについて、複数のエントロピーコーディングコンテキストから、前記それぞれのラン関係シンタックス要素グループのためのそれぞれのエントロピーコーディングコンテキストを選択するための手段と、ここにおいて、前記それぞれのエントロピーコーディングコンテキストの前記選択が、前記パレットインデックスシンタックス要素のいずれにも依存しない、
前記ラン関係シンタックス要素グループのセットのうちの各それぞれのラン関係シンタックス要素グループについて、前記選択されたエントロピーコーディングコンテキストに基づいて、前記それぞれのラン関係シンタックス要素グループのビンをエントロピー復号するための手段と
を備える、C27に記載の装置。
[C29]
前記エントロピーコーディングコンテキストを選択するための前記手段が、
基準に基づいて、前記それぞれのラン関係シンタックス要素グループのための前記それぞれのエントロピーコーディングコンテキストを選択するための手段、ここにおいて、前記基準が、前記それぞれのラン関係シンタックス要素グループに対応するそれぞれのランの開始ピクセルの前記現在ブロック内の位置、または前記パレットのサイズのうちの一方または両方を備える
を備える、C28に記載の装置。
[C30]
1つまたは複数のプロセッサによって実行されたとき、前記1つまたは複数のプロセッサに、
ビットストリーム中の第1のエントロピー符号化データに基づいて、前記ビデオデータの現在ピクチャの現在ブロックのためのラン関係シンタックス要素グループのセットを決定することと、
第2のエントロピー符号化データ前記ビットストリームに基づいて、前記現在ブロックのためのパレットインデックスシンタックス要素のセットを決定することと、前記第1のエントロピー符号化データが、前記第2のエントロピー符号化データの前に前記ビットストリーム中で発生し、ここにおいて、
前記ラン関係シンタックス要素グループのセットのうちの各それぞれのラン関係シンタックス要素グループが、等しいパレットモードタイプインジケータのそれぞれのランのそれぞれのタイプと、前記それぞれのランのそれぞれの長さとを示し、
前記パレットインデックスシンタックス要素のセットのうちの各それぞれのパレットインデックスシンタックス要素が、サンプル値のセットを備えるパレット中のエントリを示す、
前記パレット中の前記サンプル値に基づいて、前記現在ブロックを再構築することと
を行わせる命令を記憶する、コンピュータ可読記憶媒体。

Claims (30)

  1. ビデオデータを復号する方法であって、
    ビットストリーム中の第1のエントロピー符号化データに基づいて、前記ビデオデータの現在ピクチャの現在ブロックのためのラン関係シンタックス要素グループのセットを決定することと、
    第2のエントロピー符号化データ前記ビットストリームに基づいて、前記現在ブロックのためのパレットインデックスシンタックス要素のセットを決定することと、前記第1のエントロピー符号化データが、前記第2のエントロピー符号化データの前に前記ビットストリーム中で発生し、ここにおいて、
    前記ラン関係シンタックス要素グループのセットのうちの各それぞれのラン関係シンタックス要素グループが、等しいパレットモードタイプインジケータのそれぞれのランのそれぞれのタイプと、前記それぞれのランのそれぞれの長さとを示し、
    前記パレットインデックスシンタックス要素のセットのうちの各それぞれのパレットインデックスシンタックス要素が、サンプル値のセットを備えるパレット中のエントリを示す、
    前記パレット中の前記サンプル値に基づいて、前記現在ブロックを再構築することと
    を備える方法。
  2. 前記ラン関係シンタックス要素グループのセットを決定することが、前記ラン関係シンタックス要素グループのセットのうちの各それぞれのラン関係シンタックス要素グループについて、
    複数のエントロピーコーディングコンテキストから、前記それぞれのラン関係シンタックス要素グループのためのそれぞれのエントロピーコーディングコンテキストを選択することと、ここにおいて、前記それぞれのエントロピーコーディングコンテキストの前記選択が、前記パレットインデックスシンタックス要素のいずれにも依存しない、
    前記選択されたエントロピーコーディングコンテキストに基づいて、前記それぞれのラン関係シンタックス要素グループのビンをエントロピー復号することと
    を備える、請求項1に記載の方法。
  3. 前記エントロピーコーディングコンテキストを選択することが、
    基準に基づいて、前記それぞれのラン関係シンタックス要素グループのための前記それぞれのエントロピーコーディングコンテキストを選択すること、ここにおいて、前記基準が、前記それぞれのラン関係シンタックス要素グループに対応するそれぞれのランの開始ピクセルの前記現在ブロック内の位置、または前記パレットのサイズのうちの一方または両方を備える
    を備える、請求項2に記載の方法。
  4. 前記パレットインデックスシンタックス要素のセットを決定することが、
    前記パレットインデックスシンタックス要素のセットのうちの各それぞれのパレットインデックスシンタックス要素について、
    前記ビットストリームから、前記パレットインデックスシンタックス要素のうちのそれぞれの1つに対応するデータを取得することと、
    前記それぞれのパレットインデックスシンタックス要素の2値化バージョンを決定するために、前記それぞれのパレットインデックスシンタックス要素に対応する前記データをエントロピー復号することと、
    同じパレットインデックスをもつ連続するロケーションの数に基づいて、2値化方法を決定することと、
    前記それぞれのパレットインデックスシンタックス要素の前記2値化バージョンを逆2値化するために、前記決定された2値化方法を使用して、前記それぞれのパレットインデックスシンタックス要素を決定することと
    を備える、請求項1に記載の方法。
  5. 前記パレットインデックスシンタックス要素のセットを決定することが、
    前記パレットインデックスシンタックス要素のセットのうちの各それぞれのパレットインデックスシンタックス要素について、
    前記ビットストリームから、前記パレットインデックスシンタックス要素のうちのそれぞれの1つに対応するデータを取得することと、
    前記それぞれのパレットインデックスシンタックス要素の2値化バージョンを決定するために、前記それぞれのパレットインデックスシンタックス要素に対応する前記データをエントロピー復号することと、
    パレットサイズに基づいて、2値化方法を決定することと、
    前記それぞれのパレットインデックスシンタックス要素の前記2値化バージョンを逆2値化するために、前記決定された2値化方法を使用して、前記それぞれのパレットインデックスシンタックス要素を決定することと
    を備える、請求項1に記載の方法。
  6. 前記パレットインデックスシンタックス要素のセットを決定することが、
    前記パレットインデックスシンタックス要素のセットのうちの各それぞれのパレットインデックスシンタックス要素について、
    前記ビットストリームから、前記パレットインデックスシンタックス要素のうちのそれぞれの1つに対応するデータを取得することと、
    前記それぞれのパレットインデックスシンタックス要素の2値化バージョンを決定するために、前記それぞれのパレットインデックスシンタックス要素に対応する前記データをエントロピー復号することと、
    パレットサイズと、同じパレットインデックスをもつ連続するロケーションの数とに基づいて、2値化方法を決定することと、
    前記それぞれのパレットインデックスシンタックス要素の前記2値化バージョンを逆2値化するために、前記決定された2値化方法を使用して、前記それぞれのパレットインデックスシンタックス要素を決定することと
    を備える、請求項1に記載の方法。
  7. 前記パレットインデックスシンタックス要素のセットのためのインデックス値が、インデックス予測子のリストを使用して予測可能であるか否かを示す、フラグを受信すること
    をさらに備える、請求項1に記載の方法。
  8. 前記現在ブロックのために使用される前記ラン関係シンタックス要素グループのセット中で示す最大ラン値を示すシンタックス要素を復号することと、
    切捨て値として前記最大ラン値を使用して、ラン値を復号することと
    をさらに備える、請求項1に記載の方法。
  9. 第1の最大パレットインデックス値を決定することと、
    第2の最大パレットインデックス値を決定することと、ここにおいて、前記第2の最大パレットインデックス値が、ランがランしきい値以上であるときのための最大パレットインデックス値を備え、ここにおいて、前記第2の最大パレットインデックス値が、前記第1の最大パレットインデックス値未満である、
    ラン値が前記ランしきい値以上であるとき、前記第2の最大パレットインデックス値に等しい切捨て値とともに切捨て2進コーディングを使用して、インデックス値をコーディングすることと、
    前記ラン値が前記ランしきい値未満であるとき、前記第1の最大パレットインデックス値に等しい切捨て値とともに切捨て2進コーディングを使用して、前記インデックス値をコーディングすることと
    をさらに備える、請求項1に記載の方法。
  10. 前記1つまたは複数のパレットエントリのための1つまたは複数のインデックス値を復号すること、前記1つまたは複数のインデックス値のうちの少なくとも1つのインデックス値が、前記パレットの第1の領域に属し、前記1つまたは複数のインデックス値のうちの少なくとも1つの他のインデックス値が、前記パレットの第2の領域に属し、ここにおいて、制限に従って、前記第2の領域のインデックス値が連続的な走査順序においてコーディングされ、前記制限が、前記インデックス値が前記連続的な走査順序において前記第2の領域中に現れるべきであることを示す
    をさらに備える、請求項1に記載の方法。
  11. デバイスが、ワイヤレス通信デバイスを備え、前記デバイスが、符号化ビデオデータを受信するように構成された受信機をさらに備える、請求項1に記載のデバイス。
  12. 前記ワイヤレス通信デバイスが、電話ハンドセットを備え、ここにおいて、前記受信機が、ワイヤレス通信規格に従って、前記符号化ビデオデータを備える信号を復調するように構成される、請求項11に記載のデバイス。
  13. ワイヤレス通信デバイスの受信機において、前記ビデオデータを受信することと、
    前記ワイヤレス通信デバイスのメモリ上に、前記ビデオデータを記憶することと、
    1つまたは複数のプロセッサによって、前記現在ブロックを再構築するために、前記メモリ中に記憶された前記ビデオデータを処理することと
    をさらに備える、請求項1に記載の方法。
  14. 前記ワイヤレス通信デバイスがセルラー電話を備え、ここにおいて、前記受信機において前記ビデオデータを受信することが、セルラー通信規格に従って、前記ビデオデータを復調することを備える、請求項13に記載の方法。
  15. ビデオデータを復号するためのデバイスであって、
    ビデオデータのビットストリームを記憶するように構成されたメモリと、
    1つまたは複数のプロセッサと
    を備え、前記1つまたは複数のプロセッサが、
    前記ビットストリーム中の第1のエントロピー符号化データに基づいて、前記ビデオデータの現在ピクチャの現在ブロックのためのラン関係シンタックス要素グループのセットを決定することと、
    第2のエントロピー符号化データ前記ビットストリームに基づいて、前記現在ブロックのためのパレットインデックスシンタックス要素のセットを決定することと、前記第1のエントロピー符号化データが、前記第2のエントロピー符号化データの前に前記ビットストリーム中で発生し、ここにおいて、
    前記ラン関係シンタックス要素グループのセットのうちの各それぞれのラン関係シンタックス要素グループが、等しいパレットモードタイプインジケータのそれぞれのランのそれぞれのタイプと、前記それぞれのランのそれぞれの長さとを示し、
    前記パレットインデックスシンタックス要素のセットのうちの各それぞれのパレットインデックスシンタックス要素が、サンプル値のセットを備えるパレット中のエントリを示す、
    前記パレット中の前記サンプル値に基づいて、前記現在ブロックを再構築することと
    を行うように構成される、デバイス。
  16. 前記ラン関係シンタックス要素グループのセットを決定するために、前記1つまたは複数のプロセッサが、前記ラン関係シンタックス要素グループのセットのうちの各それぞれのラン関係シンタックス要素グループについて、
    複数のエントロピーコーディングコンテキストから、前記それぞれのラン関係シンタックス要素グループのためのそれぞれのエントロピーコーディングコンテキストを選択することと、ここにおいて、前記それぞれのエントロピーコーディングコンテキストの前記選択が、前記パレットインデックスシンタックス要素のいずれにも依存しない、
    前記選択されたエントロピーコーディングコンテキストに基づいて、前記それぞれのラン関係シンタックス要素グループのビンをエントロピー復号することと
    を行うように構成される、請求項15に記載のデバイス。
  17. 前記エントロピーコーディングコンテキストを選択するために、前記1つまたは複数のプロセッサが、
    基準に基づいて、前記それぞれのラン関係シンタックス要素グループのための前記それぞれのエントロピーコーディングコンテキストを選択すること、ここにおいて、前記基準が、前記それぞれのラン関係シンタックス要素グループに対応するそれぞれのランの開始ピクセルの前記現在ブロック内の位置、または前記パレットのサイズのうちの一方または両方を備える
    を行うように構成される、請求項16に記載のデバイス。
  18. 前記パレットインデックスシンタックス要素のセットを決定するために、前記1つまたは複数のプロセッサが、
    前記パレットインデックスシンタックス要素のセットのうちの各それぞれのパレットインデックスシンタックス要素について、
    前記ビットストリームから、前記パレットインデックスシンタックス要素のうちのそれぞれの1つに対応するデータを取得することと、
    前記それぞれのパレットインデックスシンタックス要素の2値化バージョンを決定するために、前記それぞれのパレットインデックスシンタックス要素に対応する前記データをエントロピー復号することと、
    同じパレットインデックスをもつ連続するロケーションの数に基づいて、2値化方法を決定することと、
    前記それぞれのパレットインデックスシンタックス要素の前記2値化バージョンを逆2値化するために、前記決定された2値化方法を使用して、前記それぞれのパレットインデックスシンタックス要素を決定することと
    を行うように構成される、請求項15に記載のデバイス。
  19. 前記パレットインデックスシンタックス要素のセットを決定するために、前記1つまたは複数のプロセッサが、
    前記パレットインデックスシンタックス要素のセットのうちの各それぞれのパレットインデックスシンタックス要素について、
    前記ビットストリームから、前記パレットインデックスシンタックス要素のうちのそれぞれの1つに対応するデータを取得することと、
    前記それぞれのパレットインデックスシンタックス要素の2値化バージョンを決定するために、前記それぞれのパレットインデックスシンタックス要素に対応する前記データをエントロピー復号することと、
    パレットサイズに基づいて、2値化方法を決定することと、
    前記それぞれのパレットインデックスシンタックス要素の前記2値化バージョンを逆2値化するために、前記決定された2値化方法を使用して、前記それぞれのパレットインデックスシンタックス要素を決定することと
    を行うように構成される、請求項15に記載のデバイス。
  20. 前記パレットインデックスシンタックス要素のセットを決定するために、前記1つまたは複数のプロセッサが、
    前記パレットインデックスシンタックス要素のセットのうちの各それぞれのパレットインデックスシンタックス要素について、
    前記ビットストリームから、前記パレットインデックスシンタックス要素のうちのそれぞれの1つに対応するデータを取得することと、
    前記それぞれのパレットインデックスシンタックス要素の2値化バージョンを決定するために、前記それぞれのパレットインデックスシンタックス要素に対応する前記データをエントロピー復号することと、
    パレットサイズと、同じパレットインデックスをもつ連続するロケーションの数とに基づいて、2値化方法を決定することと、
    前記それぞれのパレットインデックスシンタックス要素の前記2値化バージョンを逆2値化するために、前記決定された2値化方法を使用して、前記それぞれのパレットインデックスシンタックス要素を決定することと
    を行うように構成される、請求項15に記載のデバイス。
  21. 前記1つまたは複数のプロセッサが、
    前記パレットインデックスシンタックス要素のセットのためのインデックス値が、インデックス予測子のリストを使用して予測可能であるか否かを示す、フラグを受信すること
    を行うように構成される、請求項15に記載のデバイス。
  22. 前記1つまたは複数のプロセッサが、
    前記現在ブロックのために使用される前記ラン関係シンタックス要素グループのセット中で示す最大ラン値を示すシンタックス要素を復号することと、
    切捨て値として前記最大ラン値を使用して、ラン値を復号することと
    を行うように構成される、請求項15に記載のデバイス。
  23. 前記1つまたは複数のプロセッサが、
    第1の最大パレットインデックス値を決定することと、
    第2の最大パレットインデックス値を決定することと、ここにおいて、前記第2の最大パレットインデックス値が、ランがランしきい値以上であるときのための最大パレットインデックス値を備え、ここにおいて、前記第2の最大パレットインデックス値が、前記第1の最大パレットインデックス値未満である、
    ラン値が前記ランしきい値以上であるとき、前記第2の最大パレットインデックス値に等しい切捨て値とともに切捨て2進コーディングを使用して、インデックス値をコーディングすることと、
    前記ラン値が前記ランしきい値未満であるとき、前記第1の最大パレットインデックス値に等しい切捨て値とともに切捨て2進コーディングを使用して、前記インデックス値をコーディングすることと
    を行うように構成される、請求項15に記載のデバイス。
  24. 前記1つまたは複数のプロセッサが、
    前記1つまたは複数のパレットエントリのための1つまたは複数のインデックス値を復号すること、前記1つまたは複数のインデックス値のうちの少なくとも1つのインデックス値が、前記パレットの第1の領域に属し、前記1つまたは複数のインデックス値のうちの少なくとも1つの他のインデックス値が、前記パレットの第2の領域に属し、ここにおいて、制限に従って、前記第2の領域のインデックス値が連続的な走査順序においてコーディングされ、前記制限が、前記インデックス値が前記連続的な走査順序において前記第2の領域中に現れるべきであることを示す
    を行うように構成される、請求項15に記載のデバイス。
  25. 前記デバイスが、ワイヤレス通信デバイスを備え、前記デバイスが、符号化ビデオデータを受信するように構成された受信機をさらに備える、請求項15に記載のデバイス。
  26. 前記ワイヤレス通信デバイスが、電話ハンドセットを備え、ここにおいて、前記受信機が、ワイヤレス通信規格に従って、前記符号化ビデオデータを備える信号を復調するように構成される、請求項25に記載のデバイス。
  27. ビデオデータを復号するための装置であって、
    ビットストリーム中の第1のエントロピー符号化データに基づいて、前記ビデオデータの現在ピクチャの現在ブロックのためのラン関係シンタックス要素グループのセットを決定するための手段と、
    第2のエントロピー符号化データ前記ビットストリームに基づいて、前記現在ブロックのためのパレットインデックスシンタックス要素のセットを決定するための手段と、前記第1のエントロピー符号化データが、前記第2のエントロピー符号化データの前に前記ビットストリーム中で発生し、ここにおいて、
    前記ラン関係シンタックス要素グループのセットのうちの各それぞれのラン関係シンタックス要素グループが、等しいパレットモードタイプインジケータのそれぞれのランのそれぞれのタイプと、前記それぞれのランのそれぞれの長さとを示し、
    前記パレットインデックスシンタックス要素のセットのうちの各それぞれのパレットインデックスシンタックス要素が、サンプル値のセットを備えるパレット中のエントリを示す、
    前記パレット中の前記サンプル値に基づいて、前記現在ブロックを再構築するための手段と
    を備える装置。
  28. 前記ラン関係シンタックス要素グループのセットを決定するための前記手段が、
    前記ラン関係シンタックス要素グループのセットのうちの各それぞれのラン関係シンタックス要素グループについて、複数のエントロピーコーディングコンテキストから、前記それぞれのラン関係シンタックス要素グループのためのそれぞれのエントロピーコーディングコンテキストを選択するための手段と、ここにおいて、前記それぞれのエントロピーコーディングコンテキストの前記選択が、前記パレットインデックスシンタックス要素のいずれにも依存しない、
    前記ラン関係シンタックス要素グループのセットのうちの各それぞれのラン関係シンタックス要素グループについて、前記選択されたエントロピーコーディングコンテキストに基づいて、前記それぞれのラン関係シンタックス要素グループのビンをエントロピー復号するための手段と
    を備える、請求項27に記載の装置。
  29. 前記エントロピーコーディングコンテキストを選択するための前記手段が、
    基準に基づいて、前記それぞれのラン関係シンタックス要素グループのための前記それぞれのエントロピーコーディングコンテキストを選択するための手段、ここにおいて、前記基準が、前記それぞれのラン関係シンタックス要素グループに対応するそれぞれのランの開始ピクセルの前記現在ブロック内の位置、または前記パレットのサイズのうちの一方または両方を備える
    を備える、請求項28に記載の装置。
  30. 1つまたは複数のプロセッサによって実行されたとき、前記1つまたは複数のプロセッサに、
    ビットストリーム中の第1のエントロピー符号化データに基づいて、前記ビデオデータの現在ピクチャの現在ブロックのためのラン関係シンタックス要素グループのセットを決定することと、
    第2のエントロピー符号化データ前記ビットストリームに基づいて、前記現在ブロックのためのパレットインデックスシンタックス要素のセットを決定することと、前記第1のエントロピー符号化データが、前記第2のエントロピー符号化データの前に前記ビットストリーム中で発生し、ここにおいて、
    前記ラン関係シンタックス要素グループのセットのうちの各それぞれのラン関係シンタックス要素グループが、等しいパレットモードタイプインジケータのそれぞれのランのそれぞれのタイプと、前記それぞれのランのそれぞれの長さとを示し、
    前記パレットインデックスシンタックス要素のセットのうちの各それぞれのパレットインデックスシンタックス要素が、サンプル値のセットを備えるパレット中のエントリを示す、
    前記パレット中の前記サンプル値に基づいて、前記現在ブロックを再構築することと
    を行わせる命令を記憶する、コンピュータ可読記憶媒体。
JP2017560143A 2015-05-21 2016-05-20 最後のパレットインデックスのグループ化、およびパレットサイズとラン値とを使用するインデックスコーディング Pending JP2018520562A (ja)

Applications Claiming Priority (17)

Application Number Priority Date Filing Date Title
US201562165049P 2015-05-21 2015-05-21
US62/165,049 2015-05-21
US201562172778P 2015-06-08 2015-06-08
US201562172771P 2015-06-08 2015-06-08
US201562172705P 2015-06-08 2015-06-08
US62/172,771 2015-06-08
US62/172,778 2015-06-08
US62/172,705 2015-06-08
US201562173201P 2015-06-09 2015-06-09
US201562173298P 2015-06-09 2015-06-09
US201562173325P 2015-06-09 2015-06-09
US62/173,325 2015-06-09
US62/173,201 2015-06-09
US62/173,298 2015-06-09
US15/158,795 US10448058B2 (en) 2015-05-21 2016-05-19 Grouping palette index at the end and index coding using palette size and run value
US15/158,795 2016-05-19
PCT/US2016/033589 WO2016187567A2 (en) 2015-05-21 2016-05-20 Grouping palette index at the end and index coding using palette size and run value

Publications (1)

Publication Number Publication Date
JP2018520562A true JP2018520562A (ja) 2018-07-26

Family

ID=56108709

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017560143A Pending JP2018520562A (ja) 2015-05-21 2016-05-20 最後のパレットインデックスのグループ化、およびパレットサイズとラン値とを使用するインデックスコーディング

Country Status (5)

Country Link
US (1) US10448058B2 (ja)
EP (1) EP3298778A2 (ja)
JP (1) JP2018520562A (ja)
CN (1) CN107637080A (ja)
WO (1) WO2016187567A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021015537A1 (ko) * 2019-07-21 2021-01-28 엘지전자 주식회사 팔레트 모드의 적용 여부에 따라 크로마 성분 예측 정보를 시그널링 하는 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160037111A (ko) * 2014-09-26 2016-04-05 주식회사 케이티 비디오 신호 처리 방법 및 장치
US10477218B2 (en) * 2014-10-20 2019-11-12 Kt Corporation Method and apparatus for predicting and restoring a video signal using palette entry
CN107211143B (zh) * 2015-01-15 2020-08-18 株式会社Kt 用于处理视频信号的方法和设备
KR102422485B1 (ko) * 2015-01-29 2022-07-20 주식회사 케이티 비디오 신호 처리 방법 및 장치
CN107409224B (zh) * 2015-01-29 2020-09-08 株式会社Kt 用于处理视频信号的方法和设备
US9942551B2 (en) * 2015-01-30 2018-04-10 Qualcomm Incorporated Palette index grouping for video coding
WO2016159610A1 (ko) * 2015-04-02 2016-10-06 주식회사 케이티 비디오 신호 처리 방법 및 장치
KR20180010260A (ko) * 2015-06-03 2018-01-30 미디어텍 인크. 화상 및 비디오 데이터의 팔레트 코딩 방법
WO2016206590A1 (en) * 2015-06-23 2016-12-29 Mediatek Singapore Pte. Ltd. Method and apparatus for transform coefficient coding of non-square blocks
WO2018026219A1 (ko) * 2016-08-03 2018-02-08 주식회사 케이티 비디오 신호 처리 방법 및 장치
KR20230070062A (ko) * 2016-10-04 2023-05-19 주식회사 비원영상기술연구소 영상 데이터 부호화/복호화 방법 및 장치
WO2018169176A1 (ko) * 2017-03-17 2018-09-20 엘지전자 주식회사 퀄리티 기반 360도 비디오를 송수신하는 방법 및 그 장치
GB2605931B (en) * 2017-10-18 2023-05-10 Frank Donnelly Stephen Entropy and value based packet truncation
WO2019107927A1 (ko) * 2017-11-28 2019-06-06 한국전자통신연구원 양방향 인트라 예측 방법 및 장치
US11483575B2 (en) * 2018-08-24 2022-10-25 Hfi Innovation Inc. Coding transform coefficients with throughput constraints
US10924750B2 (en) * 2019-03-01 2021-02-16 Alibaba Group Holding Limited Palette size constraint in palette mode for video compression system
US11202101B2 (en) * 2019-03-13 2021-12-14 Qualcomm Incorporated Grouped coding for palette syntax in video coding
CA3134410A1 (en) * 2019-03-23 2020-10-01 Huawei Technologies Co., Ltd. An encoder, a decoder and corresponding methods for intra prediction
CN113678448A (zh) * 2019-04-09 2021-11-19 北京字节跳动网络技术有限公司 调色板模式编解码的条目构造
KR102472032B1 (ko) * 2019-04-25 2022-11-28 베이징 다지아 인터넷 인포메이션 테크놀로지 컴퍼니 리미티드 팔레트 모드를 이용한 비디오 코딩 방법 및 장치
JP7359936B2 (ja) 2019-07-20 2023-10-11 北京字節跳動網絡技術有限公司 パレットモードの使用の指示の条件依存符号化
CN114145013B (zh) * 2019-07-23 2023-11-14 北京字节跳动网络技术有限公司 调色板模式编解码的模式确定
JP2022548582A (ja) 2019-09-12 2022-11-21 バイトダンス インコーポレイテッド 映像符号化におけるパレット予測子の使用
CN114342374A (zh) * 2019-09-19 2022-04-12 北京达佳互联信息技术有限公司 使用调色板模式的视频编解码的方法和设备
US11683489B2 (en) * 2019-12-26 2023-06-20 Qualcomm Incorporated Monochrome palette mode for video coding
WO2021136486A1 (en) * 2020-01-03 2021-07-08 Beijing Bytedance Network Technology Co., Ltd. Palette size signaling in video coding
US11496731B2 (en) * 2020-06-08 2022-11-08 Tencent America LLC String matching with single color value
US11722678B2 (en) * 2020-08-25 2023-08-08 Tencent America LLC Method and apparatus for transform skip coefficients coding

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0162197B1 (ko) 1992-05-30 1998-12-15 강진구 영상데이타의 가변장부호와/복호화방법 및 장치
KR0155784B1 (ko) 1993-12-16 1998-12-15 김광호 영상데이타의 적응형 가변장 부호화/복호화방법
US5471207A (en) * 1994-02-23 1995-11-28 Ricoh Company Ltd. Compression of palettized images and binarization for bitwise coding of M-ary alphabets therefor
SG136944A1 (en) * 2004-04-21 2007-11-29 Slipstream Data Inc Method, system and software product for color image encoding
US8410959B2 (en) 2010-04-09 2013-04-02 Qualcomm, Incorporated Variable length codes for coding of video data
EP2569944A1 (en) 2010-05-12 2013-03-20 Thomson Licensing Methods and apparatus for unified significance map coding
EP2606645A1 (en) 2010-10-14 2013-06-26 General instrument Corporation Coding and decoding utilizing context model selection with adaptive scan pattern
EP2773047A3 (en) 2011-10-24 2015-01-14 BlackBerry Limited Significance map encoding and decoding using partition selection
CN112383781B (zh) * 2013-08-16 2023-05-02 上海天荷电子信息有限公司 参考块的位置决定其重构阶段的块匹配编解码方法和装置
US10291827B2 (en) * 2013-11-22 2019-05-14 Futurewei Technologies, Inc. Advanced screen content coding solution
EP3080991B1 (en) * 2013-12-10 2020-02-12 Canon Kabushiki Kaisha Improved palette mode in hevc
CN106165424B (zh) * 2014-03-14 2019-08-16 Vid拓展公司 用于调色板解码及编码视频数据的方法、解码器及编码器
US10237557B2 (en) * 2014-06-20 2019-03-19 Hfi Innovation Inc. Method of run-length coding for palette predictor
CN110191338B (zh) * 2014-07-07 2021-09-03 寰发股份有限公司 在索引图编码中将跳出像素作为预测器的方法
EP3723378A1 (en) * 2014-10-06 2020-10-14 VID SCALE, Inc. Improved palette coding for screen content coding
WO2016176822A1 (en) * 2015-05-05 2016-11-10 Mediatek Inc. High-throughput coding method for palette coding
KR102060871B1 (ko) * 2015-04-08 2019-12-30 에이치에프아이 이노베이션 인크. 비디오 코딩에서의 팔레트 모드 콘텍스트 코딩 및 이진화를 위한 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021015537A1 (ko) * 2019-07-21 2021-01-28 엘지전자 주식회사 팔레트 모드의 적용 여부에 따라 크로마 성분 예측 정보를 시그널링 하는 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법
US11659172B2 (en) 2019-07-21 2023-05-23 Lg Electronics Inc. Image encoding/decoding method and device for signaling chroma component prediction information according to whether palette mode is applicable, and method for transmitting bitstream

Also Published As

Publication number Publication date
US10448058B2 (en) 2019-10-15
CN107637080A (zh) 2018-01-26
EP3298778A2 (en) 2018-03-28
US20160345030A1 (en) 2016-11-24
WO2016187567A3 (en) 2017-02-09
WO2016187567A2 (en) 2016-11-24

Similar Documents

Publication Publication Date Title
US10448058B2 (en) Grouping palette index at the end and index coding using palette size and run value
JP6625565B2 (ja) パレットベースのビデオコーディングにおける最大パレットパラメータ
JP6553090B2 (ja) パレットベースのビデオコーディングにおけるコーディングのラン
CN107211138B (zh) 编码、解码视频数据的方法、装置和计算机可读存储媒体
US10362336B2 (en) Palette predictor signaling with run length code for video coding
US9906799B2 (en) Copy from previous rows for palette mode coding
US9462275B2 (en) Residual quad tree (RQT) coding for video coding
US10097837B2 (en) Palette run hiding in palette-based video coding
US20160234494A1 (en) Restriction on palette block size in video coding
US20160100177A1 (en) Non-uniform exponential-golomb codes for palette mode coding
US20160094851A1 (en) Parsing dependency reduction for palette index coding
US10178395B2 (en) Explicit signaling of escape sample positions in palette coding mode for video coding

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180125