(57)【要約】  ビデオデータを復号する方法であり、この方法は、バイナリベクトルを示すランレングスシーケンスを受け取るステップであって、バイナリベクトルが、パレットベースのコーディングモードを使用して符号化されたビデオデータのブロック中のエスケープサンプルの位置を示す指示を含む、ステップと、ランレングスシーケンスを復号してバイナリベクトルを取得するステップと、バイナリベクトルを使用してビデオデータのブロックを復号するステップと、を含む。請求項1の方法はさらに、ビデオデータのブロックについてのパレットエントリーを受け取るステップと、1つまたは複数のエスケープサンプルを受け取るステップと、ビデオデータのブロック中のそれぞれの画素についてのパレットモードを示す複数のフラグを受け取るステップと、を含み得る。
2017535134.tif 000002
【特許請求の範囲】
【請求項１】
ビデオデータを復号する方法であって、
パレットベースのコーディングモードを使用して符号化されたビデオデータのブロック中のエスケープサンプルの場所を示す情報を受け取るステップであって、前記ブロック中のエスケープサンプルの場所を示す前記情報が、1つまたは複数のパレットベースのコーディングモードと、前記1つまたは複数のパレットベースのコーディングモードに関連するラン値とを示すシンタックス要素を受け取る前に受け取られる、ステップと、
前記受け取られた情報を使用してビデオデータの前記ブロックを復号するステップとを含む方法。
【請求項２】
前記情報が、ビデオデータの前記ブロック中のエスケープサンプルの位置の指示を含むバイナリベクトルである、請求項1に記載の方法。
【請求項３】
前記情報が、前記バイナリベクトルを示すランレングスシーケンスであり、
前記ランレングスシーケンスを復号して前記バイナリベクトルを取得するステップと、
前記バイナリベクトルを使用してビデオデータの前記ブロックを復号するステップとをさらに含む、請求項2に記載の方法。
【請求項４】
ビデオデータの前記ブロックについてのパレットエントリーを受け取るステップと、
1つまたは複数のエスケープサンプルを受け取るステップと、
ビデオデータの前記ブロック中のそれぞれの画素についてのパレットモードを示す複数のフラグを受け取るステップとをさらに含み、ビデオデータの前記ブロックを復号するステップが、
前記パレットエントリーと、前記1つまたは複数のエスケープサンプルと、前記バイナリベクトルと、ビデオデータの前記ブロック中のそれぞれの画素についての前記パレットモードを示す前記複数のフラグとを使用して、ビデオデータの前記ブロックを復号するステップを含む、請求項3に記載の方法。
【請求項５】
前記ランレングスシーケンスを受け取った後で、ただしモードフラグと前記モードフラグに対応するラン値とを受け取る前に、前記1つまたは複数のエスケープサンプルを受け取るステップであって、前記1つまたは複数のエスケープサンプルが共にグループ化される、ステップと、
コンテキスト適応型バイナリ算術コーディング(CABAC)のバイパスモードで前記バイナリベクトルおよび前記1つまたは複数のエスケープサンプルを復号するステップとをさらに含む、請求項3に記載の方法。
【請求項６】
ビデオデータの前記ブロックを符号化するときに使用されたエスケープサンプルのｆを示すシンタックス要素を受け取るステップと、
前記ランレングスシーケンスを受け取る前に、かつモードフラグと前記モードフラグに対応するラン値とを受け取る前に、前記1つまたは複数のエスケープサンプルを受け取るステップであって、前記1つまたは複数のエスケープサンプルが共にグループ化される、ステップと、
前記バイナリベクトルと、エスケープサンプルの前記総数を示す前記シンタックス要素と、前記1つまたは複数のエスケープサンプルとを、コンテキスト適応型バイナリ算術コーディング(CABAC)のバイパスモードで復号するステップとをさらに含む、請求項3に記載の方法。
【請求項７】
ビデオデータの前記ブロックを符号化するときに使用されたエスケープサンプルの総数を示すシンタックス要素を受け取るステップをさらに含み、前記ランレングスシーケンスを復号するステップが、エスケープサンプルの前記総数を使用して、前記ランレングスシーケンスを復号して前記バイナリベクトルを取得するステップを含む、請求項3に記載の方法。
【請求項８】
前記ランレングスシーケンスが、前記バイナリベクトル中の各1値の間の0値のランレングスを示す1つまたは複数の値を含む、請求項3に記載の方法。
【請求項９】
前記ランレングスシーケンスが、前記バイナリベクトル中の各1値の間の0値のランレングスを示す1つまたは複数の値と、前記バイナリベクトル中の最後の1値を示す特別な値とを含む、請求項3に記載の方法。
【請求項１０】
前記ランレングスシーケンスを復号するステップが、前記ランレングスシーケンス中の特定の値が前記特別な値よりも大きい場合に前記特定の値を1つインクリメントするステップを含む、請求項9に記載の方法。
【請求項１１】
前記ランレングスシーケンスを復号するステップが、
切捨てコードを使用して前記ランレングスシーケンスを復号するステップと、
前記ランレングスシーケンス中の各値につき前記ランレングスシーケンスの最大値を決定するステップとを含む、請求項3に記載の方法。
【請求項１２】
前記切捨てコードが切捨て指数ゴロムコードであり、前記最大値を決定するステップが、式(B-i-R)に従って前記ランレングスシーケンス中の各値につき前記ランレングスシーケンスの前記最大値を決定するステップを含み、Bが、ビデオデータの前記ブロック中のサンプルの総数であり、iが、0の現在のランの開始場所であり、Rが、残りのエスケープサンプルの数である、請求項11に記載の方法。
【請求項１３】
copy aboveモードについてのインデックスの第1のランを受け取るステップと、
indexモードについてのインデックスの第2のランを受け取るステップと、
切捨てコードを用いてインデックスの前記第1のランおよびインデックスの前記第2のランを復号するステップとをさらに含む、請求項3に記載の方法。
【請求項１４】
式(j-1-i)に従って、インデックスの前記第1のランおよびインデックスの前記第2のラン中の各値につき、インデックスの前記第1のランおよびインデックスの前記第2のランの最大値を決定するステップをさらに含み、jが、前記ブロック中の場所jにおける次のエスケープシンボルであり、iが、前記ブロック中の現在の場所である、請求項13に記載の方法。
【請求項１５】
最初に、ビデオデータの前記ブロックを符号化するときに使用されたエスケープサンプルの総数を示すシンタックス要素を受け取るステップと、
次に、前記バイナリベクトルを示す前記ランレングスシーケンスを受け取るステップであって、前記バイナリベクトルが、前記パレットベースのコーディングモードを使用して符号化されたビデオデータのブロック中のエスケープサンプルの位置の指示を含む、ステップと、
次に、前記1つまたは複数のエスケープサンプルを受け取るステップと、
次に、copy aboveモードとindexモードとの少なくとも一方についての1つまたは複数のモードフラグを受け取るステップと、
次に、前記1つまたは複数のモードフラグの各々についての関連するラン値を受け取るステップとをさらに含む、請求項3に記載の方法。
【請求項１６】
ビデオデータを復号するように構成された装置であって、
前記ビデオデータを記憶するように構成されたメモリと、
ビデオデコーダとを備え、前記ビデオデコーダが、
パレットベースのコーディングモードを使用して符号化された前記ビデオデータのブロック中のエスケープサンプルの場所を示す情報を受け取ることであって、前記ブロック中のエスケープサンプルの場所を示す前記情報が、1つまたは複数のパレットベースのコーディングモードと、前記1つまたは複数のパレットベースのコーディングモードに関連するラン値とを示すシンタックス要素を受け取る前に受け取られるものであること、および、
前記受け取られた情報を使用して前記ビデオデータの前記ブロックを復号すること、を行うように構成された、装置。
【請求項１７】
前記情報が、前記ビデオデータの前記ブロック中のエスケープサンプルの位置の指示を含むバイナリベクトルである、請求項16に記載の装置。
【請求項１８】
前記情報が、前記バイナリベクトルを示すランレングスシーケンスであり、前記ビデオデコーダがさらに、
前記ランレングスシーケンスを復号して前記バイナリベクトルを取得すること、および、
前記バイナリベクトルを使用してビデオデータの前記ブロックを復号すること、を行うように構成された、請求項17に記載の装置。
【請求項１９】
前記ビデオデコーダがさらに、
前記ランレングスシーケンスを受け取った後で、ただしモードフラグと前記モードフラグに対応するラン値とを受け取る前に、前記1つまたは複数のエスケープサンプルを受け取ることであって、前記1つまたは複数のエスケープサンプルが共にグループ化されるものであること、ならびに、
コンテキスト適応型バイナリ算術コーディング(CABAC)のバイパスモードで前記バイナリベクトルおよび前記1つまたは複数のエスケープサンプルを復号すること、を行うように構成された、請求項18に記載の装置。
【請求項２０】
前記ビデオデコーダがさらに、
ビデオデータの前記ブロックを符号化するときに使用されたエスケープサンプルの総数を示すシンタックス要素を受け取ること、
前記ランレングスシーケンスを受け取る前に、かつモードフラグと前記モードフラグに対応するラン値とを受け取る前に、前記1つまたは複数のエスケープサンプルを受け取ることであって、前記1つまたは複数のエスケープサンプルが共にグループ化されるものであること、および、
前記バイナリベクトルと、エスケープサンプルの総数を示す前記シンタックス要素と、前記1つまたは複数のエスケープサンプルとを、コンテキスト適応型バイナリ算術コーディング(CABAC)のバイパスモードで復号すること、を行うように構成された、請求項18に記載の装置。
【請求項２１】
前記ランレングスシーケンスが、前記バイナリベクトル中の各1値の間の0値のランレングスを示す1つまたは複数の値を含む、請求項18に記載の装置。
【請求項２２】
前記ランレングスシーケンスが、前記バイナリベクトル中の各1値の間の0値のランレングスを示す1つまたは複数の値と、前記バイナリベクトル中の最後の1値を示す特別な値とを含む、請求項18に記載の装置。
【請求項２３】
前記ランレングスシーケンスを復号するために、前記ビデオデコーダがさらに、前記ランレングスシーケンス中の特定の値が前記特別な値よりも大きい場合に前記特定の値を1つインクリメントするように構成された、請求項22に記載の装置。
【請求項２４】
前記ランレングスシーケンスを復号するために、前記ビデオデコーダがさらに、
切捨てコードを使用して前記ランレングスシーケンスを復号すること、および、
前記ランレングスシーケンス中の各値につき前記ランレングスシーケンスの最大値を決定すること、を行うように構成された、請求項18に記載の装置。
【請求項２５】
前記切捨てコードが切捨て指数ゴロムコードであり、前記ビデオデコーダがさらに、式(B-i-R)に従って前記ランレングスシーケンス中の各値につき前記ランレングスシーケンスの前記最大値を決定するように構成され、Bが、ビデオデータの前記ブロック中のサンプルの総数であり、iが、0の現在のランの開始場所であり、Rが、残りのエスケープサンプルの数である、請求項24に記載の装置。
【請求項２６】
前記ビデオデコーダがさらに、
copy aboveモードについてのインデックスの第1のランを受け取ること、
indexモードについてのインデックスの第2のランを受け取ること、および、
切捨てコードを用いてインデックスの前記第1のランおよびインデックスの前記第2のランを復号すること、を行うように構成された、請求項18に記載の装置。
【請求項２７】
前記ビデオデコーダがさらに、
式(j-1-i)に従って、インデックスの前記第1のランおよびインデックスの前記第2のラン中の各値につき、インデックスの前記第1のランおよびインデックスの前記第2のランの最大値を決定するように構成され、jが、前記ブロック中の場所jにおける次のエスケープシンボルであり、iが、前記ブロック中の現在の場所である、請求項26に記載の装置。
【請求項２８】
前記ビデオデコーダがさらに、
最初に、ビデオデータの前記ブロックを符号化するときに使用されたエスケープサンプルの総数を示すシンタックス要素を受け取ること、
次に、前記バイナリベクトルを示す前記ランレングスシーケンスを受け取ることであって、前記バイナリベクトルが、前記パレットベースのコーディングモードを使用して符号化されたビデオデータの前記ブロック中のエスケープサンプルの位置の指示を含むものであること、
次に、前記1つまたは複数のエスケープサンプルを受け取ること、
次に、copy aboveモードとindexモードとの少なくとも一方についての1つまたは複数のモードフラグを受け取ること、および、
次に、前記1つまたは複数のモードフラグの各々についての関連するラン値を受け取ること、を行うように構成された、請求項18に記載の装置。
【請求項２９】
ビデオデータを復号するように構成された装置であって、
パレットベースのコーディングモードを使用して符号化されたビデオデータのブロック中のエスケープサンプルの場所を示す情報を受け取るための手段であって、前記ブロック中のエスケープサンプルの場所を示す前記情報が、1つまたは複数のパレットベースのコーディングモードと、前記1つまたは複数のパレットベースのコーディングモードに関連するラン値とを示すシンタックス要素を受け取る前に受け取られる、手段と、
前記受け取られた情報を使用してビデオデータの前記ブロックを復号するための手段とを備える装置。
【請求項３０】
命令を記憶したコンピュータ可読ストレージ媒体であって、前記命令が、実行されたとき、ビデオデータを復号するように構成された1つまたは複数のプロセッサに、
パレットベースのコーディングモードを使用して符号化された前記ビデオデータのブロック中のエスケープサンプルの場所を示す情報を受け取ることであって、前記ブロック中のエスケープサンプルの場所を示す前記情報が、1つまたは複数のパレットベースのコーディングモードと、前記1つまたは複数のパレットベースのコーディングモードに関連するラン値とを示すシンタックス要素を受け取る前に受け取られるものであること、および、
前記受け取られた情報を使用して前記ビデオデータの前記ブロックを復号すること、を行わせる、コンピュータ可読ストレージ媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、2014年9月30日に出願された米国仮出願第62/057,819号の利益を主張するものであり、その内容全体が参照により本明細書に組み込まれる。
【０００２】
本開示は、ビデオ符号化およびビデオ復号に関する。
【背景技術】
【０００３】
デジタルビデオ機能は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末(PDA)、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダー、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、セルラーまたは衛星無線電話、いわゆる「スマートフォン」、ビデオ遠隔会議デバイス、ビデオストリーミングデバイスなどを含む、広範囲のデバイスに組み込まれ得る。デジタルビデオデバイスは、MPEG-2、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4、Part 10、Advanced Video Coding(AVC)、現在開発中のHigh Efficiency Video Coding(HEVC)規格、およびそのような規格の拡張によって定義された規格に記載されるもののような、ビデオ圧縮技法を実装する。ビデオデバイスは、そのようなビデオ圧縮技法を実装することによって、デジタルビデオ情報をより効率的に送信、受信、符号化、復号、および/または記憶し得る。
【０００４】
ビデオ圧縮技法は、ビデオシーケンスに固有の冗長性を低減または除去するために、空間的(ピクチャ内)予測および/または時間的(ピクチャ間)予測を実行する。ブロックベースのビデオコーディングの場合、ビデオスライス(すなわち、ビデオフレーム、またはビデオフレームの一部分)は、ビデオブロックに区分され得る。ピクチャのイントラコーディングされた(I)スライスの中のビデオブロックは、同じピクチャの中の隣接ブロック中の参照サンプルに対する空間予測を使用して符号化される。ピクチャのインターコーディングされた(PまたはB)スライスの中のビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間予測、または他の参照ピクチャ中の参照サンプルに対する時間予測を使用し得る。ピクチャはフレームと呼ばれることがあり、参照ピクチャは参照フレームと呼ばれることがある。
【０００５】
空間予測または時間予測は、コーディングされるべきブロックの予測ブロックをもたらす。残差データは、コーディングされるべき元のブロックと予測ブロックとの間の画素の差分を表す。インターコーディングされたブロックは、予測ブロックを形成する参照サンプルのブロックを指す動きベクトルに従って符号化され、残差データは、コーディングされたブロックと予測ブロックとの差分を示す。イントラコーディングされたブロックは、イントラコーディングモードおよび残差データに従って符号化される。さらなる圧縮のために、残差データは画素領域から変換領域に変換されることがあり、これは残差係数をもたらし、残差係数は次いで量子化され得る。最初に2次元アレイに配置される量子化された係数は、係数の1次元ベクトルを生成するために走査されてよく、なお一層の圧縮を達成するためにエントロピーコーディングが適用されてよい。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】Bross他、「High Efficiency Video Coding (HEVC) Text Specification Draft 10 (for FDIS & Consent)」、JCVC-L1003_v13、ITU-T SG16 WP 3およびISO/IEC JCT 1/SC 29/WG 11のJCT-VCの第12回会議、2013年1月14日〜23日(「HEVC Draft 10」)
【非特許文献２】ITU-T H.265 (V1)
【非特許文献３】ITU-T H.265、SERIES H: AUDIOVISUAL AND MULTIMEDIA SYSTEMS、Infrastructure of Audiovisual Services-Coding of Moving Video、「High Efficiency Video Coding」、2013年4月
【非特許文献４】ITU-T H.265 (V2)
【非特許文献５】JCTVC-Q0094(Wei Pu他、「AHG10: Suggested Software for Palette Coding based on RExt6.0」、JCTVC-Q0094、バレンシア、スペイン、2014年3月27日〜4月4日)
【非特許文献６】JCTVC-Q1123(Yu-Wen Huang他、「Description of Screen Content Core Experiment 3 (SCCE3): Palette Mode」、JCTVC-Q1123、バレンシア、スペイン、2014年3月27日〜4月4日)
【非特許文献７】W. Pu、F. Zou、M. Karczewicz、およびR. Joshi、「Non-RCE4: Refinement of the palette in RCE4 Test 2」、JCTVC-P0231
【発明の概要】
【課題を解決するための手段】
【０００７】
本開示は、ビデオ符号化および復号技法に関する。特に、本開示は、パレットベースのコーディングモードを用いてビデオデータを符号化および復号するための技法について説明する。パレットベースのコーディングモードでは、ビデオデータのブロックについての画素値が、ビデオデータのブロックに関連付けられた色値のパレットに対してコーディングされることが可能である。色値のパレットは、ビデオエンコーダによって決定されてよく、特定のブロックについて最も一般的な色値を含むことができる。ビデオエンコーダは、ビデオデータのブロック中の各画素に、色値のパレットへのインデックスを割り当てることができ、そのようなインデックスをビデオデコーダにシグナリングすることができる。次いで、ビデオデコーダは、パレットへのインデックスを使用して、ブロック中の特定の画素に対してどんな色値を使用するかを決定することができる。
【０００８】
本開示はまた、パレットベースのコーディングモードを使用してコーディングされたビデオデータのブロック中で使用されるエスケープサンプルの位置の指示をコーディングするための技法についても説明する。エスケープサンプルは、ビデオデータのブロックに関連付けられたパレット内にない色値を有する、パレットベースのコーディングモードを使用してコーディングされたビデオデータのブロック中の画素である。本開示は、バイナリベクトルがコーディングされるための技法を提案し、バイナリベクトル中の各要素は、ブロック中の特定の画素がエスケープサンプルであるか否かを示す。次いで、バイナリベクトルは、さらに圧縮されるように、ランレングスコーディング技法を使用してコーディングされてよい。
【０００９】
本開示の一例では、ビデオデータを復号する方法は、パレットベースのコーディングモードを使用して符号化されたビデオデータのブロック中のエスケープサンプルの場所を示す情報を受け取るステップであって、ブロック中のエスケープサンプルの場所を示す情報が、1つまたは複数のパレットベースのコーディングモードと、1つまたは複数のパレットベースのコーディングモードに関連するラン値とを示すシンタックス要素を受け取る前に受け取られる、ステップと、受け取られた情報を使用してビデオデータのブロックを復号するステップと、を含む。
【００１０】
本開示の別の例では、ビデオデータを復号するように構成された装置は、ビデオデータを記憶するように構成されたメモリと、ビデオデコーダとを備え、ビデオデコーダは、パレットベースのコーディングモードを使用して符号化されたビデオデータのブロック中のエスケープサンプルの場所を示す情報を受け取ることであって、ブロック中のエスケープサンプルの場所を示す情報が、1つまたは複数のパレットベースのコーディングモードと、1つまたは複数のパレットベースのコーディングモードに関連するラン値とを示すシンタックス要素を受け取る前に受け取られるものであること、および、受け取られた情報を使用してビデオデータのブロックを復号すること、を行うように構成される。
【００１１】
本開示の別の例では、ビデオデータを復号するように構成された装置は、パレットベースのコーディングモードを使用して符号化されたビデオデータのブロック中のエスケープサンプルの場所を示す情報を受け取るための手段であって、ブロック中のエスケープサンプルの場所を示す情報が、1つまたは複数のパレットベースのコーディングモードと、1つまたは複数のパレットベースのコーディングモードに関連するラン値とを示すシンタックス要素を受け取る前に受け取られる、手段と、受け取られた情報を使用してビデオデータのブロックを復号するための手段と、を備える。
【００１２】
別の例では、本開示は、命令を記憶したコンピュータ可読ストレージ媒体について説明する。これらの命令は、実行されたとき、ビデオデータを復号するように構成された1つまたは複数のプロセッサに、パレットベースのコーディングモードを使用して符号化されたビデオデータのブロック中のエスケープサンプルの場所を示す情報を受け取ることであって、ブロック中のエスケープサンプルの場所を示す情報が、1つまたは複数のパレットベースのコーディングモードと、1つまたは複数のパレットベースのコーディングモードに関連するラン値とを示すシンタックス要素を受け取る前に受け取られるものであること、および、受け取られた情報を使用してビデオデータのブロックを復号すること、を行わせる。
【００１３】
1つまたは複数の例の詳細が、添付の図面および以下の説明に記載される。他の特徴、目的、および利点は、その説明および図面から、ならびに特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【００１４】
【図１】本開示において説明される技法を利用し得る例示的なビデオコーディングシステムを示すブロック図である。
【図２】本開示において説明される技法を実装し得る例示的なビデオエンコーダを示すブロック図である。
【図３】本開示において説明される技法を実装し得る例示的なビデオデコーダを示すブロック図である。
【図４】本開示の技法によりコーディングされた例示的なバイナリベクトルおよびランレングスシーケンスを示す概念図である。
【図５】本開示の技法に従った、パレットベースのビデオコーディングのためのパレットエントリーを決定することの例を示す概念図である。
【図６】本開示の技法に従った、画素のブロックのためのパレットに対するインデックスを決定する例を示す概念図である。
【図７】本開示の技法による例示的な符号化方法を示すフローチャートである。
【図８】本開示の技法による例示的な復号方法を示すフローチャートである。
【発明を実施するための形態】
【００１５】
本開示は、ビデオコーディングおよび圧縮のための技法について説明する。特に、本開示は、パレットベースのコーディングモードを使用してスクリーンコンテンツをコーディングするための技法について説明する。本開示の様々な例では、パレットモードにおけるエスケープサンプル場所の明示的なシグナリングのための技法が開示される。
【００１６】
従来のビデオコーディングでは、画像は、階調が連続的であり空間的に滑らかであるものと仮定される。これらの仮定に基づいて、ブロックベースの変換、フィルタリングなどの様々なツールが開発されており、そのようなツールは、自然コンテンツのビデオに対して良好な性能を示してきた。しかしながら、リモートデスクトップ、共同作業およびワイヤレスディスプレイのような適用例では、コンピュータにより生成されるスクリーンコンテンツが、圧縮されるべき主要なコンテンツであることがある。このタイプのスクリーンコンテンツは、離散的な階調を有し、鋭い線および高コントラストのオブジェクト境界を特徴とする傾向がある。階調が連続的であり滑らかであるという仮定はもはや当てはまらないことがあるので、従来のビデオコーディング技法はスクリーンコンテンツを圧縮するのに非効率な方法であることがある。
【００１７】
本開示は、コンピュータにより生成されたスクリーンコンテンツのコーディングに対して特に適していることがある、パレットベースのコーディング技法を説明する。たとえば、ビデオデータの特定のエリアは、比較的少数の色を有するものと仮定する。ビデオコーダ(たとえば、ビデオエンコーダまたはビデオデコーダ)は、特定のエリア(たとえば、所与のブロック)のビデオデータを表すための色のテーブルとして、いわゆる「パレット」をコーディング(すなわち、符号化または復号)し得る。各画素は、画素の色を表すパレットの中のエントリーと関連付けられ得る。たとえば、ビデオコーダは、画素値をパレット中の適切な値と関連付けるインデックスをコーディングし得る。
【００１８】
上の例では、ビデオエンコーダは、ブロックに対するパレットを決定することと、各画素の値を表すためのパレット中のエントリーを位置特定することと、パレットおよび画素値をパレットと関連付ける画素に対するインデックス値を符号化することとによって、ビデオデータのブロックを符号化し得る。ビデオデコーダは、ブロックに対するパレット、ならびにブロックの画素に対するインデックス値を、符号化されたビットストリームから取得し得る。ビデオデコーダは、ブロックの画素値を再構築するために、画素のインデックス値をパレットのエントリーと関連付け得る。上の例は、パレットベースのコーディングの一般的な説明を提供することが意図される。
【００１９】
いくつかの例では、パレットベースのコーディング技法は、1つまたは複数のビデオコーディング規格とともに使用するために構成され得る。例示的なビデオコーディング規格は、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、およびITU-T H.264(ISO/IEC MPEG-4 AVCとしても知られる)を含む。High Efficiency Video Coding(HEVC)は、ITU-T Video Coding Experts Group(VCEG)およびISO/IEC Motion Picture Experts Group(MPEG)のJoint Collaboration Team on Video Coding(JCT-VC)によって開発された新しいビデオコーディング規格である。最近のHEVC text specification draftは、Bross他、「High Efficiency Video Coding (HEVC) Text Specification Draft 10 (for FDIS & Consent)」、JCVC-L1003_v13、ITU-T SG16 WP 3およびISO/IEC JCT 1/SC 29/WG 11のJCT-VCの第12回会議、2013年1月14日〜23日(「HEVC Draft 10」)に記載されており、http://phenix.int-evry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC-L1003-v13.zipから入手可能である。
【００２０】
最近、HEVCの設計が、ITU-T Video Coding Experts Group(VCEG)およびISO/IEC Motion Picture Experts Group(MPEG)のJoint Collaboration Team on Video Coding(JCT-VC)によって最終決定された。最新のHEVC仕様は、以下ではHEVC Version 1と呼ばれるが、この仕様は、「ITU-T H.265 (V1)」に記載されており、2015年3月24日時点のこの仕様は、http://www.itu.int/ITU-T/recommendations/rec.aspx?rec=11885&lang=enから入手可能である。文書ITU-T H.265、SERIES H: AUDIOVISUAL AND MULTIMEDIA SYSTEMS、Infrastructure of Audiovisual Services-Coding of Moving Video、「High Efficiency Video Coding」、2013年4月もまた、HEVC規格を記載している。Range拡張の最近の仕様は、以下ではRExtと呼ばれるが、この仕様は、「ITU-T H.265 (V2)」に記載されており、2015年3月24日時点のこの仕様は、http://www.itu.int/ITU-T/recommendations/rec.aspx?rec=12296&lang=enから入手可能である。
【００２１】
図1は、本開示の技法を利用し得る例示的なビデオコーディングシステム10を示すブロック図である。本明細書において使用される「ビデオコーダ」という用語は、総称的に、ビデオエンコーダとビデオデコーダの両方を指す。本開示では、「ビデオコーディング」または「コーディング」という用語は、ビデオ符号化またビデオ復号を総称的に指し得る。ビデオコーディングシステム10のビデオエンコーダ20およびビデオデコーダ30は、本開示において説明される様々な例によるパレットベースのビデオコーディングのための技法を実行するように構成され得るデバイスの例を表す。
【００２２】
図1に示されるように、ビデオコーディングシステム10は、ソースデバイス12および宛先デバイス14を含む。ソースデバイス12は、符号化されたビデオデータを生成する。したがって、ソースデバイス12は、ビデオ符号化デバイスまたはビデオ符号化装置と呼ばれることがある。宛先デバイス14は、ソースデバイス12によって生成された符号化されたビデオデータを復号し得る。したがって、宛先デバイス14は、ビデオ復号デバイスまたはビデオ復号装置と呼ばれることがある。ソースデバイス12および宛先デバイス14は、ビデオコーディングデバイスまたはビデオコーディング装置の例であり得る。ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、モバイルコンピューティングデバイス、ノートブック(たとえば、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、車載コンピュータなどを含む、広範囲のデバイスを備え得る。
【００２３】
宛先デバイス14は、符号化されたビデオデータをソースデバイス12からチャネル16を介して受信し得る。チャネル16は、符号化されたビデオデータをソースデバイス12から宛先デバイス14に移動させることが可能な1つまたは複数の媒体またはデバイスを備え得る。一例では、チャネル16は、ソースデバイス12がリアルタイムで符号化されたビデオデータを直接宛先デバイス14に送信することを可能にする、1つまたは複数の通信媒体を備え得る。この例では、ソースデバイス12は、ワイヤレス通信プロトコルなどの通信規格に従って符号化されたビデオデータを変調することができ、変調されたビデオデータを宛先デバイス14へ送信することができる。1つまたは複数の通信媒体は、高周波(RF)スペクトルまたは1つまたは複数の物理伝送線路のような、ワイヤレスおよび/または有線の通信媒体を含み得る。1つまたは複数の通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはグローバルネットワーク(たとえば、インターネット)のような、パケットベースのネットワークの一部を形成し得る。1つまたは複数の通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス12から宛先デバイス14への通信を容易にする他の機器を含み得る。
【００２４】
別の例では、チャネル16は、ソースデバイス12によって生成された符号化されたビデオデータを記憶する記憶媒体を含み得る。この例では、宛先デバイス14は、たとえば、ディスクアクセスまたはカードアクセスを介して記憶媒体にアクセスし得る。記憶媒体は、ブルーレイディスク、DVD、CD-ROM、フラッシュメモリ、または符号化されたビデオデータを記憶するための他の適当なデジタル記憶媒体のような、ローカルにアクセスされる様々なデータ記憶媒体を含み得る。
【００２５】
さらなる例では、チャネル16は、ソースデバイス12によって生成された符号化されたビデオデータを記憶するファイルサーバまたは別の中間記憶デバイスを含み得る。この例では、宛先デバイス14は、ファイルサーバまたは他の中間記憶デバイスにおいて記憶された符号化されたビデオデータに、ストリーミングまたはダウンロードを介してアクセスし得る。ファイルサーバは、符号化されたビデオデータを記憶するとともに符号化されたビデオデータを宛先デバイス14へ送信することが可能なタイプのサーバであり得る。例示的なファイルサーバは、ウェブサーバ(たとえば、ウェブサイト用の)、ファイル転送プロトコル(FTP)サーバ、ネットワーク接続ストレージ(NAS)デバイス、およびローカルディスクドライブを含む。
【００２６】
宛先デバイス14は、インターネット接続などの標準的なデータ接続を通じて、符号化されたビデオデータにアクセスし得る。データ接続の例示的なタイプは、ファイルサーバに記憶されている符号化されたビデオデータにアクセスするのに適している、ワイヤレスチャネル(たとえば、Wi-Fi接続)、有線接続(たとえば、DSL、ケーブルモデムなど)、または両方の組合せを含み得る。ファイルサーバからの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであってよい。
【００２７】
パレットベースのビデオコーディングのための本開示の技法は、ワイヤレスの適用例または設定に限定されない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえば、インターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのビデオデータの符号化、データ記憶媒体に記憶されたビデオデータの復号、または他の用途などの様々なマルチメディア用途をサポートするビデオコーディングに適用され得る。いくつかの例では、ビデオコーディングシステム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオ電話のような用途をサポートするために、単方向または双方向のビデオ送信をサポートするように構成され得る。
【００２８】
図1に示されるビデオコーディングシステム10は例にすぎず、本開示の技法は、符号化デバイスと復号デバイスとの間に必ずしもデータ通信を含まないビデオコーディングの状況(たとえば、ビデオ符号化またはビデオ復号)に適用され得る。他の例では、データは、ローカルメモリから取り出され、ネットワークを介してストリーミングされ、または同様の方法で取り出される。ビデオ符号化デバイスは、データを符号化してメモリに記憶することができ、かつ/または、ビデオ復号デバイスは、メモリからデータを取り出して復号することができる。多くの例では、互いに通信しないが、単にデータをメモリへ符号化し、かつ/またはメモリからデータを取り出して復号するデバイスによって、符号化および復号が実行される。
【００２９】
図1の例では、ソースデバイス12は、ビデオソース18、ビデオエンコーダ20、および出力インターフェース22を含む。いくつかの例では、出力インターフェース22は、変調器/復調器(モデム)および/または送信機を含み得る。ビデオソース18は、ビデオキャプチャデバイス、たとえば、ビデオカメラ、前にキャプチャされたビデオデータを含むビデオアーカイブ、ビデオデータをビデオコンテンツプロバイダから受信するためのビデオフィードインターフェース、および/もしくはビデオデータを生成するためのコンピュータグラフィックスシステム、またはビデオデータのそのようなソースの組合せを含み得る。
【００３０】
ビデオエンコーダ20は、ビデオソース18からのビデオデータを符号化し得る。いくつかの例では、ソースデバイス12は、符号化されたビデオデータを宛先デバイス14へ出力インターフェース22を介して直接送信する。他の例では、復号および/または再生のために宛先デバイス14によって後でアクセスするために、符号化されたビデオデータはまた、記憶媒体またはファイルサーバへ記憶され得る。
【００３１】
図1の例では、宛先デバイス14は、入力インターフェース28、ビデオデコーダ30、およびディスプレイデバイス32を含む。いくつかの例では、入力インターフェース28は、受信機および/またはモデムを含む。入力インターフェース28は、符号化されたビデオデータをチャネル16を通じて受信し得る。ディスプレイデバイス32は、宛先デバイス14と一体化されてよく、または宛先デバイス14の外部にあってよい。一般に、ディスプレイデバイス32は復号されたビデオデータを表示する。ディスプレイデバイス32は、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなどの様々なディスプレイデバイスを備え得る。
【００３２】
ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、個別論理、ハードウェア、またはそれらの任意の組合せなどの、様々な適当な回路のいずれかとして実装され得る。技法が部分的にソフトウェアで実装される場合、本開示の技法を実行するために、デバイスは、ソフトウェアのための命令を適当な非一時的コンピュータ可読記憶媒体に記憶することができ、1つまたは複数のプロセッサを使用するハードウェアにおいて命令を実行することができる。前述のもののいずれか(ハードウェア、ソフトウェア、ハードウェアとソフトウェアの組合せなどを含む)は、1つまたは複数のプロセッサであると見なされてよい。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダに含まれてよく、それらのいずれかが、組み合わされたエンコーダ/デコーダ(コーデック)の一部としてそれぞれのデバイスの中で一体化されてよい。
【００３３】
本開示は、一般に、ある種の情報をビデオデコーダ30などの別のデバイスへ「シグナリングする」または「送信する」ビデオエンコーダ20に言及することがある。「シグナリングすること」または「送信すること」という用語は、一般に、シンタックス要素、および/または圧縮されたビデオデータを復号するために使用される他のデータの通信を指し得る。そのような通信は、リアルタイムで、またはほぼリアルタイムで発生し得る。代替的に、そのような通信はある時間の範囲にわたって発生することがあり、たとえば、符号化の時点において符号化されたビットストリームの中のシンタックス要素をコンピュータ可読記憶媒体に記憶し、次いでシンタックス要素がこの媒体に記憶された後の任意の時点において復号デバイスによって取り出され得るときに発生することがある。
【００３４】
いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、上述のHEVC規格のような、HEVC Draft 10に記載されているビデオ圧縮規格に従って動作する。ベースのHEVC規格に加えて、HEVC向けのスケーラブルビデオコーディング拡張、マルチビュービデオコーディング拡張、および3Dコーディング拡張を制作するための取組みが進行中である。加えて、たとえば、本開示において説明されるようなパレットベースのコーディングモードは、HEVC規格の拡張のために提供され得る。いくつかの例では、パレットベースのコーディングのための本開示で説明される技法は、ITU-T-H.264/AVC規格のような他のビデオコーディング規格または将来の規格に従って動作するように構成されたエンコーダおよびデコーダに適用され得る。したがって、HEVCコーデックにおけるコーディングユニット(CU)または予測ユニット(PU)のコーディングのためのパレットベースのコーディングモードの適用例は、例として説明される。
【００３５】
後でより詳細に説明されるように、ビデオエンコーダ20は、パレットベースのコーディングモードを使用してビデオデータのブロックを符号化すること、ビデオデータのブロック中のエスケープサンプルの位置の指示を含むバイナリベクトルを生成すること、および、バイナリベクトルを符号化してランレングスシーケンスを作成すること、を行うように構成され得る。同様に、ビデオデコーダ30は、バイナリベクトルを示すランレングスシーケンスを受け取ることであって、バイナリベクトルが、パレットベースのコーディングモードを使用して符号化されたビデオデータのブロック中のエスケープサンプルの位置の指示を含むものであること、ランレングスシーケンスを復号してバイナリベクトルを取得すること、および、バイナリベクトルを使用してビデオデータのブロックを復号すること、を行うように構成され得る。
【００３６】
HEVCおよび他のビデオコーディング規格では、ビデオシーケンスは通常、一連のピクチャを含む。ピクチャは、「フレーム」と呼ばれることもある。ピクチャは、SL、SCb、およびSCrと示される3つのサンプルアレイを含み得る。SLは、ルーマサンプルの2次元アレイ(すなわち、ブロック)である。SCbは、Cbクロミナンスサンプルの2次元アレイである。SCrは、Crクロミナンスサンプルの2次元アレイである。クロミナンスサンプルは、本明細書で「クロマ」サンプルと呼ばれることもある。他の事例では、ピクチャはモノクロであってよく、ルーマサンプルのアレイだけを含むことがある。
【００３７】
ピクチャの符号化された表現を生成するために、ビデオエンコーダ20が、コーディングツリーユニット(CTU)のセットを生成し得る。CTUの各々は、ルーマサンプルのコーディングツリーブロック、クロマサンプルの2つの対応するコーディングツリーブロック、およびコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造であり得る。コーディングツリーブロックは、サンプルのN×Nのブロックであり得る。CTUは、「ツリーブロック」または「最大コーディングユニット」(LCU)と呼ばれることもある。HEVCのCTUは、H.264/AVCなどの他の規格のマクロブロックと大まかに類似し得る。しかしながら、CTUは、必ずしも特定のサイズに限定されず、1つまたは複数のコーディングユニット(CU)を含み得る。スライスは、ラスター走査において連続的に順序付けられた整数個のCTUを含み得る。
【００３８】
コーディングされたCTUを生成するために、ビデオエンコーダ20がCTUのコーディングツリーブロック上で4分木区分を再帰的に実行してコーディングツリーブロックをコーディングブロックに分割することができ、したがって、「コーディングツリーユニット」という名前である。コーディングブロックは、サンプルのN×Nのブロックである。CUは、ルーマサンプルアレイ、Cbサンプルアレイ、およびCrサンプルアレイを有するピクチャの、ルーマサンプルのコーディングブロック、およびクロマサンプルの2つの対応するコーディングブロック、ならびにコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造であり得る。ビデオエンコーダ20は、CUのコーディングブロックを1つまたは複数の予測ブロックに区分し得る。予測ブロックは、同じ予測が適用されるサンプルの、長方形(すなわち、正方形または非正方形)のブロックであり得る。CUの予測ユニット(PU)は、ピクチャの、ルーマサンプルの予測ブロック、クロマサンプルの2つの対応する予測ブロック、および予測ブロックサンプルを予測するために使用されるシンタックス構造であり得る。ビデオエンコーダ20は、CUの各PUのルーマ予測ブロック、Cb予測ブロック、およびCr予測ブロックに対して、予測ルーマブロック、予測Cbブロック、および予測Crブロックを生成し得る。
【００３９】
ビデオエンコーダ20は、PUに対する予測ブロックを生成するために、イントラ予測またはインター予測を使用し得る。ビデオエンコーダ20がPUの予測ブロックを生成するためにイントラ予測を使用する場合、ビデオエンコーダ20は、PUと関連付けられるピクチャの復号されたサンプルに基づいて、PUの予測ブロックを生成し得る。
【００４０】
ビデオエンコーダ20がPUの予測ブロックを生成するためにインター予測を使用する場合、ビデオエンコーダ20は、PUと関連付けられるピクチャ以外の1つまたは複数のピクチャの復号されたサンプルに基づいて、PUの予測ブロックを生成し得る。ビデオエンコーダ20は、PUの予測ブロックを生成するために、単予測または双予測を使用し得る。ビデオエンコーダ20がPUに対する予測ブロックを生成するために単予測を使用するとき、PUは単一の動きベクトル(MV)を有し得る。ビデオエンコーダ20がPUに対する予測ブロックを生成するために双予測を使用するとき、PUは2つのMVを有し得る。
【００４１】
ビデオエンコーダ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コーディングブロックの中の対応するサンプルとの間の差分を示し得る。
【００４２】
さらに、ビデオエンコーダ20は、4分木区分を使用して、CUのルーマ残差ブロック、Cb残差ブロック、およびCr残差ブロックを、1つまたは複数のルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロックに分解し得る。変換ブロックは、同じ変換が適用されるサンプルの長方形ブロックであり得る。CUの変換ユニット(TU)は、ルーマサンプルの変換ブロック、クロマサンプルの2つの対応する変換ブロック、および変換ブロックサンプルを変換するために使用されるシンタックス構造であり得る。したがって、CUの各TUは、ルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロックと関連付けられ得る。TUと関連付けられたルーマ変換ブロックは、CUのルーマ残差ブロックのサブブロックであり得る。Cb変換ブロックは、CUのCb残差ブロックのサブブロックであり得る。Cr変換ブロックは、CUのCr残差ブロックのサブブロックであり得る。
【００４３】
ビデオエンコーダ20は、1つまたは複数の変換をTUのルーマ変換ブロックに適用して、TUに対するルーマ係数ブロックを生成し得る。係数ブロックは、変換係数の2次元アレイであり得る。変換係数はスカラー量であり得る。ビデオエンコーダ20は、1つまたは複数の変換をTUのCb変換ブロックに適用して、TUに対するCb係数ブロックを生成し得る。ビデオエンコーダ20は、1つまたは複数の変換をTUのCr変換ブロックに適用して、TUに対するCr係数ブロックを生成し得る。
【００４４】
係数ブロック(たとえば、ルーマ係数ブロック、Cb係数ブロック、またはCr係数ブロック)を生成した後、ビデオエンコーダ20は、係数ブロックを量子化し得る。量子化は、一般に、変換係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を実現するプロセスを指す。ビデオエンコーダ20が係数ブロックを量子化した後、ビデオエンコーダ20は、量子化された変換係数を示すシンタックス要素をエントロピー符号化し得る。たとえば、ビデオエンコーダ20は、量子化された変換係数を示すシンタックス要素に対してコンテキスト適応型バイナリ算術コーディング(CABAC)を実行し得る。ビデオエンコーダ20は、エントロピー符号化されたシンタックス要素をビットストリーム中で出力し得る。
【００４５】
ビデオエンコーダ20は、エントロピー符号化されたシンタックス要素を含むビットストリームを出力し得る。ビットストリームは、コーディングされたピクチャの表現および関連するデータを形成するビットのシーケンスを含み得る。ビットストリームは、ネットワーク抽象化レイヤ(NAL)ユニットのシーケンスを備え得る。NALユニットの各々は、NALユニットヘッダを含み、ローバイトシーケンスペイロード(RBSP)をカプセル化する。NALユニットヘッダは、NALユニットタイプコードを示すシンタックス要素を含み得る。NALユニットのNALユニットヘッダによって規定されるNALユニットタイプコードは、NALユニットのタイプを示す。RBSPは、NALユニット内にカプセル化された整数個のバイトを含むシンタックス構造であり得る。いくつかの事例では、RBSPは、0個のビットを含む。
【００４６】
異なるタイプのNALユニットが、異なるタイプのRBSPをカプセル化し得る。たとえば、第1のタイプのNALユニットがピクチャパラメータセット(PPS)のためのRBSPをカプセル化してよく、第2のタイプのNALユニットがコーディングされたスライスのためのRBSPをカプセル化してよく、第3のタイプのNALユニットがSEIのためのRBSPをカプセル化してよく、以下同様である。(パラメータセットおよびSEIメッセージのためのRBSPではなく)ビデオコーディングデータのためのRBSPをカプセル化するNALユニットは、ビデオコーディングレイヤ(VCL)NALユニットと呼ばれることがある。
【００４７】
ビデオデコーダ30は、ビデオエンコーダ20によって生成されたビットストリームを受信し得る。加えて、ビデオデコーダ30は、シンタックス要素をビットストリームから復号するために、ビットストリームを構文解析し得る。ビデオデコーダ30は、ビットストリームから復号されたシンタックス要素に少なくとも部分的に基づいて、ビデオデータのピクチャを再構築し得る。ビデオデータを再構築するためのプロセスは、一般に、ビデオエンコーダ20によって実行されるプロセスの逆であり得る。たとえば、ビデオデコーダ30は、PUのMVを使用して、現在のCUのPUに対する予測ブロックを決定し得る。加えて、ビデオデコーダ30は、現在のCUのTUと関連付けられる変換係数ブロックを逆量子化し得る。ビデオデコーダ30は、変換係数ブロックに対して逆変換を実行して、現在のCUのTUと関連付けられる変換ブロックを再構築し得る。ビデオデコーダ30は、現在のCUのPUに対する予測ブロックのサンプルを、現在のCUのTUの変換ブロックの対応するサンプルに加算することによって、現在のCUのコーディングブロックを再構築し得る。ピクチャの各CUに対してコーディングブロックを再構築することによって、ビデオデコーダ30はピクチャを再構築し得る。
【００４８】
いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、パレットベースのコーディングを実行するように構成され得る。たとえば、パレットベースのコーディングでは、上で説明されたイントラ予測コーディング技法またはインター予測コーディング技法を実行するのではなく、ビデオエンコーダ20およびビデオデコーダ30は、特定のエリア(たとえば、所与のブロック)のビデオデータを表すための色のテーブルとして、いわゆるパレットをコーディングし得る。各画素は、画素の色を表すパレットの中のエントリーと関連付けられ得る。たとえば、ビデオエンコーダ20およびビデオデコーダ30は、画素値をパレットの中の適切な値と関連付けるインデックスをコーディングし得る。
【００４９】
パレットベースのコーディングの例では、ビデオエンコーダ20は、ブロックに対するパレットを決定することと、各画素の値を表すためのパレット中のエントリーを位置特定することと、パレットおよび画素値をパレットと関連付ける画素に対するインデックス値を符号化することとによって、ビデオデータのブロックを符号化し得る。ビデオデコーダ30は、ブロックに対するパレット、ならびにブロックの画素に対するインデックス値を、符号化されたビットストリームから取得し得る。ビデオデコーダ30は、ブロックの画素値を再構築するために、画素のインデックス値をパレットのエントリーと関連付け得る。
【００５０】
前述のように、例示的なパレットコーディングモードでは、パレットは、インデックスによって番号付けされたエントリーを含み得る。各エントリーは、色成分値または強度(たとえば、RGB、YUV、CMYK、または他のフォーマットなどの色空間における)を表すことができ、これは、ブロックに対する予測子として、または最終的な再構築されたブロックサンプルとして、使用され得る。規格提案文書JCTVC-Q0094(Wei Pu他、「AHG10: Suggested Software for Palette Coding based on RExt6.0」、JCTVC-Q0094、バレンシア、スペイン、2014年3月27日〜4月4日)に記載されているように、パレットは、予測子パレットから複製されるエントリーを含み得る。予測子パレットは、パレットモードを使用して前にコーディングされたブロックまたは他の再構築されたサンプルからのパレットエントリーを含み得る。予測子パレット中の各エントリーにつき、そのエントリーが現在のパレットに複製される(フラグ=1によって示される)かどうかを示すためのバイナリフラグが送られる。これは、バイナリパレット予測ベクトルと呼ばれる。加えて、現在のパレットは、明示的にシグナリングされる新しいエントリーを含む(たとえばそれらで構成される)ことがある。新しいエントリーの数もまたシグナリングされてよい。
【００５１】
JCTVC-Q0094の例において提案されるように、パレットを用いてコーディングされるブロック中の各サンプルは、以下に示されるような3つのモードのうちの1つに属する場合がある。
・Escapeモード。このモードでは、サンプル値がパレットエントリーとしてパレットへと含められず、量子化されたサンプル値がすべての色成分に対して明示的にシグナリングされる。新しいパレットエントリーのシグナリングと類似しているが、新しいパレットエントリーでは、色成分値は量子化されない。
・CopyFromTopモード(copy aboveモードとも呼ばれる)。このモードでは、現在のサンプルに対するパレットエントリーインデックスが、ブロック中のすぐ上に位置するサンプルから複製される。他の例では、copy aboveモードの場合、ブロックの上のサンプルが実際にはブロックの左のサンプルであるように、ビデオデータのブロックが転位され得る。
・Valueモード(indexモードとも呼ばれる)。このモードでは、パレットエントリーインデックスの値が明示的にシグナリングされる。
【００５２】
本明細書において説明されるように、パレットエントリーインデックスは、パレットインデックスまたは単にインデックスと呼ばれることがある。これらの用語は、本開示の技法を説明するために交換可能に使用され得る。
【００５３】
CopyFromTopモードおよびValueモードの場合、ラン値もシグナリングされてよい。本開示では、ラン値は、単に「ラン」と呼ばれることがある。インデックスおよびラン値をシグナリングすることは、ランレングスコーディングといくぶん類似する。ランは、同じモードに属する後続サンプルの数を指定する。たとえば、連続するインデックスが0, 2, 2, 2, 2, 5である場合、第2のサンプルについてValueモードがシグナリングされてよい。この例で、2に等しいインデックスがシグナリングされた後、3というランがシグナリングされ、これは、3つの後続サンプルもまた同じインデックス(2)を有することを意味する。同様に、CopyFromTopモードに従った4というランは、上の対応するインデックスから総計5つのインデックスが複製されることを意味する。
【００５４】
文書JCTVC-Q1123(Yu-Wen Huang他、「Description of Screen Content Core Experiment 3 (SCCE3): Palette Mode」、JCTVC-Q1123、バレンシア、スペイン、2014年3月27日〜4月4日)において記述されるような、第3のscreen content coding core experiment、subtest B.6において、別のモードが2014年5月26日にCanonによってリリースされたソフトウェアへと導入された。このモードのためのマクロは、「CANON_NEW_RUN_LAST_TRANSITION」であった。このモードは、同じパレットインデックスを有する後続のサンプルの数を指定するランの前にインデックス値を含む(たとえば、そのインデックス値からなる)という点で、valueモードと同様であり得る。valueモードとこの新しいモード(Transition Runと呼ばれる)との違いは、transition runモードのインデックス値はシグナリングされないことである。そうではなく、インデックス値は推測される。たとえば、ビデオデコーダがインデックス値を推測することができる。推測されたインデックスは、遷移インデックスと呼ばれる。
【００５５】
モードをシグナリングする方法として、2つ以上の異なる方法があり得る。JCTVC-Q0094では、マクロ「PLT_REMOVE_ESCAPE_FLAG」が0である場合は、ブロック中のサンプルがescapeモードでコーディングされるかどうかを示すためにエスケープフラグが明示的にシグナリングされる。サンプルがescapeモードでコーディングされない場合は、モードがCopyFromTopであるかValueであるかを示すためにSPointフラグがシグナリングされる。後続のランサンプルについては、エスケープフラグ(たとえば「PLT_REMOVE_ESCAPE_FLAG」)およびSPointフラグ(必要なとき)はシグナリングされず、これらのフラグの値は、ランに含まれるすべてのサンプルについて推測される。この方法は、明示的エスケープ法と呼ばれる。
【００５６】
マクロ「PLT_REMOVE_ESCAPE_FLAG」が1にセットされている場合は、パレットエントリーの数が1つ増やされ、特別なインデックス(たとえば、増やされたパレット中の最後のパレットインデックス)が、escapeモードの指示として使用される。そのような技法は、暗黙的エスケープ技法と呼ばれることがある。この場合、可能なモードは、CopyFromTopまたはValueの2つだけである。したがって、SPointフラグのみがシグナリングされる。サンプルがValueモードでコーディングされ、インデックスがエスケープインデックスに等しい場合、サンプルは、escapeモードでコーディングされると推測される。この場合、ランはシグナリングされない。いくつかの例では、いくつかの連続するエスケープインデックスを示すランもシグナリングされてよい。
【００５７】
ビデオデータのパレットベースのコーディングのための技法は、インター予測コーディングまたはイントラ予測コーディングのための技法のような、1つまたは複数の他のコーディング技法とともに使用され得る。たとえば、以下でより詳細に説明されるように、エンコーダもしくはデコーダ、または組み合わされたエンコーダデコーダ(コーデック)が、インター予測コーディングおよびイントラ予測コーディング、ならびにパレットベースのコーディングを実行するように構成され得る。
【００５８】
HEVCフレームワークに関して、例として、パレットベースのコーディング技法は、コーディングユニット(CU)モードとして使用されるように構成され得る。他の例では、パレットベースのコーディング技法は、HEVCのフレームワークにおいてPUモードとして使用されるように構成され得る。したがって、CUモードのコンテキストにおいて説明される、以下の開示されるプロセスのすべてが、付加的または代替的に、PUモードに適用される。しかしながら、そのような技法は、独立に機能するように、または他の既存の、もしくはこれから開発されるシステム/規格の一部として機能するように適用され得るので、これらのHEVCベースの例は、本明細書において説明されるパレットベースのコーディング技法の制約または限定と見なされるべきでない。これらの場合、パレットコーディングのためのユニットは、正方形ブロック、長方形ブロック、または非矩形の形状の領域でさえあり得る。
【００５９】
いくつかの例では、ビデオエンコーダ20は、同じ画素値を有する、所与の走査順序におけるいくつかの連続する画素を示す1つまたは複数のシンタックス要素を符号化することができる。同じ値が付けられた画素値のストリングは、本明細書では「ラン」と呼ばれることがある。説明を目的とする例では、所与の走査順序における2つの連続する画素が異なる値を有する場合、ランは0に等しい。所与の走査順序における2つの連続する画素は同じ値を有するが、走査順序における第3の画素は異なる値を有する場合、ランは1に等しい。ビデオデコーダ30は、符号化されたビットストリームからランを示すシンタックス要素を取得し、このデータを使用して、同じインデックス値を有する連続する画素位置の数を決定することができる。
【００６０】
いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、マップの1つまたは複数のエントリーについて、線複製を実行することができる。たとえば、ビデオエンコーダ20は、マップ中の特定のエントリーについての画素値が、この特定のエントリーの上の線中のエントリーに等しいことを示すことができる。ビデオエンコーダ20はまた、特定のエントリーの上の線中のエントリーに等しい、走査順序におけるインデックスの数を、ランとして示すこともできる。この例では、ビデオエンコーダ20および/またはビデオデコーダ30は、指定された近隣の線から、および、現在コーディングされているマップの線についての指定数のエントリーから、インデックス値を複製することができる。
【００６１】
本開示の態様によれば、ビデオエンコーダ20およびビデオデコーダ30は、後述されるパレットコーディングのための技法の任意の組合せを実行することができる。
【００６２】
図2は、本開示の技法を実装し得る例示的なビデオエンコーダ20を示すブロック図である。図2は説明のために提供され、広く例示されるとともに本開示で説明されるような技法の限定と見なされるべきでない。説明を目的に、本開示は、HEVCコーディングの状況においてビデオエンコーダ20を説明する。しかしながら、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
【００６３】
ビデオエンコーダ20は、本開示において説明される様々な例によるパレットベースのビデオコーディングのための技法を実行するように構成され得るデバイスの一例を表す。たとえば、ビデオエンコーダ20は、HEVCコーディングにおけるCUまたはPUなどのビデオデータの様々なブロックを、パレットベースのコーディングまたは非パレットベースのコーディングのいずれかを使用して選択的にコーディングするように構成され得る。非パレットベースのコーディングモードとは、HEVC Draft 10によって規定される様々なコーディングモードのような、様々なインター予測時間コーディングモード、またはイントラ予測空間コーディングモードを指し得る。ビデオエンコーダ20は、一例では、画素値を示すエントリーを有するパレットを生成し、ビデオデータのブロック中の少なくともいくつかの画素位置の画素値を表すためにパレット中の画素値を選択し、ビデオデータのブロック中の画素位置の少なくともいくつかを、パレット中の選択された画素値にそれぞれ対応するパレット中のエントリーと関連付ける情報をシグナリングするように構成され得る。シグナリングされた情報は、ビデオデータを復号するためにビデオデコーダ30によって使用され得る。
【００６４】
図2の例では、ビデオエンコーダ20は、予測処理ユニット100と、ビデオメモリ101と、残差生成ユニット102と、変換処理ユニット104と、量子化ユニット106と、逆量子化ユニット108と、逆変換処理ユニット110と、再構築ユニット112と、フィルタユニット114と、復号ピクチャバッファ116と、エントロピー符号化ユニット118とを含む。予測処理ユニット100は、インター予測処理ユニット120およびイントラ予測処理ユニット126を含む。インター予測処理ユニット120は、動き推定ユニットおよび動き補償ユニット(図示せず)を含む。ビデオエンコーダ20はまた、本開示において説明されるパレットベースのコーディング技法の様々な態様を実行するように構成された、パレットベース符号化ユニット122を含む。他の例では、ビデオエンコーダ20は、より多数の、より少数の、または異なる機能コンポーネントを含み得る。
【００６５】
ビデオメモリ101は、ビデオエンコーダ20のコンポーネントによって符号化されるべきビデオデータを記憶し得る。ビデオメモリ101に記憶されるビデオデータは、たとえば、ビデオソース18から取得され得る。復号ピクチャバッファ116は、たとえば、イントラコーディングモードまたはインターコーディングモードにおいて、ビデオエンコーダ20によってビデオデータを符号化する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオメモリ101および復号ピクチャバッファ116は、シンクロナスDRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗性RAM(MRAM)、抵抗性RAM(RRAM（登録商標）)、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのいずれかによって形成され得る。ビデオメモリ101および復号ピクチャバッファ116は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオメモリ101は、ビデオエンコーダ20の他のコンポーネントとともにオンチップであってよく、または、これらのコンポーネントに対してオフチップであってよい。
【００６６】
ビデオエンコーダ20は、ビデオデータを受信し得る。ビデオエンコーダ20は、ビデオデータのピクチャのスライスの中の各CTUを符号化し得る。CTUの各々は、ピクチャの、等しいサイズのルーマコーディングツリーブロック(CTB)、および対応するCTBと関連付けられ得る。CTUを符号化することの一部として、予測処理ユニット100は、4分木区分を実行して、CTUのCTBを漸次的により小さいブロックへと分割し得る。より小さいブロックは、CUのコーディングブロックであり得る。たとえば、予測処理ユニット100は、CTUと関連付けられるCTBを4つの等しいサイズのサブブロックに区分することができ、サブブロックの1つまたは複数を4つの等しいサイズのサブサブブロックに区分することができ、以下同様である。
【００６７】
ビデオエンコーダ20は、CTUのCUを符号化して、CUの符号化された表現(すなわち、コーディングされたCU)を生成し得る。CUを符号化することの一部として、予測処理ユニット100は、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サイズのための非対称区分をサポートし得る。
【００６８】
インター予測処理ユニット120は、インター予測をCUの各PUに対して実行することによって、PUに対する予測データを生成し得る。PUに対する予測データは、PUの予測ブロックおよびPUに対する動き情報を含み得る。インター予測ユニット121は、PUがIスライスの中にあるか、Pスライスの中にあるか、またはBスライスの中にあるかに応じて、CUのPUに対して異なる動作を実行し得る。Iスライスでは、すべてのPUがイントラ予測される。したがって、PUがIスライスの中にある場合、インター予測ユニット121は、インター予測をPUに対して実行しない。したがって、Iモードで符号化されるブロックに対して、予測されるブロックは、同じフレーム内で前に符号化された隣接ブロックからの空間予測を使用して形成される。
【００６９】
PUがPスライスの中にある場合、インター予測処理ユニット120の動き推定ユニットは、PUのための参照領域を求めて参照ピクチャのリスト(たとえば、「RefPicList0」)の中の参照ピクチャを検索し得る。PUのための参照領域は、PUのサンプルブロックと最も密接に対応するサンプルブロックを含む、参照ピクチャ内の領域であり得る。動き推定ユニットは、PUのための参照領域を含む参照ピクチャのRefPicList0の中での位置を示す参照インデックスを生成し得る。加えて、動き推定ユニットは、PUのコーディングブロックと、参照領域と関連付けられる参照位置との間の空間変位を示すMVを生成し得る。たとえば、MVは、現在の復号されたピクチャの中の座標から参照ピクチャの中の座標までのオフセットを提供する2次元ベクトルであってよい。動き推定ユニットは、PUの動き情報として参照インデックスおよびMVを出力し得る。インター予測処理ユニット120の動き補償ユニットは、PUの動きベクトルによって示された参照位置における実際のサンプルまたは補間されたサンプルに基づいて、PUの予測ブロックを生成し得る。
【００７０】
PUがBスライスの中にある場合、動き推定ユニットは、PUに対して単予測または双予測を実行し得る。PUに対して単予測を実行するために、動き推定ユニットは、PUのための参照領域を求めてRefPicList0または第2の参照ピクチャリスト(「RefPicList1」)の参照ピクチャを検索し得る。動き推定ユニットは、PUの動き情報として、参照領域を含む参照ピクチャのRefPicList0またはRefPicList1の中での位置を示す参照インデックス、PUの予測ブロックと、参照領域と関連付けられた参照位置との間の空間変位を示すMV、および参照ピクチャがRefPicList0の中にあるか、またはRefPicList1の中にあるかを示す1つまたは複数の予測方向インジケータを出力し得る。インター予測処理ユニット120の動き補償ユニットは、PUの動きベクトルによって示された参照領域における実際のサンプルまたは補間されたサンプルに少なくとも部分的に基づいて、PUの予測ブロックを生成し得る。
【００７１】
PUに対して双方向インター予測を実行するために、動き推定ユニットは、PUに対する参照領域を求めてRefPicList0の中の参照ピクチャを検索することができ、また、PUに対する別の参照領域を求めてRefPicList1の中の参照ピクチャを検索することができる。動き推定ユニットは、参照領域を含む参照ピクチャのRefPicList0およびRefPicList1の中での位置を示す参照ピクチャインデックスを生成し得る。加えて、動き推定ユニットは、参照領域と関連付けられた参照位置とPUのサンプルブロックとの間の空間変位を示すMVを生成し得る。PUの動き情報は、PUの参照インデックスおよびMVを含み得る。動き補償ユニットは、PUの動きベクトルによって示された参照領域における実際のサンプルまたは補間されたサンプルに少なくとも部分的に基づいて、PUの予測ブロックを生成し得る。
【００７２】
本開示の様々な例によれば、ビデオエンコーダ20は、パレットベースのコーディングを実行するように構成され得る。HEVCフレームワークに関して、例として、パレットベースのコーディング技法は、コーディングユニット(CU)モードとして使用されるように構成され得る。他の例では、パレットベースのコーディング技法は、HEVCのフレームワークにおいてPUモードとして使用されるように構成され得る。したがって、CUモードの状況において(本開示全体で)ここで説明される、開示されるプロセスのすべてが、追加でまたは代替的に、PUに適用され得る。しかしながら、そのような技法は、独立に機能するように、または他の既存の、もしくはこれから開発されるシステム/規格の一部として機能するように適用され得るので、これらのHEVCベースの例は、本明細書において説明されるパレットベースのコーディング技法の制約または限定と見なされるべきでない。これらの場合、パレットコーディングのためのユニットは、正方形ブロック、長方形ブロック、または非矩形の形状の領域でさえあり得る。
【００７３】
たとえば、パレットベース符号化ユニット122は、パレットベースの符号化モードがたとえばCUまたはPUに対して選択されるとき、パレットベースの符号化を実行することができる。たとえば、パレットベース符号化ユニット122は、画素値を示すエントリーを有するパレットを生成し、ビデオデータのブロックの少なくともいくつかの場所の画素値を表すためにパレット中の画素値を選択し、ビデオデータのブロックの場所の少なくともいくつかを、選択された画素値にそれぞれ対応するパレット中のエントリーと関連付ける情報をシグナリングするように構成され得る。様々な機能がパレットベース符号化ユニット122によって実行されるものとして説明されるが、そのような機能の一部またはすべては、他の処理ユニット、または様々な処理ユニットの組合せによって実行され得る。
【００７４】
本開示の態様によれば、パレットベース符号化ユニット122は、以下で説明されるパレットコーディングのための技法の任意の組合せを実行するように構成され得る。
【００７５】
イントラ予測処理ユニット126は、イントラ予測をPUに対して実行することによって、PUに対する予測データを生成し得る。PUに対する予測データは、PUに対する予測ブロックおよび様々なシンタックス要素を含み得る。イントラ予測処理ユニット126は、Iスライス、Pスライス、およびBスライスの中のPUに対して、イントラ予測を実行し得る。
【００７６】
イントラ予測をPUに対して実行するために、イントラ予測処理ユニット126は、複数のイントラ予測モードを使用して、PUに対する予測データの複数のセットを生成し得る。イントラ予測処理ユニット126は、隣接PUのサンプルブロックからのサンプルを使用して、PUに対する予測ブロックを生成し得る。PU、CU、およびCTUに対して、左から右、上から下への符号化順序を仮定すると、隣接PUは、PUの上、右上、左上、または左であり得る。イントラ予測処理ユニット126は、様々な数のイントラ予測モード、たとえば、33個の方向性イントラ予測モードを使用し得る。いくつかの例では、イントラ予測モードの数は、PUと関連付けられる領域のサイズに依存し得る。
【００７７】
予測処理ユニット100は、PUに対してインター予測処理ユニット120によって生成される予測データ、またはPUに対してイントラ予測処理ユニット126によって生成される予測データの中から、CUのPUに対する予測データを選択し得る。いくつかの例では、予測処理ユニット100は、予測データのセットのレート/ひずみの尺度に基づいて、CUのPUに対する予測データを選択する。選択される予測データの予測ブロックは、選択予測ブロックと本明細書で呼ばれることがある。
【００７８】
残差生成ユニット102は、CUのルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロック、ならびに、CUのPUの選択された予測ルーマブロック、予測Cbブロック、および予測Crブロックに基づいて、CUのルーマ残差ブロック、Cb残差ブロック、およびCr残差ブロックを生成し得る。たとえば、残差生成ユニット102は、残差ブロックの中の各サンプルがCUのコーディングブロックの中のサンプルとCUのPUの対応する選択された予測ブロックの中の対応するサンプルとの間の差分に等しい値を有するように、CUの残差ブロックを生成し得る。
【００７９】
変換処理ユニット104は、4分木区分を実行して、CUと関連付けられた残差ブロックをCUのTUと関連付けられた変換ブロックに区分し得る。したがって、TUは、ルーマ変換ブロックおよび2つのクロマ変換ブロックと関連付けられ得る。CUのTUのルーマ変換ブロックおよびクロマ変換ブロックのサイズおよび場所は、CUのPUの予測ブロックのサイズおよび場所に基づいてもよく、基づかなくてもよい。「残差4分木」(RQT)として知られている4分木構造が、領域の各々と関連付けられるノードを含み得る。CUのTUは、RQTのリーフノードに対応し得る。
【００８０】
変換処理ユニット104は、1つまたは複数の変換をTUの変換ブロックに適用することによって、CUの各TUに対する変換係数ブロックを生成し得る。変換処理ユニット104は、TUと関連付けられたブロックを変換するために、様々な変換を適用し得る。たとえば、変換処理ユニット104は、離散コサイン変換(DCT)、方向変換、または概念的に類似の変換を、変換ブロックに適用し得る。いくつかの例では、変換処理ユニット104は、変換ブロックに変換を適用しない。そのような例では、変換ブロックは変換係数ブロックとして扱われてよい。
【００８１】
量子化ユニット106は、係数ブロックの中の変換係数を量子化し得る。量子化プロセスは、変換係数の一部またはすべてと関連付けられるビット深度を低減し得る。たとえば、nビットの変換係数が、量子化の間にmビットの変換係数へと丸められてよく、ここでnはmよりも大きい。量子化ユニット106は、CUと関連付けられる量子化パラメータ(QP)値に基づいて、CUのTUと関連付けられる係数ブロックを量子化し得る。ビデオエンコーダ20は、CUと関連付けられるQP値を調整することによって、CUと関連付けられる係数ブロックに適用される量子化の程度を調整し得る。量子化が情報の損失をもたらすことがあり、したがって、量子化された変換係数の精度は元の精度よりも低いことがある。
【００８２】
逆量子化ユニット108および逆変換処理ユニット110は、それぞれ、逆量子化および逆変換を係数ブロックに適用して、係数ブロックから残差ブロックを再構築し得る。再構築ユニット112は、予測処理ユニット100によって生成された1つまたは複数の予測ブロックからの対応するサンプルに、再構築された残差ブロックを加算して、TUと関連付けられる再構築された変換ブロックを生成し得る。このようにしてCUのTUごとに変換ブロックを再構築することによって、ビデオエンコーダ20は、CUのコーディングブロックを再構築し得る。
【００８３】
フィルタユニット114は、1つまたは複数のデブロッキング動作を実行して、CUと関連付けられるコーディングブロックにおけるブロッキングアーティファクトを低減し得る。フィルタユニット114が1つまたは複数のデブロッキング動作を再構築されたコーディングブロックに対して実行した後、復号ピクチャバッファ116は、再構築されたコーディングブロックを記憶し得る。インター予測処理ユニット120は、インター予測を他のピクチャのPUに対して実行するために、再構築されたコーディングブロックを含む参照ピクチャを使用し得る。加えて、イントラ予測処理ユニット126は、CUと同じピクチャの中の他のPUに対してイントラ予測を実行するために、復号ピクチャバッファ116の中の再構築されたコーディングブロックを使用し得る。
【００８４】
エントロピー符号化ユニット118は、ビデオエンコーダ20の他の機能コンポーネントからデータを受信し得る。たとえば、エントロピー符号化ユニット118は、係数ブロックを量子化ユニット106から受信することができ、シンタックス要素を予測処理ユニット100から受信することができる。エントロピー符号化ユニット118は、エントロピー符号化されたデータを生成するために、1つまたは複数のエントロピー符号化動作をデータに対して実行し得る。たとえば、エントロピー符号化ユニット118は、コンテキスト適応型可変長コーディング(CAVLC)動作、CABAC動作、可変長-可変長(V2V)コーディング動作、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)動作、確率間隔区分エントロピー(PIPE)コーディング動作、指数ゴロム符号化動作、または別のタイプのエントロピー符号化動作を、データに対して実行し得る。ビデオエンコーダ20は、エントロピー符号化ユニット118によって生成された、エントロピー符号化されたデータを含むビットストリームを出力し得る。たとえば、ビットストリームは、CUに対するRQTを表すデータを含み得る。
【００８５】
図3は、本開示の技法を実施するように構成される例示的なビデオデコーダ30を示すブロック図である。図3は説明のために提供され、広く例示されるとともに本開示で説明されるような技法を限定するものではない。説明を目的に、本開示は、HEVCコーディングの状況においてビデオデコーダ30を説明する。しかしながら、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
【００８６】
ビデオデコーダ30は、本開示において説明される様々な例によるパレットベースのビデオコーディングのための技法を実行するように構成され得るデバイスの一例を表す。たとえば、ビデオデコーダ30は、HEVCコーディングにおけるCUまたはPUなどのビデオデータの様々なブロックを、パレットベースのコーディングまたは非パレットベースのコーディングのいずれかを使用して選択的に復号するように構成され得る。非パレットベースのコーディングモードとは、HEVC Draft 10によって規定される様々なコーディングモードのような、様々なインター予測時間コーディングモード、またはイントラ予測空間コーディングモードを指し得る。ビデオデコーダ30は、一例では、画素値を示すエントリーを有するパレットを生成し、ビデオデータのブロック中の少なくともいくつかの画素位置をパレット中のエントリーと関連付ける情報を受信し、この情報に基づいてパレット中の画素値を選択し、パレット中の選択された画素値に基づいてブロックの画素値を再構築するように構成され得る。
【００８７】
図3の例では、ビデオデコーダ30は、エントロピー復号ユニット150と、ビデオメモリ151と、予測処理ユニット152と、逆量子化ユニット154と、逆変換処理ユニット156と、再構築ユニット158と、フィルタユニット160と、復号ピクチャバッファ162とを含む。予測処理ユニット152は、動き補償ユニット164およびイントラ予測処理ユニット166を含む。ビデオデコーダ30はまた、本開示において説明されるパレットベースのコーディング技法の様々な態様を実行するように構成されたパレットベース復号ユニット165を含む。他の例では、ビデオデコーダ30は、より多数の、より少数の、または異なる機能のコンポーネントを含み得る。
【００８８】
ビデオメモリ151は、ビデオデコーダ30のコンポーネントによって復号されるべき、符号化されたビデオビットストリームのようなビデオデータを記憶し得る。ビデオメモリ151に記憶されるビデオデータは、たとえば、チャネル16から、たとえば、カメラなどのローカルビデオソースから、ビデオデータの有線ネットワーク通信もしくはワイヤレスネットワーク通信を介して、または物理データ記憶媒体にアクセスすることによって、取得され得る。ビデオメモリ151は、符号化されたビデオビットストリームからの符号化されたビデオデータを記憶するコーディングピクチャバッファ(CPB)を形成し得る。復号ピクチャバッファ162は、たとえば、イントラコーディングモードまたはインターコーディングモードにおいて、ビデオデコーダ30によってビデオデータを復号する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオメモリ151および復号ピクチャバッファ162は、シンクロナスDRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗性RAM(MRAM)、抵抗性RAM(RRAM（登録商標）)、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのいずれかによって形成され得る。ビデオメモリ151および復号ピクチャバッファ162は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオメモリ151は、ビデオデコーダ30の他のコンポーネントとともにオンチップであってよく、または、これらのコンポーネントに対してオフチップであってよい。
【００８９】
コーディングピクチャバッファ(CPB)は、ビットストリームの(たとえば、NALユニットにおいて送られ得る)符号化されたビデオデータを受信および記憶し得る。エントロピー復号ユニット150は、符号化されたビデオデータ(たとえば、NALユニット)をCPBから受信するとともにNALユニットを構文解析して、シンタックス要素を復号し得る。エントロピー復号ユニット150は、NALユニットの中のエントロピー符号化されたシンタックス要素をエントロピー復号し得る。予測処理ユニット152、逆量子化ユニット154、逆変換処理ユニット156、再構築ユニット158、およびフィルタユニット160は、ビットストリームから抽出されたシンタックス要素に基づいて、復号されたビデオデータを生成し得る。
【００９０】
ビットストリームのNALユニットは、コーディングされたスライスNALユニットを含み得る。ビットストリームを復号することの一部として、エントロピー復号ユニット150は、シンタックス要素をコーディングされたスライスNALユニットから抽出し、エントロピー復号し得る。コーディングされたスライスの各々は、スライスヘッダおよびスライスデータを含み得る。スライスヘッダは、スライスに関係しているシンタックス要素を含み得る。スライスヘッダの中のシンタックス要素は、スライスを含むピクチャと関連付けられたPPSを識別するシンタックス要素を含み得る。
【００９１】
シンタックス要素をビットストリームから復号することに加えて、ビデオデコーダ30は、区分されていないCUに対して再構築動作を実行し得る。区分されていないCUに対して再構築動作を実行するために、ビデオデコーダ30は、CUの各TUに対して再構築動作を実行し得る。CUの各TUに対して再構築動作を実行することによって、ビデオデコーダ30は、CUの残差ブロックを再構築し得る。
【００９２】
CUのTUに対して再構築動作を実行することの一部として、逆量子化ユニット154は、TUと関連付けられた係数ブロックを逆量子化(inverse quantize)、すなわち、逆量子化(de-quantize)し得る。逆量子化ユニット154は、逆量子化ユニット154が適用するべき量子化の程度と、同様に逆量子化の程度とを決定するために、TUのCUと関連付けられるQP値を使用し得る。すなわち、圧縮比、すなわち、元のシーケンスおよび圧縮されたシーケンスを表すために使用されるビット数の比が、変換係数を量子化するときに使用されるQPの値を調整することによって制御され得る。圧縮比はまた、採用されるエントロピーコーディングの方法に依存し得る。
【００９３】
逆量子化ユニット154が係数ブロックを逆量子化した後、逆変換処理ユニット156は、TUと関連付けられた残差ブロックを生成するために、1つまたは複数の逆変換を係数ブロックに適用し得る。たとえば、逆変換処理ユニット156は、逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT)、逆回転変換、逆方向変換、または別の逆変換を係数ブロックに適用し得る。
【００９４】
PUがイントラ予測を使用して符号化される場合、イントラ予測処理ユニット166は、イントラ予測を実行して、PUに対する予測ブロックを生成し得る。イントラ予測処理ユニット166は、イントラ予測モードを使用して、空間的に隣接するPUの予測ブロックに基づいて、PUに対する予測ルーマブロック、予測Cbブロック、および予測Crブロックを生成し得る。イントラ予測処理ユニット166は、ビットストリームから復号された1つまたは複数のシンタックス要素に基づいて、PUに対するイントラ予測モードを決定し得る。
【００９５】
予測処理ユニット152は、ビットストリームから抽出されたシンタックス要素に基づいて、第1の参照ピクチャリスト(RefPicList0)および第2の参照ピクチャリスト(RefPicList1)を構築し得る。さらに、PUがインター予測を使用して符号化される場合、エントロピー復号ユニット150は、PUに対する動き情報を抽出し得る。動き補償ユニット164は、PUの動き情報に基づいて、PUに対する1つまたは複数の参照領域を決定し得る。動き補償ユニット164は、PUに対する1つまたは複数の参照ブロックにおけるサンプルブロックに基づいて、PUに対する予測ルーマブロック、予測Cbブロック、および予測Crブロックを生成し得る。
【００９６】
再構築ユニット158は、CUのTUと関連付けられたルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロック、ならびに、CUのPUの予測ルーマブロック、予測Cbブロック、および予測Crブロック、すなわち、イントラ予測データまたはインター予測データのいずれかを適宜使用して、CUのルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロックを再構築し得る。たとえば、再構築ユニット158は、予測ルーマブロック、予測Cbブロック、および予測Crブロックの対応するサンプルに、ルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロックのサンプルを加算して、CUのルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロックを再構築し得る。
【００９７】
フィルタユニット160は、デブロッキング動作を実行して、CUのルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロックと関連付けられるブロッキングアーティファクトを低減し得る。ビデオデコーダ30は、CUのルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロックを復号ピクチャバッファ162に記憶し得る。復号ピクチャバッファ162は、その後の動き補償、イントラ予測、および図1のディスプレイデバイス32のようなディスプレイデバイス上での提示のために、参照ピクチャを提供し得る。たとえば、ビデオデコーダ30は、復号ピクチャバッファ162の中のルーマブロック、Cbブロック、およびCrブロックに基づいて、他のCUのPUに対してイントラ予測動作またはインター予測動作を実行し得る。
【００９８】
本開示の様々な例によれば、ビデオデコーダ30は、パレットベースのコーディングを実行するように構成され得る。パレットベース復号ユニット165は、たとえば、パレットベースの復号モードがたとえばCUまたはPUに対して選択されるとき、パレットベースの復号を実行することができる。たとえば、パレットベース復号ユニット165は、画素値を示すエントリーを有するパレットを生成し、ビデオデータのブロック中の少なくともいくつかの画素位置をパレット中のエントリーと関連付ける情報を受信し、この情報に基づいてパレット中の画素値を選択し、パレット中の選択された画素値に基づいてブロックの画素値を再構築するように構成され得る。様々な機能がパレットベース復号ユニット165によって実行されるものとして説明されるが、そのような機能の一部またはすべては、他の処理ユニット、または様々な処理ユニットの組合せによって実行され得る。
【００９９】
パレットベース復号ユニット165は、パレットコーディングモード情報を受信し、パレットコーディングモードがブロックに適用されることをパレットコーディングモード情報が示すとき、上の動作を実行することができる。パレットコーディングモードがブロックに適用されないことをパレットコーディングモード情報が示すとき、または、異なるモードの使用を他のモード情報が示すとき、パレットベース復号ユニット165は、たとえば、HEVCインター予測コーディングモードまたはイントラ予測コーディングモードのような、非パレットベースのコーディングモードを使用してビデオデータのブロックを復号する。ビデオデータのブロックは、たとえば、HEVCコーディングプロセスに従って生成されるCUまたはPUであり得る。パレットベースのコーディングモードは、複数の異なるパレットベースのコーディングモードのうちの1つを構成してもよく、または、単一のパレットベースのコーディングモードがあってもよい。
【０１００】
本開示の態様によれば、パレットベース復号ユニット165は、以下で説明されるパレットコーディングのための技法の任意の組合せを実行するように構成され得る。
【０１０１】
図5は、本開示の技法に従った、ビデオデータをコーディングするためのパレットを決定することの例を示す概念図である。図5の例は、第1のパレット184と関連付けられた第1のPAL(パレット)コーディングユニット(CU)180と、第2のパレット192と関連付けられた第2のPAL CU188とを有する、ピクチャ178を含む。以下でより詳細に説明されるように、本開示の技法によれば、第2のパレット192は第1のパレット184に基づく。ピクチャ178はまた、イントラ予測コーディングモードによってコーディングされたブロック196、およびインター予測コーディングモードによってコーディングされたブロック200を含む。
【０１０２】
図5の技法は、説明を目的に、ビデオエンコーダ20(図1および図2)およびビデオデコーダ30(図1および図3)の状況において、HEVCビデオコーディング規格に関して説明される。しかしながら、本開示の技法はこのように限定されず、他のビデオコーディングプロセッサおよび/またはデバイスによって、他のビデオコーディングプロセスおよび/または規格において適用され得ることを理解されたい。
【０１０３】
一般に、パレットは、現在コーディングされているCU、図5の例ではCU188にとって支配的および/または代表的ないくつかの画素値を指す。第1のパレット184および第2のパレット192は、複数のパレットを含むように示される。いくつかの例では、本開示の態様によれば、ビデオコーダ(ビデオエンコーダ20またはビデオデコーダ30のような)は、パレットをCUの各色成分に対して別々にコーディングし得る。たとえば、ビデオエンコーダ20は、CUのルーマ(Y)成分のためのパレット、CUのクロマ(U)成分のための別のパレット、およびCUのクロマ(V)成分のためのさらに別のパレットを符号化し得る。この例では、YパレットのエントリーがCUの画素のY値を表すことができ、UパレットのエントリーがCUの画素のU値を表すことができ、VパレットのエントリーがCUの画素のV値を表すことができる。
【０１０４】
他の例では、ビデオエンコーダ20は、CUのすべての色成分に対して単一のパレットを符号化し得る。この例では、ビデオエンコーダ20は、Yi、Ui、およびViを含む3値である、i番目のエントリーを有するパレットを符号化し得る。この場合、パレットは、画素の成分の各々に対する値を含む。したがって、複数の個々のパレットを有するパレットのセットとしてのパレット184および192の表現は、一例にすぎず、限定は意図されない。
【０１０５】
図5の例では、第1のパレット184は、それぞれ、エントリーインデックス値1、エントリーインデックス値2、およびエントリーインデックス値3を有する、3つのエントリー202〜206を含む。エントリー202〜206は、インデックス値を、それぞれ、画素値A、画素値B、および画素値Cを含む画素値と関連付ける。本明細書において説明されるように、第1のCU180の実際の画素値をコーディングするのではなく、ビデオコーダ(ビデオエンコーダ20またはビデオデコーダ30のような)は、インデックス1〜3を使用してブロックの画素をコーディングするために、パレットベースのコーディングを使用し得る。すなわち、第1のCU180の各画素位置に対して、ビデオエンコーダ20は、画素に対するインデックス値を符号化することができ、ここで、インデックス値は、第1のパレット184の1つまたは複数の中の画素値と関連付けられる。ビデオデコーダ30は、インデックス値をビットストリームから取得することができ、インデックス値および第1のパレット184の1つまたは複数を使用して、画素値を再構築することができる。したがって、パレットベースの復号の際にビデオデコーダ30によって使用するために、第1のパレット184が、ビデオエンコーダ20によって符号化されたビデオデータビットストリームの中で送信される。
【０１０６】
いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、第1のパレット184に基づいて第2のパレット192を決定し得る。たとえば、ビデオエンコーダ20および/またはビデオデコーダ30は、予測パレット、この例では、第1のパレット184が決定される際に元となる1つまたは複数のブロックの位置を特定し得る。図5に示される例など、いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、第2のCU188に対する予測パレットを決定するとき、左の隣接CU(第1のCU180)など、前にコーディングされたCUを突き止めることができる。
【０１０７】
図5の例では、第2のパレット192は、それぞれ、エントリーインデックス値1、エントリーインデックス値2、およびエントリーインデックス値3を有する、3つのエントリー208〜212を含む。エントリー208〜212は、インデックス値を、それぞれ、画素値A、画素値B、および画素値Dを含む画素値と関連付ける。この例では、ビデオエンコーダ20は、第1のパレット184のどのエントリーが第2のパレット192の中に含まれるかを示す1つまたは複数のシンタックス要素をコーディングし得る。図5の例では、1つまたは複数のシンタックス要素が、ベクトル216として示される。ベクトル216は、いくつかの関連付けられたビン(または、ビット)を有し、各ビンは、そのビンと関連付けられたパレット予測子が現在のパレットのエントリーを予測するために使用されるかどうかを示す。たとえば、ベクトル216は、第1のパレット184の最初の2つのエントリー(202および204)が第2のパレット192の中に含まれることを示し(ベクトル216の中の「1」の値)、第1のパレット184の第3のエントリーは、第2のパレット192の中に含まれない(ベクトル216の中の「0」の値)。図5の例では、ベクトルはブールベクトルである。
【０１０８】
いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、パレット予測を実行するとき、パレット予測子リスト(パレット予測子テーブルと呼ばれることもある)を決定し得る。パレット予測子リストは、現在のブロックをコーディングするためのパレットの1つまたは複数のエントリーを予測するために使用される、1つまたは複数の隣接ブロックのパレットからのエントリーを含み得る。ビデオエンコーダ20およびビデオデコーダ30は、同じ方式でリストを構築し得る。ビデオエンコーダ20およびビデオデコーダ30は、パレット予測子リストのどのエントリーが現在のブロックをコーディングするためのパレットに含まれるべきであるのかを示すためのデータ(ベクトル216のような)をコーディングし得る。
【０１０９】
図6は、本開示の技法に従った、画素のブロックのためのパレットに対するインデックスを決定する例を示す概念図である。たとえば、図6は、インデックス値と関連付けられる画素のそれぞれの場所をパレット244のエントリーと関連付けるインデックス値(値1、2、および3)のマップ240を含む。
【０１１０】
図6の例では、マップ240が各画素場所ごとのインデックス値を含むように示されているが、他の例では、すべての画素場所が、画素値をパレット244のエントリーに関係付けるインデックス値に関連するとは限らないことを理解されたい。すなわち、前述のように、いくつかの例では、画素値がパレット244に含まれない場合、ビデオエンコーダ20は、マップ240中の場所について、実際の画素値(またはその量子化されたバージョン)の指示を符号化することができる(また、ビデオデコーダ30は、符号化されたビットストリームからこの指示を取得することができる)。
【０１１１】
いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、どの画素の場所がインデックス値と関連付けられるかを示す追加のマップをコーディングするように構成され得る。たとえば、マップ中の(i, j)のエントリーがCUの(i, j)の場所に対応し得ると仮定する。ビデオエンコーダ20は、エントリーが関連するインデックス値を有するかどうかを示すマップの各エントリー(すなわち、各ピクセルの場所)に対する1つまたは複数のシンタックス要素を符号化することができる。たとえば、ビデオエンコーダ20は、CUの中の(i, j)の位置における画素値がパレット244の中の値の1つであることを示すために、1という値を有するフラグを符号化することができる。
【０１１２】
ビデオエンコーダ20はまた、そのような例では、パレット中のその画素値を示すために、かつ、ビデオデコーダがその画素値を再構築することを可能にするために、パレットインデックス(値1〜3として図6の例では示される)を符号化することができる。パレット244が単一のエントリーおよび関連する画素値を含む事例では、ビデオエンコーダ20は、インデックス値のシグナリングをスキップすることができる。ビデオエンコーダ20は、CUの中の(i, j)の位置における画素値がパレット244の中の値の1つではないことを示すために、0という値を有するようにフラグを符号化することができる。この例では、ビデオエンコーダ20はまた、画素値を再構築する際にビデオデコーダ30によって使用するために、画素値を示すものを符号化することができる。いくつかの事例では、画素値は、有損失の方式でコーディングされ得る。
【０１１３】
CUの1つの場所の中の画素の値は、CUの他の場所の中の1つまたは複数の他の画素の値の指示を与え得る。たとえば、CUの隣接する画素の場所が同じ画素値を有する確率、または、(2つ以上の画素値が単一のインデックス値にマッピングされ得る、有損失のコーディングの場合において)CUの隣接する画素の場所が同じインデックス値にマッピングされ得る確率は、比較的高いことがある。
【０１１４】
したがって、ビデオエンコーダ20は、同じ画素値またはインデックス値を有する、所与の走査順序におけるいくつかの連続する画素またはインデックス値を示す1つまたは複数のシンタックス要素を符号化することができる。前述のように、同じ値が付けられた画素値またはインデックス値のストリングは、本明細書ではランと呼ばれることがある。説明を目的とする例では、所与の走査順序における2つの連続する画素またはインデックスが異なる値を有する場合、ランは0に等しい。所与の走査順序における2つの連続する画素またはインデックスは同じ値を有するが、走査順序における第3の画素またはインデックスは異なる値を有する場合、ランは1に等しい。同じ値を有する3つの連続するインデックスまたは画素の場合、ランは2であり、以下同様である。ビデオデコーダ30は、ランを示すシンタックス要素を符号化済みビットストリームから取得し、このデータを使用して、同じ画素値またはインデックス値を有する連続する位置の数を決定することができる。
【０１１５】
前述のように、ランは、CopyFromTopモードまたはValueモード(それぞれcopy aboveモードおよびindexモードとも呼ばれる)に関連して使用され得る。説明を目的とする例では、マップ240の行264および268を考える。水平方向の左から右への走査方向を仮定すると、行264は、「1」という3つのインデックス値、「2」という2つのインデックス値、および「3」という3つのインデックス値を含む。行268は、「1」という5つのインデックス値、および「3」という3つのインデックス値を含む。この例では、ビデオエンコーダ20は、行268についてのデータを符号化するとき(たとえばCopyFromTopモード)、後にランが続く行264の特定のエントリーを識別することができる。たとえば、ビデオエンコーダ20は、行268の第1の場所(行268の一番左の場所)が行264の第1の場所と同じであることを示す、1つまたは複数のシンタックス要素を符号化することができる。ビデオエンコーダ20はまた、行268において走査方向に連続する2つのエントリーの次のランが行264の対応する上の場所と同じであることを示す、1つまたは複数のシンタックス要素を符号化することができる。
【０１１６】
行264の第1の場所および2つのエントリーのラン(上で述べられた)を示す1つまたは複数のシンタックス要素を符号化した後で、ビデオエンコーダ20は、(左から右へ)行268の中の第4および第5の場所について、第4の場所に対して1という値を示す1つまたは複数のシンタックス要素と、1というランを示す(たとえば、Valueモード)1つまたは複数のシンタックス要素とを符号化することができる。したがって、ビデオエンコーダ20は、別の線を参照することなくこれらの2つの場所を符号化する。
【０１１７】
次いで、ビデオエンコーダ20は、行268中のインデックス値3を有する第1の場所を、上の行264に対して符号化することができる(たとえば、上の行264からの複製と、走査順序における同じインデックス値を有する連続する場所のランとを示す)。したがって、ビデオエンコーダ20は、たとえば、ランを使用して線の画素値もしくはインデックス値を線の他の値に関連してコーディングすること、線の画素値もしくはインデックス値を別の線(または列)の値に関連してコーディングすること、またはこれらの組合せから、選択することができる。いくつかの例では、ビデオエンコーダ20は、レート/ひずみ最適化を実行して選択を行うことができる。
【０１１８】
ビデオデコーダ30は、前述のシンタックス要素を受け取り、行268を再構築することができる。たとえば、ビデオデコーダ30は、現在コーディングされているマップ240の場所についての関連するインデックス値の複製元となる隣接する行の中の特定の位置を示すデータを取得することができる。ビデオデコーダ30はまた、同じインデックス値を有する、走査順序における連続する場所の数を示すデータも取得することができる。水平の走査順序に関して説明したが、本開示の技法は、垂直や対角(たとえば、ブロック中で斜め45度または135度)走査方向など、別の走査方向に適用されてもよい。
【０１１９】
規範的な見地からの、パレットコーディングの2つの態様は、パレットのコーディングと、パレットコーディングモードでコーディングされているブロック中の各サンプルについてのパレットインデックスのコーディングとである。パレットインデックスのコーディングは、「index」モードおよび「copy above」モードという2つの主要モードを使用して実行される。パレットインデックスは、palette_modeフラグをコーディングすることによってシグナリングされる。「index」モードはまた、エスケープサンプル、すなわち、パレットに属さないサンプルを示すのにも使用される。HEVCにおけるパレットコーディングモードに関するいくつかの提案では、「copy above」モードは、パレットブロックの第1の行には使用されないことがある。加えて、特定の行に対する「copy above」モードは、上の行もまた「copy above」モードを使用する場合には、使用されないことがある。これらの場合は、「index」モードが推測される。
【０１２０】
「index」モードの場合、サンプルについてのパレットインデックスの値は、切捨てバイナリコードを使用して明示的にシグナリングされる。インデックスがパレットのサイズに等しい場合、これは、サンプルがエスケープサンプルであることを示す。この場合、各成分についてのサンプル値または量子化されたサンプル値がシグナリングされる。たとえば、パレットサイズが4である場合、非エスケープサンプルについて、パレットインデックスは範囲[0, 3]内である。この場合、インデックス値4は、エスケープサンプルを意味する。インデックスが非エスケープサンプルを示す場合はランレングスがシグナリングされ、ランレングスは、同じインデックスを共有する、走査順序における後続サンプルの数を指定する。エスケープサンプルの場合、ランレングスはシグナリングされない。他の例では、エスケープサンプルの場合にランレングスがシグナリングされてよい。
【０１２１】
「copy above」モードの場合、現在のサンプルについてのパレットインデックスは、ブロック中でそのすぐ上に位置するサンプルから複製される。この後にランレングスが続くが、これは、走査順序におけるいくつの後続パレットインデックスがやはり上の行から複製されるかを示す。
【０１２２】
HEVCに関するいくつかの提案では、パレットモードはCUレベルでシグナリングされるが、PUレベルでパレットモードをシグナリングすることも可能であることがある。現在のブロック中にエスケープサンプルがあることを示すために、フラグ、たとえばpalette_esc_val_present_flagもまたシグナリングされる。パレットモードを異なる方式でシグナリングすることも可能である。たとえば、W. Pu、F. Zou、M. Karczewicz、およびR. Joshi、「Non-RCE4: Refinement of the palette in RCE4 Test 2」、JCTVC-P0231では、現在のサンプルがエスケープサンプルであったかどうかを示すために明示的なフラグを使用することが提唱された。現在のサンプルが非エスケープサンプルであった場合は、パレットモードが「copy above」モードであったか「index」モードであったかを示すために、別のフラグがシグナリングされた。
【０１２３】
HEVCに関する現在の提案では、「index」モードがシグナリングされてその後にインデックス値が続くとき、インデックス値が「エスケープ」サンプルに対応するかどうかを決定する必要がある。たとえば、切捨てバイナリコーディングを使用してシグナリングされたインデックス値を読み取るための最大ビット数がKビットであると仮定する。この場合、シグナリングされた値が「エスケープ」サンプルに対応するかどうかを決定するために、(K-1)ビットを解析する必要がある(たとえばCABACバイパスモードを使用して)。最初の(K-1)ビットの値に応じて、別のビットが解析される必要があることがある(たとえばCABACバイパスモードを使用して)。これらの複数の解析段階は、解析プロセスを減速させスループットを低下させることがある。
【０１２４】
HEVC設計の全体にわたって使用される別の設計原理は、バイパスビンをグループ化することである。しかし、パレットコーディングモードにおけるエスケープサンプルシグナリングに関する現在の提案は、バイパスコーディングされたビン/シンタックス要素のグループ化を妨げる。たとえば、2つの連続するエスケープサンプルがある場合、インデックス値および成分値(場合によっては量子化される)はすべて、バイパスモードでコーディングされる。しかし、第2のエスケープサンプルの前に「index」モードフラグがシグナリングされる必要があり、これはコンテキストコーディングされる(すなわちバイパスモードでコーディングされない)。したがって、2つの連続するエスケープサンプルがあるときでも、そのような連続するサンプルについてコーディングされたバイパスビンは、共にグループ化され得ない。エスケープサンプルが連続しない場合、これらのエスケープサンプルに対応するバイパスビン間に、他のコンテキストコーディングされたビン(たとえば、ランレングスコーディングのための)がある可能性がある。
【０１２５】
前述の欠点に鑑みて、本開示は、パレットベースのコーディングモードを用いてコーディングされたブロック内のエスケープサンプルの場所を明示的にシグナリングするための技法を提案する。以下では、本開示の技法のいくつかの態様がビデオエンコーダ20に関して説明される。ビデオデコーダ30もまた、本開示の技法を、ただし説明されるビデオ符号化技法と逆の方式で、実行できることを理解されたい。
【０１２６】
palette_esc_val_present_flagが1である場合の例を考える。これは、現在のブロック中にエスケープサンプルがあることを示す。この例では、ビデオエンコーダは、バイナリベクトルbを符号化するように構成されてよく、バイナリベクトルb中の各値は、ブロック中の対応するサンプルがエスケープサンプルである(たとえば、バイナリベクトル中の1によって示される。またはその逆)か、それとも非エスケープサンプルである(たとえば、バイナリベクトル中の0によって示される。またはその逆)かを示す。そのようなベクトルの例は、b = 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0であり得る(バイナリベクトルは、サンプルがエスケープである(1)か非エスケープである(0)かを示す)。簡単にするために、例示的なバイナリベクトルbは4×4ブロックの場合のものだが、パレットコーディングのいくつかの例では、パレットモードは、CUレベル(たとえば8×8以上)でのみ使用され得る。
【０１２７】
本開示は、ビデオエンコーダ20が、バイナリベクトルb(たとえば上に示されるような)を示す情報をビデオデコーダ30に明示的にシグナリングして、ブロック中のどの場所でエスケープサンプルが使用されるかを示すように、構成されることを提案する。バイナリベクトルbを示す情報は、1のランまたは0のランをコーディングすることによってコーディングされてよい。本開示の一例では、エスケープサンプルの位置を示すバイナリベクトルは1値よりも0値を多く有する可能性がより高い(たとえば、1値がエスケープサンプルを示すと仮定して)ので、ビデオエンコーダ20は、0値のランをコーディングすることによって、サンプル画素の位置を示すバイナリベクトルbを符号化するように構成され得る。
【０１２８】
本開示の一例では、ビデオエンコーダ20は、エスケープサンプルの総数-1を示すシンタックス要素を符号化するように、最初に構成され得る。ビデオエンコーダ20は、エスケープサンプルの総数の全体を符号化する必要はない。というのは、ビデオデコーダ30は、palette_esc_val_present_flagの値が与えられれば、ブロック中に少なくとも1つのエスケープサンプルがあると推測できるからである。すなわち、ビデオデコーダ30が値1のpalette_esc_val_present_flagを受け取った場合、ビデオデコーダ30は、ブロック中に少なくとも1つのエスケープサンプルがあると推測することができる。したがって、ビデオエンコーダ20は、エスケープサンプルの実際の総数をビデオデコーダ30に対して示すために、エスケープサンプルの総数-1を符号化するだけで済む。このようにすれば、エスケープサンプルの総数をシグナリングするのに必要なビットはより少ない。
【０１２９】
上の例示的なバイナリベクトルb中では、エスケープサンプルの総数は4であり、したがって、エスケープサンプルの数-1は3である。ビデオデコーダ30は、エスケープサンプルの総数-1を示すシンタックス要素の値を復号した後、0のラン4つが予想されると決定することができる。この場合、ビデオエンコーダ20は、上のバイナリベクトルbを、3, 0, 0, 6というラン値に変換するように構成され得る。図4は、ランレングスシーケンス3, 0, 0, 6に変換されたバイナリベクトルbを示す。これらのラン値は、3つの0およびそれに続く1があることを示す。次いで、0個の0およびそれに続く1がある。次に、再び0個の0およびそれに続く1がある。次に、6個の0およびそれに続く1がある。ビデオデコーダ30は、総計4つのエスケープ値しかないとすでに決定しているので、次いでビデオデコーダ30は、ビデオエンコーダ20からのどんな明示的なシグナリングもなしに、バイナリベクトルb中の最後の3つのエントリーが0であると決定することができる。同様に、ビデオエンコーダ20は、シグナリングされるエスケープサンプルの総数-1が与えられた場合の可能なエスケープサンプルのすべてを示した後は、バイナリベクトルb中の0のそれ以上のどんなランもシグナリングする必要はない。別の例では、エスケープサンプルの数を明示的にシグナリングする代わりに、ランレングスコーディングがブロックの終わりまで継続されてもよい。この場合、ラン値は3, 0, 0, 6, 3となる。ブロックは3つの0の後で終わることになるので、ビデオエンコーダ20は、3つの0の最後のランに続いて1をシグナリングすることはない。
【０１３０】
ランレングスベースのシグナリングに関する本開示の1つまたは複数の例によれば、ランレングスシーケンスをコーディングするために、ゴロムライスコード、任意の次数の指数ゴロムコード、ゴロムライスと指数ゴロムコードとの連結、切捨て指数ゴロムコード、切捨てライスコード、切捨てゴロムライスと切捨て指数ゴロムコードとの連結、または、切捨てバイナリ化を含めた他の任意のバイナリ化、が使用され得る。一例では、バイナリ予測ベクトル圧縮ユニット209は、0次指数ゴロムコードをランレングスコーディング技法として使用する。
【０１３１】
切捨てバイナリ化の場合、0のランの可能な最大値は、バイナリベクトル中の前の「1」の場所と、バイナリベクトルサイズと、残りのエスケープサンプルの数とに依存する。4つのエスケープシンボルを含む、特定のサイズ、たとえば16のバイナリベクトルを用いる上の例では、ランレングスシーケンス「3-0-0-6-」は、切捨てバイナリ化「3[12]-0[9]-0[9]-6[9]」を用いてコーディングされてよく、可能な最大ラン値が角括弧の中で提供されている。
【０１３２】
本開示の一例では、ラン値は、バイパスモードでコーディングされる。本開示の別の例では、ラン値のバイナリ化におけるプレフィックスの一部は、コンテキストコーディングされてよく、残りのプレフィックスビンおよびサフィックスビンは、バイパスコーディングされてよい。また、いくつかの例では、バイナリ化は、バイナリベクトル中の要素(0または1)の場所またはインデックスに依存することがある。特定の例として、場所が何らかの閾値よりも小さい場合は、あるタイプのバイナリ化が使用され、そうでない場合は、別のタイプのバイナリ化が適用される。いくつかの例では、バイナリ化タイプは、異なる複数のバイナリ化コードであってもよく、または、指数ゴロムコードなど、同じコードファミリだが異なる次数のものであってもよい。
【０１３３】
上の例では、ビデオエンコーダ20は、最初に、ビデオデータの1つまたは複数のブロックについてのパレットエントリーをシグナリングすることができる。次いでビデオエンコーダ20は、パレットエントリーに関連するビデオデータの1つまたは複数のブロック中にいずれかのエスケープサンプルがあるかどうかを決定することができる。エスケープサンプルがある場合は、ビデオエンコーダ20は、ブロック中のエスケープサンプルの数を示すシンタックス要素をシグナリングする。上の技法によれば、ビデオエンコーダ20は、ビデオデータの1つまたは複数のブロックについてエスケープサンプルがあることを示すフラグをシグナリングすることができ、次いで、エスケープサンプルの総数-1を示すシンタックス要素をシグナリングすることができる。次いでビデオエンコーダ20は、ビデオデータの1つまたは複数のブロック中のエスケープサンプルの場所を示すバイナリベクトルを符号化することになる。上の技法によれば、ビデオエンコーダ20はさらに、前述の技法を使用して、バイナリベクトルを0のランとして符号化することができる。ビデオエンコーダ20はまた、エスケープサンプルの値を明示的にシグナリングするように構成され得る。いくつかの例では、ビデオエンコーダ20は、エスケープサンプルを量子化することができる。このようにしてすべてのエスケープサンプルが共にシグナリングされるが、エスケープサンプルはバイパスモードでシグナリングされるので、上で論じられた、前に提案された技法に対して、より多くのバイパスコーディングされたビンが共にグループ化される。本開示の一例では、ラン値(すなわち、エスケープサンプルの場所を意味するバイナリベクトル中の0のラン)は、バイパスモードでコーディングされる。本開示の別の例では、ラン値のバイナリ化におけるプレフィックスの一部はコンテキストコーディングされてよく、残りのプレフィックスビンおよびサフィックスビンはバイパスコーディングされてよい。ビデオエンコーダ20は、バイナリベクトルの前または後に、ただしブロック中のエスケープサンプルの総数についての指示の後に、エスケープサンプルをシグナリングできることに留意されたい。
【０１３４】
ビデオデコーダ30は、ビデオデータの1つまたは複数のブロックについてのパレットエントリーを受け取り、受け取ったパレットエントリーに関連する1つまたは複数のブロック中にいずれかのエスケープサンプルがあるかどうかを示すシンタックス要素を受け取るように構成され得る。エスケープサンプルがある場合は、ビデオデコーダ30はさらに、ビデオデータの1つまたは複数のブロック中のエスケープサンプルの総数-1を示すシンタックス要素を受け取るように構成され得る。ビデオデコーダ30は、受け取ったシンタックス要素の値に1を足すことによって、エスケープサンプルの総数を決定することができる。ビデオデコーダ30はさらに、ビデオデータの1つまたは複数のブロック中のエスケープサンプルの場所を示すシンタックス要素を受け取ることができる。上で論じられたように、エスケープサンプルの場所を示すシンタックス要素は、0値(たとえば、非エスケープサンプルを示すバイナリベクトル中の値)のランを符号化するランレングスシーケンスの形であってよい。ビデオデコーダ30は、決定したエスケープサンプルの総数を使用してランレングスシーケンスを復号して、1つまたは複数のブロック中のエスケープサンプルの場所を決定することができる。ビデオデコーダ30はまた、量子化されたエスケープサンプルと、ブロック中の各サンプルに使用された様々なパレットモードを示すシンタックス要素とを受け取るように構成され得る。次いでビデオデコーダ30は、前述の復号した情報を使用して、1つまたは複数のブロックを復号することができる。
【０１３５】
本開示の別の例では、ビデオエンコーダ20は、ブロック全体のエスケープサンプルの各成分についての量子化された値をシグナリングした後で、パレットモード(たとえば、「copy above」または「index」モード)およびランレングスシーケンス値をシグナリングするように構成され得る。しかし、異なる順序付けを使用することも可能である。たとえば、ビデオエンコーダ20は、最初に、次のエスケープサンプルの場所を指定するランレングスシーケンス値をシグナリングすることができる。次いでビデオエンコーダ20は、次のエスケープサンプルに達するまで、パレットモードおよびランレングスシーケンス値をシグナリングすることができる。この後に、次のエスケープサンプルについての成分の量子化された値が続いてよい。別の例では、ビデオエンコーダ20によってシグナリングされる値の順序は、次のエスケープサンプルの場所を指定するラン値、次のエスケープサンプルについての色成分の値または量子化された値、ならびに、次のエスケープサンプルまでのパレットモードおよびランレングス、という順序であってよい。
【０１３６】
本開示の別の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、エスケープサンプルの場所の知識を使用して、「index」モードにおけるインデックス値、ならびに「copy above」モードと「index」モードの両方におけるランレングス、をコーディングすることができる。これは、次の技法の一方または両方を使用して達成され得る。
【０１３７】
一例では、エスケープサンプルの場所がわかっているので、「index」モードでは、ビデオエンコーダ20は、エスケープサンプルを示すために割り当てられたインデックスを反映するためにパレットサイズを1つインクリメントする必要はない。したがって、切捨てバイナリコーディングの場合の最大値は、1つ小さい。
【０１３８】
別の例では、「index」または「copy above」におけるランは、次のエスケープサンプルの場所を境界とする。これは、切捨てバイナリコーディング、切捨て指数ゴロムコーディング、切捨てゴロムライスコーディング、または切捨てゴロムライスと切捨て指数ゴロムコーディングとの連結、を使用してランレングスがシグナリングされるときに有用である。走査における現在の場所をiとする。次のエスケープサンプルの場所が場所jにあるとする。この場合、「index」または「copy above」モードにおける可能な最大ラン値は、(j-1-i)である。エスケープシンボルが「copy above」モードで複製されることが許されない場合に、前の行(または、垂直走査の場合は列)の中のエスケープシンボルの知識を使用して、「copy above」モードにおける可能な最大ラン値に対するより厳しい制約が導出され得る。これは、「copy above」ランがエスケープサンプルのすぐ下のサンプルに達したときに、「copy above」ランが中断しなければならないからである。
【０１３９】
本開示のいくつかの例は、バイナリベクトルbを示すランレングスシーケンスの終了場所コーディングに関する。本開示の1つまたは複数の例では、ビデオエンコーダ20は、バイナリベクトルの終了場所をコーディングするための予約済みランレングスLを使用して、バイナリベクトルbを符号化するように構成され得る。一例では、L=1が、予約済みランレングスとして使用される。ビデオエンコーダ20において、ランレングスがL以上である場合は、ビデオエンコーダ20は、ランレングスに1を足すように構成される。実際のランレングスがL未満である場合は、ビデオエンコーダ20は、ランレングスをそのままシグナリングするように構成される。バイナリ予測ベクトル圧縮ユニット209は、予約済みランレングスLを用いて終了場所ランレングスをシグナリングすることができる。
【０１４０】
同様に、ビデオデコーダ30において、ランレングスの復号値がLよりも大きい場合は、実際のランレングスから1が引かれる。ランレングスの復号値がLよりも小さい場合は、復号値が実際のランレングスとして使用される。復号値がLに等しい場合は、バイナリ予測ベクトルb中の残りの場所はすべて0である。したがって、復号値がLに等しい場合は、それ以上のランシグナリングは必要ない。
【０１４１】
上と同じ例(すなわち、b=[0001110000001000])を使用し、L=4と仮定すると、ビデオエンコーダ20は、図4のランレングスシーケンス「3-0-0-6」を「3-0-0-7-4」としてシグナリングするように構成される。次いで、ビデオデコーダ30は、上の規則を適用し、ランレングスシーケンスを「3-0-0-6-終わり」として回復するように構成され得る。すなわち、最初のランレングス値3は、3として復号され、次の2つのランレングスシーケンス値0は、0として復号される。というのは、両方の0ランレングスシーケンス値は、予約済みランレングス値L=4未満だからである。次のランレングスシーケンス値は7であり、したがって、ビデオデコーダ30は、値7から1を引いて6を得るように構成されることになる。というのは、受け取られた値7は、予約済みランレングス値L=4よりも大きいからである。最後に、最後に受け取られたランレングス値4は、予約済みランレングス値L=4に等しい。したがって、ビデオデコーダ30は、バイナリベクトルb中に値「1」がそれ以上ないと決定することができる。この方法が使用されるときは、ブロック中のエスケープサンプルの数に関する指示を明示的にシグナリングする必要はない。
【０１４２】
本開示の別の例では、ビデオエンコーダ20は、バイナリベクトルb中の0と1の両方の要素についてランレングスシーケンス値をコーディングするように構成され得る。この例では、シグナリングされるまさに最初のランレングス値は、バイナリベクトルb中の0または1のいずれかの値に関連してよい。第1のランが0のランに関連するかそれとも1のランに関連するかは、ビデオエンコーダ20とビデオデコーダ30の両方にとってアプリオリにわかっていてもよく、または明示的にシグナリングされてもよい。予約済みラン値もまた、0または1のいずれかの要素に適用されて、バイナリベクトルのシグナリングが終了されてよい。この場合、予約済み値が適用されない要素については、ラン値が調整される(予約済み値よりも大きい場合に増やされる)必要はない。これは、予約済みラン値が、一方の要素(0または1)だけに使用されればよく、他方の要素には必要ないことを意味する。
【０１４３】
本開示のこの技法を使用するときは、ビデオエンコーダ20は、第1のランを除いては、この実際のラン値を、実際のラン値よりも1つ小さいようにシグナリングする。これは、0のランの後には常に1のランが続き、その逆でもあるからである。したがって、上の例示的なバイナリベクトルb中で、0のランが最初にシグナリングされると仮定すると、ビデオエンコーダ20は、バイナリベクトルbを、3, 2, 5, 0, 2というランレングスシーケンスにコーディングするように構成され得る。
【０１４４】
たとえば、ビデオエンコーダ20は、3つの1のラン値を2としてシグナリングし、後続の6つの0のランを5としてシグナリングし、以下同様にするように構成され得る。この例では、1(エスケープ値)の数、または0の数は、明示的にシグナリングされない。また、ブロック中にそれ以上のエスケープサンプルがないことを示すための予約済み値もシグナリングされない。本開示の別の例では、バイナリベクトルの1要素(たとえばエスケープサンプル)についてラン値がシグナリングされてよく、前述のすべての方法が適用されてよい。
【０１４５】
いくつかの場合では、バイナリベクトルbの終わりにおける0要素の数は、予約済みラン値Lよりも小さいことがある。この場合、残りの0要素についてのラン値をシグナリングする方が効率的であることがある。上の例では、エスケープサンプルがそれ以上ないことを示すために4をシグナリングする代わりに、ビデオエンコーダ20は、3つの0のランをシグナリングするように構成され得る。この場合、シグナリングされるランレングスシーケンス値は、3, 0, 0, 7, 3とすることができる。残りの0(この場合は3)の代わりに、ビデオエンコーダ20は、後述されるように切捨てランレングスシーケンス値をコーディングするように構成され得る。
【０１４６】
ビデオエンコーダ20は、固定長コーディング、切捨てバイナリコーディング、切捨て指数ゴロムコーディング、切捨てゴロムライスコーディング、切捨てゴロムライスと切捨て指数ゴロムとの連結、または、単項もしくは切捨て単項と切捨て指数ゴロムコーディングとの連結、を使用して、ランレングスシーケンス値をコーディングするように構成され得る。一例では、次数2の切捨て指数ゴロムコードが使用される。切捨てコードまたは固定長コードを使用する場合、ビデオエンコーダ20は、コーディングされる必要のある最大値を知っている。最大ラン値は、バイナリベクトルbのサイズと、ブロック中のエスケープ画素の残りの数と、バイナリベクトル中の前のエスケープサンプルの場所とに依存し、最大値は、次のように導出され得る。
【０１４７】
ビデオエンコーダ20がエスケープサンプルの数を明示的にシグナリングする(たとえば、エスケープサンプルの数-1)、第1の例を考える。ブロック中のサンプルの総数がBであり、エスケープサンプルの総数がNであると考える。ビデオエンコーダ20が、M個のラン値S0, S1, ... , S(M-1)をこれまでにシグナリングしたと仮定する。
【０１４８】
【数１】
2017535134.tif 000003
【０１４９】
とする。この場合、次のランの可能な最大値は、(B-(S+M)-(N-M)) = (B-(S+N))に等しい。この式を使用して、ビデオエンコーダ20は、バイナリベクトルbの各場所における可能な最大ランレングスシーケンス値を決定することができる。これはまた、次のような等価な方式でも表現され得る。バイナリベクトルのインデックスを0〜B-1とする。0の現在のランの開始場所をiとし、残りの1(エスケープサンプル)の数をRとする。この場合、可能な最大ラン値は、(B-i-R)として指定され得る。ビデオエンコーダ20およびビデオデコーダ30はまた、特定のパレットコーディングモード(たとえばcopy aboveモード)を示すインデックスのランの最大ラン値を決定するために、この技法を使用することもできる。
【０１５０】
本開示の別の例では、ビデオエンコーダ20がサンプルの数を明示的にシグナリングしない場合、次のランレングスシーケンス値の最大ランレングスシーケンス値は、min(A,(B-(S+M)-1))として決定されてよく、ここで、Aは、この場所から先に0でないエントリーがそれ以上ないことを示すために割り当てられるラン値であり、「min」は、リストから最大値を選択する。これは、エスケープサンプルがそれ以上ないことを示すために、予約済みラン値または実際の0のランのいずれかがシグナリングされると仮定する。
【０１５１】
いくつかの例では、可能な最大ラン値が0である場合、ランレングスシーケンス値はシグナリングされなくてよい。たとえば、...., 1, 0というバイナリベクトルを考え、1と0の両方のランがシグナリングされると考える。この場合、最後の0要素についての可能な最大ラン値は、0である(前述のように1つデクリメントした後)。したがって、ビデオエンコーダ20は、最後の0要素についてのランレングスシーケンス値をシグナリングしなくてよく、ビデオデコーダ30は、ランレングスシーケンス値を、0に等しいと推測することができる。
【０１５２】
切捨て指数ゴロムコーディング、切捨てゴロムライスコーディング、または単項と切捨て指数ゴロムコーディングとの連結の場合、プレフィックスおよび/またはサフィックスは切捨てを使用することができる。この例では、切捨てExp-Golombコードという名前の、指数ゴロム(Exp-Golombコード)の変形が使用されてよい。このコードは、可能な最大ランレングスがわかっているときにランレングス値をコーディングするのに適する。
【０１５３】
k次Exp-Golomb(EGk)コードと同様、k次切捨てExp-Golomb(TEGk)コードワードもまた、プレフィックスおよびサフィックスという2つの部分で構成される。所与の符号なし整数xおよびその最も大きい可能な値Xの場合、EGkコードワードのプレフィックス部分は、
【０１５４】
【数２】
2017535134.tif 000004
【０１５５】
の値に対応する切捨て単項コードからなる。具体的には、
【０１５６】
【数３】
2017535134.tif 000005
【０１５７】
の場合、単項コードの「終端1」は回避することができる。
【０１５８】
プレフィックスが切り捨てられる場合、すなわち
【０１５９】
【数４】
2017535134.tif 000006
【０１６０】
の場合は、TEGkのサフィックス部分は、k+l(x)またはk+l(x)-1ビットを使用するx-2k(2l(x)-1)の切捨てバイナリ表現[1]として計算される。切捨てバイナリコードの入力についての最大シンボル値は、X-2k(2l(x)-1)である。
【０１６１】
プレフィックスが切り捨てられない場合は、TEGkのサフィックス部分は、EGkと同じである。すなわち、k+l(x)ビットを使用するx-2k(2l(x)-1)のバイナリ表現である。Table I(表1)は、TEG0の例である。
【０１６２】
【表１】
2017535134.tif 000007
【０１６３】
TEGkを使用してバイナリベクトルbのランレングスシーケンスをコーディングすることが提案される。
【０１６４】
別の例では、グループベースのシグナリング技法など、階層構造を使用してエスケープサンプル場所がコーディングされてよい。この例の場合、エスケープサンプルの場所を示すバイナリベクトルが、以下によって示されると仮定する。
b = [b0, b1,..., bN-1]、N≧0、bi∈{0,1}、0≦i<N
また、bi∈{0,1}、0≦i<Nは、エスケープサンプルと呼ばれる。N=0である場合、b=φは空のベクトルであり、これはシグナリングされる必要はない。したがって、後続の記述では、N>0と仮定される。
【０１６５】
次に、グループベースのシグナリングのための技法が説明される。バイナリベクトルbが、重複しないK個のグループ(K>0)に分割され、グループの合併がバイナリベクトルb全体をカバーすることが提案される。各グループは、
【０１６６】
【数５】
2017535134.tif 000008
【０１６７】
、0≦k<Kとして示される。各グループは、1つまたは複数の予測フラグ、すなわちCk>0を含む。一例では、グループは連続的である。たとえば、G0 = [b0, b1, b2, b3]、G1 = [b4, b5, b6]、G2 = [b7, b8]、以下同様である。インターリーブされた区分化など、他の区分化方法も可能である。一例として、インターリーブされた区分化の場合、グループは、インターリーブされた予測フラグによって形成されてよい(たとえば、G0 = b0, b4, b8, b12、G1 = b1, b5, b9, b13、G2 = b2, b6, b10, b14)。グループ中のフラグの順序は、予測子パレットまたは他の予測子リスト中のエントリーの走査に従うことができ、たとえば、したがって、b0はリストまたはパレット中の第1のフラグであり、b1はリストまたはパレット中の第2のフラグであり、以下同様である。
【０１６８】
グループ区分化の技法、グループの順序、および各グループ内の予測フラグの順序付けは、事前定義済みであってもよく(ビデオエンコーダ20とビデオデコーダ30の両方がこの区分化を知っていると想定されることを意味する)、または、コーディングされたビットストリーム中でビデオエンコーダ20によって適応的にシグナリングされてもよい。ビデオエンコーダ20は、定義された順序に従ってグループごとに、グループ中のエスケープサンプルの指示をビットストリーム中でシグナリングするように構成され得る。
【０１６９】
各グループ中のバイナリフラグをシグナリングする前または後に、ビデオエンコーダ20は、「停止」フラグをビットストリーム中でシグナリングすることができ、これは、バイナリベクトル中のエスケープサンプルの残りの指示が0であるかどうかを示す。0でない指示がそれ以上ないことを「停止」フラグが示す場合は、ビデオエンコーダ20は、残りのフラグのシグナリングをスキップすることができる。たとえば、残りのフラグのコーディング(たとえば、ビデオエンコーダ20において符号化することによる、またはビデオデコーダ30において解析して復号することによる)は、スキップされてよい。一例では、「停止」フラグは、各グループがシグナリングされた後でシグナリングされる(たとえば、ビデオエンコーダ20によってシグナリングされ、ビデオデコーダ30によって受け取られる)。最後の可能なグループの後は「停止」フラグをシグナリングする必要はない。というのは、最後の可能なグループに達した場合、このグループは、0でない指示を少なくとも1つ含むことになるからである。この場合、「停止」フラグは、1に等しいと推測されてよい。
【０１７０】
グループGk-1の後でシグナリングされた「停止」フラグが0であり(残りの指示のいくつかが0でないことを意味する)、グループGk中のすべての予測フラグが0である場合は、残りの指示のいくつかが0でないと推測できるので、グループGkの後で「停止」フラグはシグナリングされない。
【０１７１】
本開示の別の例では、バイナリベクトルbは、2進木ベースのシグナリングを使用してコーディングされてよい。この例では、ビデオエンコーダ20は、バイナリベクトルbをいくつかの連続的な領域に区分化するように構成されてよく、各領域は、エスケープサンプル場所の指示の1つまたは複数を含む。ビデオエンコーダ20は、その領域内のすべての要素が0であるか否かを示すために、1ビットをシグナリングするように構成され得る。領域がすべて0でない場合は、ビデオエンコーダ20は、上で論じられたのと同じようにして、その領域をさらに下位領域に分割することができる。
【０１７２】
領域の区分化は、所与の規則に従って停止されてよい。たとえば、規則は、「領域サイズが閾値よりも小さい場合は区分プロセスが停止する」というものであってよい。区分化が停止したとき、領域サイズが1よりも大きく、0でない要素を含む場合は、ビデオエンコーダ20は、領域中の各要素をビットストリーム中でシグナリングすることができる。この場合、領域サイズがXであると仮定すると、最初のX-1個の要素がすべて0である場合は、最後の要素は1であるはずであり、したがって、ビデオエンコーダ20は、この要素をビットストリームに含める必要はない。
【０１７３】
本開示に記載の前述の技法は、任意の組合せで共に使用されてよいことを理解されたい。
【０１７４】
図7は、本開示の技法による例示的な符号化方法を示すフローチャートである。図7の技法は、パレットベース符号化ユニット122を含めた、ビデオエンコーダ20の1つまたは複数の構造によって実装され得る。
【０１７５】
本開示の一例では、ビデオエンコーダ20は、バイナリベクトルに従ってビデオデータのブロックを符号化するように構成されてよく、バイナリベクトルは、パレットベースのコーディングモードを使用して符号化されたビデオデータのブロック中のエスケープサンプルの位置の指示を含む(700)。ビデオエンコーダ20はさらに、ランレングスコーディングを使用して、バイナリベクトルを示すランレングスシーケンスを符号化し(702)、バイナリベクトルを示すランレングスシーケンスを、符号化されたビデオビットストリーム中でシグナリングする(704)ように構成され得る。
【０１７６】
他の例では、本開示の技法は、エスケープサンプル場所を示すためにバイナリベクトルまたはランレングスシーケンスを具体的に必要としない。本開示の一例では、ビデオエンコーダ20は、パレットベースのコーディングモードを使用して符号化されたビデオデータのブロック中のエスケープサンプルの場所を示す情報をシグナリングするように構成されてよく、ブロック中のエスケープサンプルの場所を示す情報は、1つまたは複数のパレットベースのコーディングモードと、1つまたは複数のパレットベースのコーディングモードに関連するラン値とを示すシンタックス要素をシグナリングする前に、シグナリングされる。このようにして、エスケープサンプルの場所を示す情報のすべてが共にグループ化される。これは、CABACのバイパスモードを使用してエスケープサンプルが符号化される状況で、有益であることがある。というのは、バイパスモードを使用してコーディングされたシンタックス要素が、同時に、共にグループ化され符号化され得るからである。これは、1つまたは複数のパレットベースのコーディングモードと、1つまたは複数のパレットベースのコーディングモードに関連するラン値とを示すシンタックス要素(CABACの通常モードを使用して(すなわちコンテキストありで)コーディングされ得る)で、エスケープサンプルを示す情報をインターリーブするよりも、効率的であることがある。CABACコーダ(たとえばエントロピー符号化ユニット118)の通常モードとバイパスモードとの間で切り換えることは、非効率的であることがある。
【０１７７】
図8は、本開示の技法による例示的な復号方法を示すフローチャートである。図8の技法は、パレットベース復号ユニット165を含めた、ビデオデコーダ30の1つまたは複数の構造によって実装され得る。
【０１７８】
本開示の一例では、ビデオデコーダ30は、バイナリベクトルを示すランレングスシーケンスを受け取るように構成されてよく、バイナリベクトルは、パレットベースのコーディングモードを使用して符号化されたビデオデータのブロック中のエスケープサンプルの位置の指示を含む(800)。ビデオデコーダ30はさらに、ランレングスシーケンスを復号してバイナリベクトルを取得し(802)、バイナリベクトルを使用してビデオデータのブロックを復号する(804)ように構成され得る。図8の方法との関連で使用され得る追加の例示的な方法が、以下に説明される。
【０１７９】
他の例では、本開示の技法は、エスケープサンプル場所を示すためにバイナリベクトルまたはランレングスシーケンスを具体的に必要としない。本開示の一例では、ビデオデコーダ30は、パレットベースのコーディングモードを使用して符号化されたビデオデータのブロック中のエスケープサンプルの場所を示す情報を受け取ることであって、ブロック中のエスケープサンプルの場所を示す情報が、1つまたは複数のパレットベースのコーディングモードと、1つまたは複数のパレットベースのコーディングモードに関連するラン値とを示すシンタックス要素を受け取る前に、受け取られるものであること、および、受け取った情報を使用してビデオデータのブロックを復号すること、を行うように構成されてよい。このようにして、エスケープサンプルの場所を示す情報のすべてが共にグループ化される。これは、CABACのバイパスモードを使用してエスケープサンプルが復号される状況で、有益であることがある。というのは、バイパスモードを使用して復号されるシンタックス要素が、同時に、共にグループ化され符号化され得るからである。これは、1つまたは複数のパレットベースのコーディングモードと、1つまたは複数のパレットベースのコーディングモードに関連するラン値とを示すシンタックス要素(CABACの通常モードを使用して(すなわちコンテキストありで)復号され得る)で、エスケープサンプルを示す情報をインターリーブするよりも、効率的であることがある。CABACコーダ(たとえばエントロピー復号ユニット150)の通常モードとバイパスモードとの間で切り換えることは、非効率的であることがある。
【０１８０】
本開示の別の例では、ビデオデコーダ30は、ビデオデータのブロックについてのパレットエントリーを受け取り、1つまたは複数のエスケープサンプルを受け取り、ビデオデータのブロック中のそれぞれの画素についてのパレットモードを示す複数のフラグを受け取るように構成され得る。ビデオデコーダ30は、パレットエントリーと、1つまたは複数のエスケープサンプルと、バイナリベクトルと、ビデオデータのブロック中のそれぞれの画素についてのパレットモードを示す複数のフラグとを使用して、ビデオデータのブロックを復号するように構成され得る。
【０１８１】
本開示の別の例では、ビデオデコーダ30は、ランレングスシーケンスを受け取った後で、ただしモードフラグとモードフラグに対応するラン値とを受け取る前に、1つまたは複数のエスケープサンプルを受け取ることであって、1つまたは複数のエスケープサンプルが共にグループ化されるものであること、ならびに、CABACのバイパスモードでバイナリベクトルおよび1つまたは複数のエスケープサンプルを復号すること、を行うように構成され得る。
【０１８２】
本開示の別の例では、ビデオデコーダ30は、ビデオデータのブロックを符号化するときに使用されたエスケープサンプルの総数を示すシンタックス要素を受け取ること、ランレングスシーケンスを受け取る前に、かつモードフラグとモードフラグに対応するラン値とを受け取る前に、1つまたは複数のエスケープサンプルを受け取ることであって、1つまたは複数のエスケープサンプルが共にグループ化されるものであること、および、バイナリベクトルを復号すること、を行うように構成され得る。シンタックス要素は、エスケープサンプルの総数と、CABACのバイパスモードにおける1つまたは複数のエスケープサンプルとを示す。
【０１８３】
本開示の別の例では、ビデオデコーダ30は、ビデオデータのブロックを符号化するときに使用されたエスケープサンプルの総数を示すシンタックス要素を受け取るように構成され得る。ビデオデコーダは、エスケープサンプルの総数を使用して、ランレングスシーケンスを復号してバイナリベクトルを取得するように構成され得る。
【０１８４】
本開示の一例では、エスケープサンプルの総数を示すシンタックス要素は、エスケープ値の総数-1として表される。本開示の別の例では、ランレングスシーケンスは、バイナリベクトル中の各1値の間の0値のランレングスを示す1つまたは複数の値を含む。本開示の別の例では、ランレングスシーケンスは、バイナリベクトル中の各1値の間の0値のランレングスを示す1つまたは複数の値と、バイナリベクトル中の最後の1値を示す特別な値とを含む。本開示の別の例では、ビデオデコーダ30は、ランレングスシーケンス中の特定の値が特別な値よりも大きい場合に、特定の値を1つインクリメントすることによって、ランレングスシーケンスを復号するように構成され得る。
【０１８５】
本開示の別の例では、ビデオデコーダ30は、切捨てコードを使用してランレングスシーケンスを復号し、ランレングスシーケンス中の各値につきランレングスシーケンスの最大値を決定するように構成される。本開示の別の例では、切捨てコードは、切捨て指数ゴロムコードであり、最大値を決定することは、式(B-i-R)に従ってランレングスシーケンス中の各値につきランレングスシーケンスの最大値を決定することを含み、Bはビデオデータのブロック中のサンプルの総数であり、iは0の現在のランの開始場所であり、Rは残りのエスケープサンプルの数である。
【０１８６】
本開示の別の例では、ビデオデコーダ30は、copy aboveモードについてのインデックスの第1のランを受け取り、indexモードについてのインデックスの第2のランを受け取り、切捨てコードを用いてインデックスの第1のランおよびインデックスの第2のランを復号するように構成される。本開示の別の例では、ビデオデコーダ30はさらに、式(j-1-i)に従って、インデックスの第1のランおよびインデックスの第2のラン中の各値につき、インデックスの第1のランおよびインデックスの第2のランの最大値を決定するように構成され、jはブロック中の場所jにおける次のエスケープシンボルであり、iはブロック中の現在の場所である。
【０１８７】
本開示の別の例では、ビデオデコーダ30は、最初に、ビデオデータのブロックを符号化するときに使用されたエスケープサンプル総数を示すシンタックス要素を受け取ること、次に、バイナリベクトルを示すランレングスシーケンスを受け取ることであって、バイナリベクトルが、パレットベースのコーディングモードを使用して符号化されたビデオデータのブロック中のエスケープサンプルの位置の指示を含むものであること、次に、1つまたは複数のエスケープサンプルを受け取ること、次に、copy aboveモードとindexモードとの少なくとも一方についての1つまたは複数のモードフラグを受け取ること、および、次に、1つまたは複数のフラグの各々についての関連するラン値を受け取ること、を行うように構成され得る。
【０１８８】
例に応じて、本明細書で説明される技法のいずれかのいくつかの行為またはイベントは異なる順序で実行されてもよく、一緒に追加され、統合され、または省略されてもよい(たとえば、説明される行為またはイベントのすべてが技法の実施のために必要とは限らない)ことを認識されたい。その上、いくつかの例では、行為またはイベントは、順次的にではなく、たとえばマルチスレッド処理、割り込み処理、またはマルチプロセッサを通じて同時に実行され得る。加えて、明快にするために、本開示のいくつかの態様は単一のモジュールまたはユニットによって実行されるものとして説明されるが、本開示の技法がビデオコーダと関連付けられるユニットまたはモジュールの組合せによって実行され得ることを理解されたい。
【０１８９】
説明を目的に、本開示のいくつかの態様は開発中のHEVC規格に関して説明された。しかしながら、本開示において説明される技法は、まだ開発されていない他の標準的なまたは独自のビデオコーディングプロセスを含む、他のビデオコーディングプロセスにとって有用であり得る。
【０１９０】
上で説明された技法は、ビデオエンコーダ20(図1および図2)および/またはビデオデコーダ30(図1および図3)によって実行されてよく、それらの両方が一般にビデオコーダと呼ばれることがある。同様に、ビデオコーディングは、適用可能なとき、ビデオ符号化またはビデオ復号を指すことがある。
【０１９１】
本技法の様々な態様の特定の組合せが上で説明されるが、これらの組合せは、本開示において説明される技法の例を示すために与えられるものにすぎない。したがって、本開示の技法は、これらの例示的な組合せに限定されるべきではなく、本開示において説明される技法の様々な態様の任意の想起可能な組合せを包含し得る。
【０１９２】
1つまたは複数の例において、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体に記憶され、またはコンピュータ可読媒体を介して送信されてよく、ハードウェアベースの処理ユニットによって実行されてよい。コンピュータ可読媒体は、データ記憶媒体などの有形媒体、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体に対応する、コンピュータ可読記憶媒体を含み得る。このようにして、コンピュータ可読媒体は、一般に、(1)非一時的な有形コンピュータ可読記憶媒体、または(2)信号もしくは搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示において説明される技法を実装するための命令、コードおよび/またはデータ構造を取り出すために、1つもしくは複数のコンピュータまたは1つもしくは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
【０１９３】
限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気記憶デバイス、フラッシュメモリ、または、命令もしくはデータ構造の形式の所望のプログラムコードを記憶するために使用され、コンピュータによってアクセスされ得る任意の他の媒体を含み得る。また、任意の接続が、適切にコンピュータ可読媒体と呼ばれる。たとえば、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから命令が送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まず、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク（登録商標）(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピーディスク(disk)およびブルーレイディスク(disc)を含み、ディスク(disk)は通常、データを磁気的に再生するが、ディスク(disc)はレーザーを用いてデータを光学的に再生する。上記の組合せも、コンピュータ可読媒体の範囲内に同じく含まれるべきである。
【０１９４】
命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の等価の集積論理回路もしくは離散論理回路のような、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書において使用される「プロセッサ」という用語は、前述の構造、または本明細書において説明される技法の実装に適した任意の他の構造のいずれかを指し得る。さらに、いくつかの態様では、本明細書において説明される機能は、符号化および復号のために構成された専用のハードウェアモジュールおよび/またはソフトウェアモジュール内に与えられてよく、あるいは複合コーデックに組み込まれてよい。また、技法は、1つまたは複数の回路または論理要素において完全に実装され得る。
【０１９５】
本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示される技法を実行するように構成されたデバイスの機能的態様を強調するために、様々なコンポーネント、モジュール、またはユニットが説明されたが、それらのコンポーネント、モジュール、またはユニットは、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上で説明されたように、様々なユニットは、コーデックハードウェアユニットにおいて組み合わされてよく、または適切なソフトウェアおよび/もしくはファームウェアとともに、上で説明されたような1つもしくは複数のプロセッサを含む、相互動作可能なハードウェアユニットの集合によって提供されてよい。
【０１９６】
様々な例が説明されてきた。これらの例および他の例は、以下の特許請求の範囲内に入る。
【符号の説明】
【０１９７】
10  ビデオコーディングシステム
12  ソースデバイス
14  宛先デバイス
16  チャネル
18  ビデオソース
20  ビデオエンコーダ
22  出力インターフェース
28  入力インターフェース
30  ビデオデコーダ
32  ディスプレイデバイス
100  予測処理ユニット
101  ビデオメモリ
102  残差生成ユニット
104  変換処理ユニット
106  量子化ユニット
108  逆量子化ユニット
110  逆変換処理ユニット
112  再構築ユニット
114  フィルタユニット
116  復号ピクチャバッファ
118  エントロピー符号化ユニット
120  インター予測処理ユニット
122  パレットベース符号化ユニット
126  イントラ予測処理ユニット
150  エントロピー復号ユニット
151  ビデオメモリ
152  予測処理ユニット
154  逆量子化ユニット
156  逆変換処理ユニット
158  再構築ユニット
160  フィルタユニット
162  復号ピクチャバッファ
164  動き補償ユニット
165  パレットベース復号ユニット
166  イントラ予測処理ユニット
178  ピクチャ
180  第1のPAL(パレット)コーディングユニット
184  第1のパレット
188  第2のPAL CU
192  第2のパレット
196  イントラ予測コーディングモードによってコーディングされたブロック
200  インター予測コーディングモードによってコーディングされたブロック
202  エントリー
204  エントリー
206  エントリー
208  エントリー
209  バイナリ予測ベクトル圧縮ユニット
210  エントリー
212  エントリー
216  ベクトル
240  マップ
244  パレット
264  行
268  行
【図１】
2017535134.tif 000009
【図２】
2017535134.tif 000010
【図３】
2017535134.tif 000011
【図４】
2017535134.tif 000012
【図５】
2017535134.tif 000013
【図６】
2017535134.tif 000014
【図７】
2017535134.tif 000015
【図８】
2017535134.tif 000016
【手続補正書】
【提出日】平成29年4月3日(2017.4.3)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ビデオデータを復号する方法であって、
バイナリベクトルを示すランレングスシーケンスを受け取るステップであって、前記バイナリベクトルが、パレットベースのコーディングモードを使用して符号化されたビデオデータのブロック中のエスケープサンプルの場所を示し、前記ランレングスシーケンスが、1つまたは複数のパレットベースのコーディングモードと、前記1つまたは複数のパレットベースのコーディングモードに関連するラン値とを示すシンタックス要素を受け取る前に受け取られる、ステップと、
1つまたは複数のパレットベースのコーディングモードと、前記1つまたは複数のパレットベースのコーディングモードに関連するラン値とを示すシンタックス要素を復号する前に、前記ランレングスシーケンスを復号して前記バイナリベクトルを取得するステップと、
前記バイナリベクトルを使用してビデオデータの前記ブロックを復号するステップとを含む方法。
【請求項２】
ビデオデータの前記ブロックについてのパレットエントリーを受け取るステップと、
1つまたは複数のエスケープサンプルを受け取るステップと、
ビデオデータの前記ブロック中のそれぞれの画素についてのパレットモードを示す複数のフラグを受け取るステップとをさらに含み、ビデオデータの前記ブロックを復号するステップが、
前記パレットエントリーと、前記1つまたは複数のエスケープサンプルと、前記バイナリベクトルと、ビデオデータの前記ブロック中のそれぞれの画素についての前記パレットモードを示す前記複数のフラグとを使用して、ビデオデータの前記ブロックを復号するステップを含む、請求項1に記載の方法。
【請求項３】
前記ランレングスシーケンスを受け取った後で、ただしモードフラグと前記モードフラグに対応するラン値とを受け取る前に、前記1つまたは複数のエスケープサンプルを受け取るステップであって、前記1つまたは複数のエスケープサンプルが共にグループ化される、ステップと、
コンテキスト適応型バイナリ算術コーディング(CABAC)のバイパスモードで前記バイナリベクトルおよび前記1つまたは複数のエスケープサンプルを復号するステップとをさらに含む、請求項1に記載の方法。
【請求項４】
ビデオデータの前記ブロックを符号化するときに使用されたエスケープサンプルのｆを示すシンタックス要素を受け取るステップと、
前記ランレングスシーケンスを受け取る前に、かつモードフラグと前記モードフラグに対応するラン値とを受け取る前に、前記1つまたは複数のエスケープサンプルを受け取るステップであって、前記1つまたは複数のエスケープサンプルが共にグループ化される、ステップと、
前記バイナリベクトルと、エスケープサンプルの総数を示す前記シンタックス要素と、前記1つまたは複数のエスケープサンプルとを、コンテキスト適応型バイナリ算術コーディング(CABAC)のバイパスモードで復号するステップとをさらに含む、請求項1に記載の方法。
【請求項５】
ビデオデータの前記ブロックを符号化するときに使用されたエスケープサンプルの総数を示すシンタックス要素を受け取るステップをさらに含み、前記ランレングスシーケンスを復号するステップが、エスケープサンプルの前記総数を使用して、前記ランレングスシーケンスを復号して前記バイナリベクトルを取得するステップを含む、請求項1に記載の方法。
【請求項６】
前記ランレングスシーケンスが、前記バイナリベクトル中の各1値の間の0値のランレングスを示す1つまたは複数の値を含む、請求項1に記載の方法。
【請求項７】
前記ランレングスシーケンスが、前記バイナリベクトル中の各1値の間の0値のランレングスを示す1つまたは複数の値と、前記バイナリベクトル中の最後の1値を示す特別な値とを含む、請求項1に記載の方法。
【請求項８】
前記ランレングスシーケンスを復号するステップが、前記ランレングスシーケンス中の特定の値が前記特別な値よりも大きい場合に前記特定の値を1つインクリメントするステップを含む、請求項7に記載の方法。
【請求項９】
前記ランレングスシーケンスを復号するステップが、
切捨てコードを使用して前記ランレングスシーケンスを復号するステップと、
前記ランレングスシーケンス中の各値につき前記ランレングスシーケンスの最大値を決定するステップとを含む、請求項1に記載の方法。
【請求項１０】
前記切捨てコードが切捨て指数ゴロムコードであり、前記最大値を決定するステップが、式(B-i-R)に従って前記ランレングスシーケンス中の各値につき前記ランレングスシーケンスの前記最大値を決定するステップを含み、Bが、ビデオデータの前記ブロック中のサンプルの総数であり、iが、0の現在のランの開始場所であり、Rが、残りのエスケープサンプルの数である、請求項9に記載の方法。
【請求項１１】
copy aboveモードについてのインデックスの第1のランを受け取るステップと、
indexモードについてのインデックスの第2のランを受け取るステップと、
切捨てコードを用いてインデックスの前記第1のランおよびインデックスの前記第2のランを復号するステップとをさらに含む、請求項1に記載の方法。
【請求項１２】
式(j-1-i)に従って、インデックスの前記第1のランおよびインデックスの前記第2のラン中の各値につき、インデックスの前記第1のランおよびインデックスの前記第2のランの最大値を決定するステップをさらに含み、jが、前記ブロック中の場所jにおける次のエスケープシンボルであり、iが、前記ブロック中の現在の場所である、請求項11に記載の方法。
【請求項１３】
最初に、ビデオデータの前記ブロックを符号化するときに使用されたエスケープサンプルの総数を示すシンタックス要素を受け取るステップと、
次に、前記バイナリベクトルを示す前記ランレングスシーケンスを受け取るステップであって、前記バイナリベクトルが、前記パレットベースのコーディングモードを使用して符号化されたビデオデータのブロック中のエスケープサンプルの位置の指示を含む、ステップと、
次に、前記1つまたは複数のエスケープサンプルを受け取るステップと、
次に、copy aboveモードとindexモードとの少なくとも一方についての1つまたは複数のモードフラグを受け取るステップと、
次に、前記1つまたは複数のモードフラグの各々についての関連するラン値を受け取るステップとをさらに含む、請求項1に記載の方法。
【請求項１４】
ビデオデータを復号するように構成された装置であって、
前記ビデオデータを記憶するように構成されたメモリと、
ビデオデコーダとを備え、前記ビデオデコーダが、
バイナリベクトルを示すランレングスシーケンスを受け取ることであって、前記バイナリベクトルが、パレットベースのコーディングモードを使用して符号化された前記ビデオデータのブロック中のエスケープサンプルの場所を示し、前記ランレングスシーケンスが、1つまたは複数のパレットベースのコーディングモードと、前記1つまたは複数のパレットベースのコーディングモードに関連するラン値とを示すシンタックス要素を受け取る前に受け取られるものであること、
1つまたは複数のパレットベースのコーディングモードと、前記1つまたは複数のパレットベースのコーディングモードに関連するラン値とを示すシンタックス要素を復号する前に、前記ランレングスシーケンスを復号して前記バイナリベクトルを取得すること、および、
前記バイナリベクトルを使用して前記ビデオデータの前記ブロックを復号すること、を行うように構成された、装置。
【請求項１５】
前記ビデオデコーダがさらに、
前記ランレングスシーケンスを受け取った後で、ただしモードフラグと前記モードフラグに対応するラン値とを受け取る前に、前記1つまたは複数のエスケープサンプルを受け取ることであって、前記1つまたは複数のエスケープサンプルが共にグループ化されるものであること、ならびに、
コンテキスト適応型バイナリ算術コーディング(CABAC)のバイパスモードで前記バイナリベクトルおよび前記1つまたは複数のエスケープサンプルを復号すること、を行うように構成された、請求項14に記載の装置。
【請求項１６】
前記ビデオデコーダがさらに、
ビデオデータの前記ブロックを符号化するときに使用されたエスケープサンプルの総数を示すシンタックス要素を受け取ること、
前記ランレングスシーケンスを受け取る前に、かつモードフラグと前記モードフラグに対応するラン値とを受け取る前に、前記1つまたは複数のエスケープサンプルを受け取ることであって、前記1つまたは複数のエスケープサンプルが共にグループ化されるものであること、および、
前記バイナリベクトルと、エスケープサンプルの総数を示す前記シンタックス要素と、前記1つまたは複数のエスケープサンプルとを、コンテキスト適応型バイナリ算術コーディング(CABAC)のバイパスモードで復号すること、を行うように構成された、請求項14に記載の装置。
【請求項１７】
前記ランレングスシーケンスが、前記バイナリベクトル中の各1値の間の0値のランレングスを示す1つまたは複数の値を含む、請求項14に記載の装置。
【請求項１８】
前記ランレングスシーケンスが、前記バイナリベクトル中の各1値の間の0値のランレングスを示す1つまたは複数の値と、前記バイナリベクトル中の最後の1値を示す特別な値とを含む、請求項14に記載の装置。
【請求項１９】
前記ランレングスシーケンスを復号するために、前記ビデオデコーダがさらに、前記ランレングスシーケンス中の特定の値が前記特別な値よりも大きい場合に前記特定の値を1つインクリメントするように構成された、請求項18に記載の装置。
【請求項２０】
前記ランレングスシーケンスを復号するために、前記ビデオデコーダがさらに、
切捨てコードを使用して前記ランレングスシーケンスを復号すること、および、
前記ランレングスシーケンス中の各値につき前記ランレングスシーケンスの最大値を決定すること、を行うように構成された、請求項14に記載の装置。
【請求項２１】
前記切捨てコードが切捨て指数ゴロムコードであり、前記ビデオデコーダがさらに、式(B-i-R)に従って前記ランレングスシーケンス中の各値につき前記ランレングスシーケンスの前記最大値を決定するように構成され、Bが、ビデオデータの前記ブロック中のサンプルの総数であり、iが、0の現在のランの開始場所であり、Rが、残りのエスケープサンプルの数である、請求項20に記載の装置。
【請求項２２】
前記ビデオデコーダがさらに、
copy aboveモードについてのインデックスの第1のランを受け取ること、
indexモードについてのインデックスの第2のランを受け取ること、および、
切捨てコードを用いてインデックスの前記第1のランおよびインデックスの前記第2のランを復号すること、を行うように構成された、請求項14に記載の装置。
【請求項２３】
前記ビデオデコーダがさらに、
式(j-1-i)に従って、インデックスの前記第1のランおよびインデックスの前記第2のラン中の各値につき、インデックスの前記第1のランおよびインデックスの前記第2のランの最大値を決定するように構成され、jが、前記ブロック中の場所jにおける次のエスケープシンボルであり、iが、前記ブロック中の現在の場所である、請求項22に記載の装置。
【請求項２４】
前記ビデオデコーダがさらに、
最初に、ビデオデータの前記ブロックを符号化するときに使用されたエスケープサンプルの総数を示すシンタックス要素を受け取ること、
次に、前記バイナリベクトルを示す前記ランレングスシーケンスを受け取ることであって、前記バイナリベクトルが、前記パレットベースのコーディングモードを使用して符号化されたビデオデータの前記ブロック中のエスケープサンプルの位置の指示を含むものであること、
次に、前記1つまたは複数のエスケープサンプルを受け取ること、
次に、copy aboveモードとindexモードとの少なくとも一方についての1つまたは複数のモードフラグを受け取ること、および、
次に、前記1つまたは複数のモードフラグの各々についての関連するラン値を受け取ること、を行うように構成された、請求項14に記載の装置。
【請求項２５】
ビデオデータを復号するように構成された装置であって、
バイナリベクトルを示すランレングスシーケンスを受け取るための手段であって、前記バイナリベクトルが、パレットベースのコーディングモードを使用して符号化されたビデオデータのブロック中のエスケープサンプルの場所を示し、前記ランレングスシーケンスが、1つまたは複数のパレットベースのコーディングモードと、前記1つまたは複数のパレットベースのコーディングモードに関連するラン値とを示すシンタックス要素を受け取る前に受け取られる、手段と、
1つまたは複数のパレットベースのコーディングモードと、前記1つまたは複数のパレットベースのコーディングモードに関連するラン値とを示すシンタックス要素を復号する前に、前記ランレングスシーケンスを復号して前記バイナリベクトルを取得するための手段と、
前記バイナリベクトルを使用してビデオデータの前記ブロックを復号するための手段とを備える装置。
【請求項２６】
命令を記憶したコンピュータ可読ストレージ媒体であって、前記命令が、実行されたとき、ビデオデータを復号するように構成された1つまたは複数のプロセッサに、
バイナリベクトルを示すランレングスシーケンスを受け取ることであって、前記バイナリベクトルが、パレットベースのコーディングモードを使用して符号化された前記ビデオデータのブロック中のエスケープサンプルの場所を示し、前記ランレングスシーケンスが、1つまたは複数のパレットベースのコーディングモードと、前記1つまたは複数のパレットベースのコーディングモードに関連するラン値とを示すシンタックス要素を受け取る前に受け取られるものであること、
1つまたは複数のパレットベースのコーディングモードと、前記1つまたは複数のパレットベースのコーディングモードに関連するラン値とを示すシンタックス要素を復号する前に、前記ランレングスシーケンスを復号して前記バイナリベクトルを取得すること、および、
前記バイナリベクトルを使用して前記ビデオデータの前記ブロックを復号すること、を行わせる、コンピュータ可読ストレージ媒体。
【請求項２７】
ワイヤレス通信デバイス上で実行可能であり、前記デバイスが、
前記ビデオデータを記憶するように構成されたメモリと、
前記メモリに記憶された前記ビデオデータを処理するための命令を実行するように構成されたプロセッサと、
前記ビデオデータおよび前記ランレングスシーケンスを受け取るための受信機とを備える、請求項1に記載の方法。
【請求項２８】
前記ワイヤレス通信デバイスがセルラー電話機であり、前記ビデオデータおよび前記ランレングスシーケンスが、前記受信機によって受け取られ、通信規格に従って変調される、請求項27に記載の方法。
【国際調査報告】
2017535134.tif 000017
2017535134.tif 000018
2017535134.tif 000019
2017535134.tif 000020