(57)【特許請求の範囲】
【請求項１】
ビデオデータを復号する方法であって、
コード化ビデオビットストリームから、かつコンテキストを用いたコンテキスト適応型バイナリ算術コーディング(CABAC)を使用して、ビデオデータの現在ブロック用のパレットのパレットインデックスに転置プロセスが適用されるかどうかを示すシンタックス要素、palette_transpose_flagを復号するステップと、
CABACスループットを改善するために、前記コード化ビデオビットストリームから、かつ前記palette_transpose_flagの後である、前記コード化ビデオビットストリームの中の位置において、ビデオデータの前記現在ブロック用のデルタ量子化パラメータ(QP)および/またはクロマQPオフセットに関係する1つまたは複数のシンタックス要素を復号するステップと、
前記コード化ビデオビットストリームから、バイパスモードを使用してシンタックス要素のグループを復号するステップであって、前記グループが、
予測子パレットからのエントリが前記現在パレットの中で再使用されるかどうかを示す、アレイの中の非0のエントリに先行する0の数を示す1つまたは複数のシンタックス要素、
明示的にシグナリングされる、前記現在パレットの中のエントリの数を示すシンタックス要素、
各々が前記現在パレットの中のエントリにおけるコンポーネントの値を示す1つまたは複数のシンタックス要素、
ビデオデータの前記現在ブロックが少なくとも1つのエスケープコード化サンプルを含むかどうかを示すシンタックス要素、
明示的にシグナリングされるかまたは推定される、前記現在パレットの中のインデックスの数を示すシンタックス要素、および
現在パレットエントリのアレイの中のインデックスを示す1つまたは複数のシンタックス要素を備える、ステップと、
ビデオデータの前記現在ブロック用の前記パレット、シンタックス要素の前記グループ、ならびにビデオデータの前記現在ブロック用のデルタQPおよび/またはクロマQPオフセットに関係する前記1つまたは複数のシンタックス要素に基づいて、ビデオデータの前記現在ブロックを復号するステップと
を備える方法。
【請求項２】
ビデオデータを符号化する方法であって、
コード化ビデオビットストリームの中で、かつコンテキストを用いたコンテキスト適応型バイナリ算術コーディング(CABAC)を使用して、ビデオデータの現在ブロック用のパレットのパレットインデックスに転置プロセスが適用されるかどうかを示すシンタックス要素、palette_transpose_flagを符号化するステップと、
前記コード化ビデオビットストリームの中で、前記palette_transpose_flagの後である、前記コード化ビデオビットストリームの中の位置において、ビデオデータの前記現在ブロック用のデルタ量子化パラメータ(QP)および/またはクロマQPオフセットに関係する1つまたは複数のシンタックス要素を符号化するステップと、
前記コード化ビデオビットストリームの中で、バイパスモードを使用してシンタックス要素のグループを符号化するステップであって、前記グループが、
予測子パレットからのエントリが前記現在パレットの中で再使用されるかどうかを示す、アレイの中の非0のエントリに先行する0の数を示す1つまたは複数のシンタックス要素、
明示的にシグナリングされる、前記現在パレットの中のエントリの数を示すシンタックス要素、
各々が前記現在パレットの中のエントリにおけるコンポーネントの値を示す1つまたは複数のシンタックス要素、
ビデオデータの前記現在ブロックが少なくとも1つのエスケープコード化サンプルを含むかどうかを示すシンタックス要素、
明示的にシグナリングされるかまたは推定される、前記現在パレットの中のインデックスの数を示すシンタックス要素、および
現在パレットエントリのアレイの中のインデックスを示す1つまたは複数のシンタックス要素を備える、ステップと、
ビデオデータの前記現在ブロック用の前記パレット、シンタックス要素の前記グループ、ならびにビデオデータの前記現在ブロック用のデルタQPおよび/またはクロマQPオフセットに関係する前記1つまたは複数のシンタックス要素に基づいて、ビデオデータの前記現在ブロックを符号化するステップと
を備える方法。
【請求項３】
ビデオデータの前記現在ブロックのパレットインデックスに前記転置プロセスが適用されるかどうかを示す前記シンタックス要素が、palette_transpose_flagシンタックス要素を備える、請求項2に記載の方法。
【請求項４】
デルタQPに関係する前記1つまたは複数のシンタックス要素が、前記現在ブロックのQPと前記現在ブロックの前記QPの予測子との間の差分の絶対値を示すシンタックス要素、および前記現在ブロックの前記QPと前記現在ブロックの前記QPの前記予測子との間の前記差分の符号を示すシンタックス要素のうちの一方または両方を備える、請求項2に記載の方法。
【請求項５】
クロマQPオフセットに関係する前記1つまたは複数のシンタックス要素が、前記現在ブロック用のクロマQPを決定するために1つまたは複数のオフセットリストの中のエントリが前記現在ブロックのルーマQPに追加されるかどうかを示すシンタックス要素、および前記現在ブロック用の前記クロマQPを決定するために前記現在ブロック用の前記ルーマQPに追加される、前記1つまたは複数のオフセットリストの各々の中のエントリのインデックスを示すシンタックス要素のうちの一方または両方を備える、請求項2に記載の方法。
【請求項６】
予測子パレットからのエントリが前記現在パレットの中で再使用されるかどうかを示す、アレイの中の非0のエントリに先行する0の数を示す前記1つまたは複数のシンタックス要素が、1つまたは複数のpalette_predictor_runシンタックス要素を備えること、
明示的にシグナリングされる、前記現在パレットの中のエントリの数を示す前記シンタックス要素が、num_signalled_palette_entriesシンタックス要素を備えること、
各々が前記現在パレットの中のエントリにおけるコンポーネントの値を示す前記1つまたは複数のシンタックス要素が、1つまたは複数のpalette_entryシンタックス要素を備えること、
ビデオデータの前記現在ブロックが少なくとも1つのエスケープコード化サンプルを含むかどうかを示す前記シンタックス要素が、palette_escape_val_present_flagを備えること、
明示的にシグナリングされるかまたは推定される、前記現在パレットの中のインデックスの数を示す前記シンタックス要素が、num_palette_indices_idcシンタックス要素を備えること、および
現在パレットエントリのアレイの中のインデックスを示す前記1つまたは複数のシンタックス要素が、1つまたは複数のpalette_index_idcシンタックス要素を備えること
のうちの1つまたは複数である、請求項2に記載の方法。
【請求項７】
シンタックス要素の前記グループを復号するステップが、前記コード化ビデオビットストリームから、ビデオデータの前記現在ブロックのパレットインデックスに前記転置プロセスが適用されるかどうかを示す前記シンタックス要素の前である、前記コード化ビデオビットストリームの中の位置において、シンタックス要素の前記グループを復号するステップを備える、請求項1に記載の方法。
【請求項８】
バイパスモードを使用してコーディングされるシンタックス要素の前記グループの後の前記コード化ビデオビットストリームから、ビデオデータの前記現在ブロック内でのランタイプフラグの最後の出現を示すシンタックス要素を復号するステップ
をさらに備える、請求項1に記載の方法。
【請求項９】
ビデオデータの前記現在ブロック内でのランタイプフラグの前記最後の出現を示す前記シンタックス要素を復号するステップが、ビデオデータの前記現在ブロック内でのランタイプフラグの前記最後の出現を示す前記シンタックス要素を、コンテキストを用いたコンテキスト適応型バイナリ算術コーディング(CABAC)を使用して復号するステップを備える、請求項8に記載の方法。
【請求項１０】
ビデオデータを記憶するように構成されたメモリと、
請求項２乃至６のいずれか一項に記載のステップを実行するように構成された１つまたは複数のプロセッサと、を含む、
ビデオデータを符号化する装置。
【請求項１１】
ビデオデータを記憶するように構成されたメモリと、
請求項１、および７乃至９のいずれか一項に記載のステップを実行するように構成された１つ又は複数のプロセッサと、を含む、
ビデオデータを復号する装置。
【請求項１２】
ビデオデータを復号するためのデバイスであって、
コード化ビデオビットストリームから、かつコンテキストを用いたコンテキスト適応型バイナリ算術コーディング(CABAC)を使用して、ビデオデータの現在ブロック用のパレットのパレットインデックスに転置プロセスが適用されるかどうかを示すシンタックス要素、palette_transpose_flagを復号するための手段と、
前記コード化ビデオビットストリームから、かつ前記palette_transpose_flagの後である、前記コード化ビデオビットストリームの中の位置において、ビデオデータの前記現在ブロック用のデルタ量子化パラメータ(QP)および/またはクロマQPオフセットに関係する1つまたは複数のシンタックス要素を復号するための手段と、
前記コード化ビデオビットストリームから、バイパスモードを使用してシンタックス要素のグループを復号するための手段であって、前記グループが、
予測子パレットからのエントリが前記現在パレットの中で再使用されるかどうかを示す、アレイの中の非0のエントリに先行する0の数を示す1つまたは複数のシンタックス要素、
明示的にシグナリングされる、前記現在パレットの中のエントリの数を示すシンタックス要素、
各々が前記現在パレットの中のエントリにおけるコンポーネントの値を示す1つまたは複数のシンタックス要素、
ビデオデータの前記現在ブロックが少なくとも1つのエスケープコード化サンプルを含むかどうかを示すシンタックス要素、
明示的にシグナリングされるかまたは推定される、前記現在パレットの中のインデックスの数を示すシンタックス要素、および
現在パレットエントリのアレイの中のインデックスを示す1つまたは複数のシンタックス要素を備えることと、
ビデオデータの前記現在ブロック用の前記パレット、シンタックス要素の前記グループ、ならびにビデオデータの前記現在ブロック用のデルタQPおよび/またはクロマQPオフセットに関係する前記1つまたは複数のシンタックス要素に基づいて、ビデオデータの前記現在ブロックを復号するための手段と
を行うように構成される、デバイス。
【請求項１３】
ビデオデータを符号化するためのデバイスであって、
コード化ビデオビットストリームの中で、かつコンテキストを用いたコンテキスト適応型バイナリ算術コーディング(CABAC)を使用して、ビデオデータの現在ブロック用のパレットのパレットインデックスに転置プロセスが適用されるかどうかを示すシンタックス要素、palette_transpose_flagを符号化するための手段と、
前記コード化ビデオビットストリームの中で、かつ前記palette_transpose_flagの後である、前記コード化ビデオビットストリームの中の位置において、ビデオデータの前記現在ブロック用のデルタ量子化パラメータ(QP)および/またはクロマQPオフセットに関係する1つまたは複数のシンタックス要素を符号化するための手段と、
前記コード化ビデオビットストリームの中で、バイパスモードを使用してシンタックス要素のグループを符号化するための手段であって、前記グループが、
予測子パレットからのエントリが前記現在パレットの中で再使用されるかどうかを示す、アレイの中の非0のエントリに先行する0の数を示す1つまたは複数のシンタックス要素、
明示的にシグナリングされる、前記現在パレットの中のエントリの数を示すシンタックス要素、
各々が前記現在パレットの中のエントリにおけるコンポーネントの値を示す1つまたは複数のシンタックス要素、
ビデオデータの前記現在ブロックが少なくとも1つのエスケープコード化サンプルを含むかどうかを示すシンタックス要素、
明示的にシグナリングされるかまたは推定される、前記現在パレットの中のインデックスの数を示すシンタックス要素、および
現在パレットエントリのアレイの中のインデックスを示す1つまたは複数のシンタックス要素を備える、手段と、
ビデオデータの前記現在ブロック用の前記パレット、シンタックス要素の前記グループ、ならびにビデオデータの前記現在ブロック用のデルタQPおよび/またはクロマQPオフセットに関係する前記1つまたは複数のシンタックス要素に基づいて、ビデオデータの前記現在ブロックを符号化するための手段と
を備えるデバイス。
【請求項１４】
コード化ビデオビットストリームの少なくとも一部分を記憶するコンピュータ可読記憶媒体であって、前記コード化ビデオビットストリームは、ビデオ復号デバイスによって処理されたとき、前記ビデオ復号デバイスの1つまたは複数のプロセッサに、
ビデオデータの現在ブロック用のパレットのパレットインデックスに転置プロセスが適用されるかどうかを決定させ、
予測子パレットからのエントリが前記現在パレットの中で再使用されるかどうかを示す、アレイの中の非0のエントリに先行する0の数を示す1つまたは複数のシンタックス要素、
明示的にシグナリングされる、前記現在パレットの中のエントリの数を示すシンタックス要素、
各々が前記現在パレットの中のエントリにおけるコンポーネントの値を示す1つまたは複数のシンタックス要素、
ビデオデータの前記現在ブロックが少なくとも1つのエスケープコード化サンプルを含むかどうかを示すシンタックス要素、
明示的にシグナリングされるかまたは推定される、前記現在パレットの中のインデックスの数を示すシンタックス要素、および
現在パレットエントリのアレイの中のインデックスを示す1つまたは複数のシンタックス要素
に基づいてビデオデータの現在ブロック用のパレットを生成させ、
ビデオデータの前記現在ブロック用の前記パレット、ならびにビデオデータの前記現在ブロック用のデルタ量子化パラメータ(QP)および1つまたは複数のクロマQPオフセットに基づいて、前記ビデオデータの前記現在ブロックを復号させ、
ビデオデータの前記現在ブロック用の前記デルタQPに関係する1つまたは複数のシンタックス要素および前記1つまたは複数のクロマQPオフセットに関係する1つまたは複数のシンタックス要素が、ビデオデータの前記現在ブロック用の前記パレットのパレットインデックスに前記転置プロセスが適用されるかどうかを示すシンタックス要素、palette_transpose_flagの後である、前記コード化ビデオビットストリームの中の位置に配置され、ビデオデータの前記現在ブロック用の前記パレットのパレットインデックスに前記転置プロセスが適用されるかどうかを示す前記シンタックス要素が、コンテキストを用いたコンテキスト適応型バイナリ算術コーディング(CABAC)を使用して復号され、前記デルタQPに関係する前記1つまたは複数のシンタックス要素および前記1つまたは複数のクロマQPオフセットに関係する1つまたは複数のシンタックス要素のうちの少なくとも1つが、コンテキストを用いたCABACを使用して復号され、シンタックス要素のグループが、バイパスモードを使用して復号される、
コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、その内容全体が参照により本明細書に組み込まれる、2015年6月12日に出願された米国仮出願第62/175,137号の利益を主張するものである。
【０００２】
本開示は、ビデオ符号化および復号に関する。
【背景技術】
【０００３】
デジタルビデオ機能は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末(PDA)、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダー、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、セルラーまたは衛星無線電話、いわゆる「スマートフォン」、ビデオ遠隔会議デバイス、ビデオストリーミングデバイスなどを含む、広範囲のデバイスに組み込まれ得る。デジタルビデオデバイスは、MPEG-2、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4, Part 10,アドバンストビデオコーディング(AVC)、ITU-T H.265,高効率ビデオコーディング(HEVC)規格、およびそのような規格の拡張によって定義される規格に記載されているようなビデオ圧縮技法を実装する。ビデオデバイスは、そのようなビデオ圧縮技法を実装することによって、デジタルビデオ情報をより効率的に送信、受信、符号化、復号、および/または記憶し得る。
【０００４】
ビデオ圧縮技法は、ビデオシーケンスに固有の冗長性を低減または除去するために、空間(ピクチャ内)予測および/または時間(ピクチャ間)予測を実行する。ブロックベースビデオコーディングのために、ビデオスライス(すなわち、ビデオフレーム、またはビデオフレームの一部分)がビデオブロックに区分されてよい。ピクチャのイントラコード化(I)スライスの中のビデオブロックは、同じピクチャにおける隣接ブロックの中の参照サンプルに対する空間予測を使用して符号化される。ピクチャのインターコード化(PまたはB)スライスの中のビデオブロックは、同じピクチャにおける隣接ブロックの中の参照サンプルに対する空間予測、または他の参照ピクチャにおける参照サンプルに対する時間予測を使用し得る。ピクチャは、フレームと呼ばれることがあり、参照ピクチャは、参照フレームと呼ばれることがある。
【０００５】
空間予測または時間予測が、コーディングされるべきブロックに対する予測ブロックをもたらす。残差データが、コーディングされるべき元のブロックと予測ブロックとの間のピクセル差分を表す。インターコード化ブロックは、予測ブロックを形成する参照サンプルのブロックを指す動きベクトルに従って符号化され、残差データは、コード化ブロックと予測ブロックとの間の差分を示す。イントラコード化ブロックは、イントラコーディングモードおよび残差データに従って符号化される。さらなる圧縮のために、残差データがピクセル領域から変換領域に変換されて残差係数が得られてよく、次いで、残差係数が量子化され得る。最初に2次元アレイに配置される量子化係数は、係数の1次元ベクトルを生成するために走査されてよく、エントロピーコーディングが、さらなる圧縮を実現するために適用され得る。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】Guoら、「Palette Mode for Screen Content Coding」、ITU-T SG16 WP3およびISO/IEC JTC1/SC29/WG11のビデオコーディング共同研究部会(JCT-VC)、第13回会合、仁川、韓国、2013年4月18日〜26日、文書JCTVC-M0323、http://phenix.it-sudparis.eu/jct/doc_end_user/documents/13_Incheon/wg11/JCTVC-M0323-v3.zip
【非特許文献２】Joshiら、「High Efficiency Video Coding (HEVC) Screen Content Coding: Draft 3」、ITU-T SG16 WP3およびISO/IEC JTC1/SC29/WG11のビデオコーディング共同研究部会(JCT-VC)、第20回会合、ジュネーブ、スイス、2015年2月10日〜2月17日、文書JCTVC-T1005、http://phenix.int-evry.fr/jct/doc_end_user/documents/20_Geneva/wg11/JCTVC-T1005-v2.zip
【非特許文献３】Yeら、「CE1-related: Palette Mode Context and Codeword Simplification」、ITU-T SG16 WP3およびISO/IEC JTC1/SC29/WG11のビデオコーディング共同研究部会(JCT-VC)、第21回会合、ワルシャワ、ポーランド、2015年6月19日〜26日、文書JCTVC-U0090、http://phenix.it-sudparis.eu/jct/doc_end_user/documents/21_Warsaw/wg11/JCTVC-U0090-v1.zip
【非特許文献４】ITU-T H.265, Series H: AUDIOVISUAL AND MULTIMEDIA SYSTEMS Infrastructure of audiovisual services - Coding of moving video、2015年4月
【非特許文献５】Joshiら、「High Efficiency Video Coding (HEVC) Screen Content Coding: Draft 4」、ITU-T SG16 WP3およびISO/IEC JTC1/SC29/WG11のビデオコーディング共同研究部会(JCT-VC)、第21回会合、ワルシャワ、ポーランド、2015年6月19日〜6月26日、http://phenix.it- sudparis.eu/jct/doc_end_user/documents/21_Warsaw/wg11/JCTVC-U1005-v2.zip
【発明の概要】
【課題を解決するための手段】
【０００７】
一例では、ビデオデータを復号する方法は、コード化ビデオビットストリームから、ビデオデータの現在ブロック用のパレットのパレットインデックスに転置プロセスが適用されるかどうかを示すシンタックス要素を復号することと、コード化ビデオビットストリームから、かつビデオデータの現在ブロック用のパレットのパレットインデックスに転置プロセスが適用されるかどうかを示すシンタックス要素の後である、コード化ビデオビットストリームの中の位置において、ビデオデータの現在ブロック用のデルタ量子化パラメータ(QP)および/またはクロマQPオフセットに関係する1つまたは複数のシンタックス要素を復号することと、ビデオデータの現在ブロック用のパレット、ならびにビデオデータの現在ブロック用のデルタQPおよび/またはクロマQPオフセットに関係する1つまたは複数のシンタックス要素に基づいて、ビデオデータの現在ブロックを復号することとを含む。
【０００８】
別の例では、ビデオデータを符号化する方法は、コード化ビデオビットストリームの中で、ビデオデータの現在ブロック用のパレットのパレットインデックスに転置プロセスが適用されるかどうかを示すシンタックス要素を符号化することと、コード化ビデオビットストリームの中で、かつビデオデータの現在ブロック用のパレットのパレットインデックスに転置プロセスが適用されるかどうかを示すシンタックス要素の後である、コード化ビデオビットストリームの中の位置において、ビデオデータの現在ブロック用のデルタQPおよび/またはクロマQPオフセットに関係する1つまたは複数のシンタックス要素を符号化することと、ビデオデータの現在ブロック用のパレット、ならびにビデオデータの現在ブロック用のデルタQPおよび/またはクロマQPオフセットに関係する1つまたは複数のシンタックス要素に基づいて、ビデオデータの現在ブロックを符号化することとを含む。
【０００９】
別の例では、ビデオデータをコーディングするためのデバイスは、ビデオデータを記憶するように構成されたメモリと、1つまたは複数のプロセッサとを含む。この例では、1つまたは複数のプロセッサは、コード化ビデオビットストリームの中で、ビデオデータの現在ブロック用のパレットのパレットインデックスに転置プロセスが適用されるかどうかを示すシンタックス要素をコーディングすることと、コード化ビデオビットストリームの中で、かつビデオデータの現在ブロック用のパレットのパレットインデックスに転置プロセスが適用されるかどうかを示すシンタックス要素の後である、コード化ビデオビットストリームの中の位置において、ビデオデータの現在ブロック用のデルタQPおよび/またはクロマQPオフセットに関係する1つまたは複数のシンタックス要素をコーディングすることと、ビデオデータの現在ブロック用のパレット、ならびにビデオデータの現在ブロック用のデルタQPおよび/またはクロマQPオフセットに関係する1つまたは複数のシンタックス要素に基づいて、ビデオデータの現在ブロックをコーディングすることとを行うように構成される。
【００１０】
別の例では、ビデオデータをコーディングするためのデバイスは、コード化ビデオビットストリームの中で、ビデオデータの現在ブロック用のパレットのパレットインデックスに転置プロセスが適用されるかどうかを示すシンタックス要素をコーディングするための手段と、コード化ビデオビットストリームの中で、かつビデオデータの現在ブロック用のパレットのパレットインデックスに転置プロセスが適用されるかどうかを示すシンタックス要素の後である、コード化ビデオビットストリームの中の位置において、ビデオデータの現在ブロック用のデルタQPおよび/またはクロマQPオフセットに関係する1つまたは複数のシンタックス要素をコーディングするための手段と、ビデオデータの現在ブロック用のパレット、ならびにビデオデータの現在ブロック用のデルタQPおよび/またはクロマQPオフセットに関係する1つまたは複数のシンタックス要素に基づいて、ビデオデータの現在ブロックをコーディングするための手段とを含む。
【００１１】
別の例では、コンピュータ可読記憶媒体は、実行されたとき、ビデオコーディングデバイスの1つまたは複数のプロセッサに、コード化ビデオビットストリームの中で、ビデオデータの現在ブロック用のパレットのパレットインデックスに転置プロセスが適用されるかどうかを示すシンタックス要素をコーディングさせ、コード化ビデオビットストリームの中で、かつビデオデータの現在ブロック用のパレットのパレットインデックスに転置プロセスが適用されるかどうかを示すシンタックス要素の後である、コード化ビデオビットストリームの中の位置において、ビデオデータの現在ブロック用のデルタQPおよび/またはクロマQPオフセットに関係する1つまたは複数のシンタックス要素をコーディングさせ、ビデオデータの現在ブロック用のパレット、ならびにビデオデータの現在ブロック用のデルタQPおよび/またはクロマQPオフセットに関係する1つまたは複数のシンタックス要素に基づいて、ビデオデータの現在ブロックをコーディングさせる命令を記憶する。
【００１２】
別の例では、コンピュータ可読記憶媒体は、コード化ビデオビットストリームの少なくとも一部分を記憶し、コード化ビデオビットストリームは、ビデオ復号デバイスによって処理されたとき、ビデオ復号デバイスの1つまたは複数のプロセッサに、ビデオデータの現在ブロック用のパレットのパレットインデックスに転置プロセスが適用されるかどうかを決定させ、ビデオデータの現在ブロック用のパレット、ならびにビデオデータの現在ブロック用のデルタQPおよび1つまたは複数のクロマQPオフセットに基づいて、ビデオデータの現在ブロックを復号させ、ビデオデータの現在ブロック用のデルタQPに関係する1つまたは複数のシンタックス要素および1つまたは複数のクロマQPオフセットに関係する1つまたは複数のシンタックス要素は、ビデオデータの現在ブロック用のパレットのパレットインデックスに転置プロセスが適用されるかどうかを示すシンタックス要素の後である、コード化ビデオビットストリームの中の位置に配置される。
【００１３】
1つまたは複数の例の詳細が、添付図面および以下の説明において記載される。他の特徴、目的、および利点は、説明および図面から、ならびに特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【００１４】
【図１】本開示で説明する技法を利用し得る例示的なビデオコーディングシステムを示すブロック図である。
【図２】本開示で説明する技法を実施し得る例示的なビデオエンコーダを示すブロック図である。
【図３】本開示で説明する技法を実施し得る例示的なビデオデコーダを示すブロック図である。
【図４】本開示の技法に一致する、ビデオデータをコーディングするためのパレットを決定することの一例を示す概念図である。
【図５】本開示の技法に一致する、ピクセルのブロック用のパレットへのインデックスを決定することの一例を示す概念図である。
【図６】本開示の1つまたは複数の技法による、パレットモードを使用してビデオデータのブロックを復号するための例示的なプロセスを示すフローチャートである。
【図７】本開示の1つまたは複数の技法による、パレットモードを使用してビデオデータのブロックを符号化するための例示的なプロセスを示すフローチャートである。
【発明を実施するための形態】
【００１５】
本開示は、ビデオコーディングおよび圧縮のための技法を説明する。詳細には、本開示は、ビデオデータのパレットベースコーディングのための技法を説明する。たとえば、本開示は、改善されたパレットインデックス2値化のための技法、およびパレットコーディングに対してシグナリングするための技法などの、ビデオコンテンツ、特に、スクリーンコンテンツの、パレットコーディングを用いたコーディングをサポートするための技法を説明する。
【００１６】
従来のビデオコーディングでは、画像は、連続階調および空間的に滑らかであるものと想定される。これらの想定に基づいて、ブロックベースの変換、フィルタ処理などの様々なツールが開発されてきており、そのようなツールは、自然コンテンツビデオにとって良好な性能を示してきた。
【００１７】
しかしながら、リモートデスクトップ、共同作業、およびワイヤレスディスプレイのような用途では、コンピュータ生成されたスクリーンコンテンツが、圧縮されるべき主要なコンテンツであり得る。このタイプのコンテンツは、離散階調を有するとともに鋭い線および高コントラストのオブジェクト境界を有する傾向がある。連続階調および滑らかさという想定は、もはや当てはまらない場合があり、したがって、従来のビデオコーディング技法は、圧縮するのに効率的な方法でない場合がある。
【００１８】
スクリーンコンテンツビデオの特性に基づいて、http://phenix.it-sudparis.eu/jct/doc_end_user/documents/13_Incheon/wg11/JCTVC-M0323-v3.zipにおいて入手可能である、Guoら、「Palette Mode for Screen Content Coding」、ITU-T SG16 WP3およびISO/IEC JTC1/SC29/WG11のビデオコーディング共同研究部会(JCT-VC)、第13回会合、仁川、韓国、2013年4月18日〜26日、文書JCTVC-M0323(以下、「JCTVC-M0323」)において提案されるように、スクリーンコンテンツコーディング(SCC)効率を改善するためにパレットコーディングが導入される。詳細には、パレットコーディングは、SCCでは1つのCU内のカラーが通常はいくつかのピーク値に集中するという事実に基づいて、反復ピクセル値を圧縮するためにルックアップテーブル、すなわち、カラーパレットを導入する。特定のCUに対してパレットが与えられると、CU内のピクセルはパレットインデックスにマッピングされる。第2の段階において、インデックスブロックの反復パターンを効果的に圧縮するために、効果的な左からのコピーランレングス方法が提案されている。いくつかの例では、パレットインデックスコーディングモードは、ランレングスコーディングを伴う左からのコピーと上からのコピーの両方に一般化され得る。いくつかの例では、スクリーンコンテンツの視覚的品質に非常に大きい悪影響を有し得る、シャープエッジを不鮮明にすることを回避するために、パレットコーディングに対して変換プロセスが呼び出されない場合があることに留意されたい。
【００１９】
上記で説明したように、本開示は、スクリーン生成されたコンテンツのコーディングにとって特に好適であり得るパレットベースコーディングを説明する。たとえば、ビデオデータの特定のエリアが比較的少数のカラーを有すると想定する。ビデオコーダ(ビデオエンコーダまたはビデオデコーダ)は、特定のエリア(たとえば、所与のブロック)のビデオデータを表すためのカラーのテーブルとして、いわゆる「パレット」をコーディングし得る。各ピクセルは、ピクセルのカラーを表すパレットの中のエントリに関連付けられ得る。たとえば、ビデオコーダは、ピクセル値をパレットの中の適切な値にマッピングするインデックスをコーディングし得る。
【００２０】
上記の例では、ビデオエンコーダは、ブロック用のパレットを決定すること、各ピクセルのカラー値を表すためのエントリをパレットの中に配置すること、およびピクセル値をパレットにマッピングする、ピクセルに対するインデックス値とともにパレットを符号化することによって、ビデオデータのブロックを符号化し得る。ビデオデコーダは、ブロック用のパレット、ならびにブロックのピクセルに対するインデックス値を、符号化ビットストリームから取得し得る。ビデオデコーダは、ピクセルのインデックス値をパレットのエントリにマッピングして、ブロックのルーマピクセル値およびクロマピクセル値を再構成し得る。
【００２１】
上記の例は、パレットベースコーディングの一般的な説明を提供することを意図する。様々な例では、本開示で説明する技法は、パレットベースコーディングモードをシグナリングすること、パレットを送信すること、パレットを予測すること、パレットを導出すること、ならびにパレットベースコーディングマップおよび他のシンタックス要素を送信することのうちの、1つまたは複数の様々な組合せのための技法を含み得る。そのような技法は、ビデオコーディング効率を改善し得、たとえば、スクリーン生成されたコンテンツを表すために、より少数のビットしか必要としない。
【００２２】
たとえば、本開示の態様によれば、ビデオコーダ(ビデオエンコーダまたはビデオデコーダ)は、パレットコーディングモードを使用してコーディングされるブロックごとに、1つまたは複数のシンタックス要素をコーディングし得る。たとえば、ビデオコーダは、特定のブロックをコーディングするためにパレットベースコーディングモードが使用されるべきかどうかを示すためのpalette_mode_flagをコーディングし得る。この例では、ビデオエンコーダは、現在符号化されているブロック(「現在ブロック」)がパレットモードを使用して符号化されることを規定するために、1に等しい値を有するpalette_mode_flagを符号化し得る。この場合、ビデオデコーダは、符号化ビットストリームからpalette_mode_flagを取得し得、パレットベースコーディングモードを適用してブロックを復号し得る。利用可能な2つ以上のパレットベースコーディングモードがある(たとえば、コーディングにとって利用可能な2つ以上のパレットベース技法がある)事例では、1つまたは複数のシンタックス要素が、ブロック用の複数の異なるパレットモードのうちの1つを示し得る。
【００２３】
いくつかの事例では、ビデオエンコーダは、現在ブロックがパレットモードを使用して符号化されないことを規定するために、0に等しい値を有するpalette_mode_flagを符号化し得る。そのような事例では、ビデオエンコーダは、様々なインター予測モード、イントラ予測モード、または他のコーディングモードのいずれかを使用してブロックを符号化し得る。palette_mode_flagが0に等しいとき、ビデオエンコーダは、それぞれのブロックを符号化するために使用される特定のモードを示すための追加の情報(たとえば、シンタックス要素)を符号化し得る。いくつかの例では、以下で説明するように、モードは、HEVCコーディングモードであってよい。palette_mode_flagの使用は、例として説明される。他の例では、1つもしくは複数のブロックに対してパレットベースコーディングモードが使用されるべきかどうかを示すために、または複数のモードのうちのどれが使用されるべきかを示すために、マルチビットコードなどの他のシンタックス要素が使用され得る。
【００２４】
パレットベースコーディングモードが使用されるとき、パレットは、デコーダによる使用のために、符号化ビデオデータビットストリームの中でエンコーダによって送信され得る。パレットは、ブロックごとに送信されてよく、またはピクチャもしくはスライスの中のいくつかのブロックの間で共有されてよい。パレットは、たとえば、ルーマ値および2つのクロマ値を含む、ブロックにとって支配的および/または代表的ないくつかのピクセル値を参照し得る。
【００２５】
いくつかの例では、現在パレットのパレットインデックスに転置プロセスが適用されるかどうかを示すために、転置フラグなどのシンタックス要素がコーディングされ得る。転置フラグが0である場合、サンプルに対するパレットインデックスは、水平横断走査でコーディングされ得る。同様に、転置フラグが1である場合、サンプルに対するパレットインデックスは、垂直横断走査でコーディングされ得る。このことは、水平横断走査を想定してインデックス値を復号し、次いで、ブロックを(行から列へ)転置するという思想であり得る。
【００２６】
本開示の態様は、パレットをコーディングするための技法を含む。たとえば、本開示の態様によれば、ビデオエンコーダは、パレットを定義するための1つまたは複数のシンタックス要素を符号化し得る。ビデオデータの現在ブロック用の現在パレットを定義するためにビデオエンコーダが符号化し得るいくつかの例示的なシンタックス要素は、限定はしないが、現在パレットのパレットインデックスに転置プロセスが適用されるかどうかを示すシンタックス要素(たとえば、palette_transpose_flag)、デルタ量子化パラメータ(QP)に関係する1つまたは複数のシンタックス要素(たとえば、cu_qp_delta_palette_abs、cu_qp_delta_palette_sign_flag、cu_chroma_qp_palette_offset_flag、および/またはcu_chroma_qp_palette_offset_idx)、ビデオデータの現在ブロック用のクロマQPオフセットに関係する1つまたは複数のシンタックス要素、予測子パレットからのエントリが現在パレットの中で再使用されるかどうかを示す、アレイの中の非0のエントリに先行する0の数を示す1つまたは複数のシンタックス要素(たとえば、palette_predictor_run)、明示的にシグナリングされる、現在パレットの中のエントリの数を示す1つまたは複数のシンタックス要素(たとえば、num_signalled_palette_entries)、現在パレットの中のパレットエントリにおけるコンポーネントの値を示す1つまたは複数のシンタックス要素(たとえば、palette_entry)、ビデオデータの現在ブロックが少なくとも1つのエスケープコード化サンプルを含むかどうかを示す1つまたは複数のシンタックス要素(たとえば、palette_escape_val_present_flag)、明示的にシグナリングされるかまたは推定される、現在パレットの中のエントリの数を示す1つまたは複数のシンタックス要素(たとえば、num_palette_indices_idc)、および現在パレットエントリのアレイの中のインデックスを示す1つまたは複数のシンタックス要素(たとえば、palette_index_idc)を含む。たとえば、HEVCスクリーンコンテンツコーデ
ィング(SCC)ドラフト3(http://phenix.int-evry.fr/jct/doc_end_user/documents/20_Geneva/wg11/JCTVC-T1005-v2.zipにおいて入手可能である)、Joshiら、「High Efficiency Video Coding (HEVC) Screen Content Coding: Draft 3」、ITU-T SG16 WP3およびISO/IEC JTC1/SC29/WG11のビデオコーディング共同研究部会(JCT-VC)、第20回会合、ジュネーブ、スイス、2015年2月10日〜2月17日、文書JCTVC-T1005(以下、「HEVC SCCドラフト3」)に従って動作するとき、ビデオコーダは、Table 1(表1)として以下に転載されるpalette_coding()シンタックステーブル(HEVC SCCドラフト3のセクション7.3.8.8)の中で列挙されるシンタックス要素をシグナリングし得る。
【００２７】
【表１】
0006771493.tif 000002
0006771493.tif 000003
0006771493.tif 000004
【００２８】
シンタックス要素がビットストリームの中に含められる順序を提供することに加えて、Table 1(表1)はまた、各シンタックス要素のための符号化タイプを示すシンタックス要素の各々に対する記述子を提供する。一例として、ビデオエンコーダは、ue(v)記述子を有するシンタックス要素を、左ビットを最初にした符号なし整数の0次指数ゴロムコード(Exp-Golomb-codes)を使用して符号化し得る。別の例として、ビデオエンコーダは、ae(v)記述子を有するシンタックス要素を、コンテキスト適応型算術エントロピーコード(CABAC)を使用して符号化し得る。シンタックス要素のビンがCABACを使用して符号化されるとき、ビデオエンコーダは、コンテキストを使用してビンのうちの1つもしくは複数を符号化し得、かつ/またはコンテキストを用いずにビンのうちの1つもしくは複数を符号化し得る。コンテキストを用いないCABACを使用してビンを符号化することは、バイパスモードと呼ばれることがある。HEVC SCCドラフト3は、Table 1(表1)において列挙されたシンタックス要素のどのビンがコンテキストを用いてコーディングされるのか(すなわち、コンテキスト「0」およびコンテキスト「1」によって示されるように)、およびどのビンがバイパスモードでコーディングされるのかを示す、Table 2(表2)として以下に部分的に転載されるテーブル(HEVC SCCドラフト3のTable 9-47)をさらに提供する。
【００２９】
【表２】
0006771493.tif 000005
【００３０】
Table 1(表1)とTable 2(表2)との比較は、HEVC SCCドラフト3が、cu_qp_delta_palette_absの前のすべてのシンタックス要素(すなわち、num_signalled_palette_entries、palette_entry、およびpalette_escape_val_present_flag)がバイパスコーディングされると規定することを示す。同様に、palette_transpose_flagの後かつlast_palette_run_type_flagの前のシンタックス要素(すなわち、num_palette_indices_idcおよびpalette_index_idc)もバイパスコーディングされる。
【００３１】
コンテキストを用いたCABACを使用してビンを符号化するとき、ビデオエンコーダは、ストレージからメモリの中へコンテキストをロードし得る。いくつかの例では、ビデオエンコーダは利用可能な限定されたメモリリソースしか有しないことがあり、かつ/またはコンテキストをメモリの中へロードすることは時間がかかることがある。したがって、コンテキストがメモリの中へロードされる時間の量をビデオエンコーダが最小限に抑えることが望ましくあり得る。いくつかの例では、バイパスビンを一緒にグループ化することは、コンテキストがメモリの中へロードされる時間の量を低減し得、そのことはCABACスループットを向上させ得る。
【００３２】
http://phenix.it-sudparis.eu/jct/doc_end_user/documents/21_Warsaw/wg11/JCTVC-U0090-v1.zipにおいて入手可能である、Yeら、「CE1-related: Palette Mode Context and Codeword Simplification」、ITU-T SG16 WP3およびISO/IEC JTC1/SC29/WG11のビデオコーディング共同研究部会(JCT-VC)、第21回会合、ワルシャワ、ポーランド、2015年6月19日〜26日、文書JCTVC-U0090(以下、「JCTVC-U0090」)において、last_palette_run_type_flagの後にpalette_transpose_flagがシグナリングされることが提案された。詳細には、JCTVC-U0090は、palette_coding()シンタックステーブルをTable 3(表3)において以下に示すように修正することを提案している(ただし、イタリック体でのテキストが挿入され、[[二重括弧付きイタリック体]]でのテキストが削除される)。
【００３３】
【表３】
0006771493.tif 000006
【００３４】
しかしながら、いくつかの例では、JCTVC-U0090によって提案されたシンタックス要素の配置は最適でない場合がある。たとえば、デルタQPに関係するシンタックス要素(すなわち、cu_qp_delta_palette_absおよびcu_qp_delta_palette_sign_flag)およびクロマQPオフセットに関係するシンタックス要素(すなわち、cu_chroma_qp_palette_offset_flagおよびcu_chroma_qp_palette_offset_idx)が存在するとき、JCTVC-U0090によって提案されたシンタックス要素の配置は、いかなる追加のバイパスビンのグループ化ももたらさないことがある。
【００３５】
本開示の1つまたは複数の技法によれば、ビデオエンコーダは、バイパスモードを使用して符号化されるシンタックス要素が連続的に符号化されるような現在パレットを定義するために使用されるシンタックス要素を符号化し得る。たとえば、ビデオデータの現在ブロック用のデルタ量子化パラメータ(QP)および/またはクロマQPオフセットに関係する1つまたは複数のシンタックス要素を、ビデオデータの現在ブロック用のパレットのパレットインデックスに転置プロセスが適用されるかどうかを示すシンタックス要素の前で符号化するのではなく、ビデオエンコーダは、ビデオデータの現在ブロック用のデルタQPおよび/またはクロマQPオフセットに関係する1つまたは複数のシンタックス要素を、ビデオデータの現在ブロック用のパレットのパレットインデックスに転置プロセスが適用されるかどうかを示すシンタックス要素の後で符号化し得る。
【００３６】
デルタQPおよびクロマQPオフセットに関係するシンタックス要素のシグナリングをpalette_transpose_flagの後に移動させるために、palette_coding()シンタックステーブルがどのように修正され得るのかという一例が、Table 4(表4)において以下に示される(ただし、HEVC SCCドラフト3におけるTable 4(表4)の前のバージョンに対して、イタリック体でのテキストが挿入され、[[二重括弧付きイタリック体]]でのテキストが削除される)。
【００３７】
【表４】
0006771493.tif 000007
0006771493.tif 000008
【００３８】
ビデオデータの現在ブロック用のデルタQPおよび/またはクロマQPオフセットに関係する1つまたは複数のシンタックス要素を、ビデオデータの現在ブロック用のパレットのパレットインデックスに転置プロセスが適用されるかどうかを示すシンタックス要素の後に移動させることによって、ビデオエンコーダは、バイパスモードを使用してコーディングされるもっと多数のシンタックス要素を一緒にグループ化(すなわち、連続的に符号化)し得る。たとえば、ビデオデータの現在ブロック用のデルタQPおよび/またはクロマQPオフセットに関係する1つまたは複数のシンタックス要素を、ビデオデータの現在ブロック用のパレットのパレットインデックスに転置プロセスが適用されるかどうかを示すシンタックス要素の後に移動させることによって、ビデオエンコーダは、明示的にシグナリングされるかまたは推定される、現在パレットの中のエントリの数を示す1つまたは複数のシンタックス要素(たとえば、num_palette_indices_idc)および現在パレットエントリのアレイの中のインデックスを示す1つまたは複数のシンタックス要素(たとえば、palette_index_idc)を、ビデオデータの現在ブロック用のクロマQPオフセットに関係する1つまたは複数のシンタックス要素、予測子パレットからのエントリが現在パレットの中で再使用されるかどうかを示す、アレイの中の非0のエントリに先行する0の数を示す1つまたは複数のシンタックス要素(たとえば、palette_predictor_run)、明示的にシグナリングされる、現在パレットの中のエントリの数を示す1つまたは複数のシンタックス要素(たとえば、num_signalled_palette_entries)、現在パレットの中のパレットエントリにおけるコンポーネントの値を示す1つまたは複数のシンタックス要素(たとえば、palette_entry)、およびビデオデータの現在ブロックが少なくとも1つのエスケープコード化サンプルを含むかどうかを示す1つまたは複数のシンタックス要素(たとえば、palette_escape_val_present_flag)と一緒にグループ化し得る。このようにして、本開示の技法はCABACスループットを向上させ得、そのことは、パレットモード符号化を使用してビデオデータを符号化するために必要とされる時間を低減し得る。たとえば、バイパスコード化シンタックス要素を一緒にグループ化することによって、ビデオコーダは、CABACコーディングエンジンを始動、停止、再開、再ロード、およびリセットすることなく使用して、グループ化されたシンタックス要素を連続的に符号化し得る。
【００３９】
Table 4(表4)は、シンタックス要素がどのように配置され得るのかという一例にすぎない。いくつかの例では、デルタQPおよびクロマQPオフセットに関係するシンタックス要素は、シンタックステーブルのさらに下方へ移動されてよい。たとえば、デルタQPおよびクロマQPオフセットに関係するシンタックス要素は、エスケープサンプルに対するコンポーネント値(すなわち、palette_escape_val)の直前に配置されてよい。デルタQPおよびクロマQPオフセットに関係するシンタックス要素が、エスケープサンプルに対するコンポーネント値の直前にどのように配置され得るのかという一例が、Table 5(表5)において以下にされる(ただし、HEVC SCCドラフト3に対して、イタリック体でのテキストが挿入され、[[二重括弧付きイタリック体]]でのテキストが削除される)。
【００４０】
【表５】
0006771493.tif 000009
0006771493.tif 000010
0006771493.tif 000011
0006771493.tif 000012
【００４１】
ビデオデータのパレットベースコーディングのための技法は、インター予測コーディングまたはイントラ予測コーディングなどの、1つまたは複数の他のコーディング技法とともに使用され得る。たとえば、以下でより詳細に説明するように、エンコーダもしくはデコーダ、または組み合わされたエンコーダデコーダ(コーデック)が、インター予測コーディングおよびイントラ予測コーディング、ならびにパレットベースコーディングを実行するように構成され得る。
【００４２】
いくつかの例では、パレットベースコーディング技法は、1つまたは複数のビデオコーディング規格とともに使用するために構成され得る。いくつかの例示的なビデオコーディング規格は、限定はしないが、そのスケーラブルビデオコーディング(SVC)拡張およびマルチビュービデオコーディング(MVC)拡張を含む、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とも呼ばれる)を含む。
【００４３】
最近、新たなビデオコーディング規格、すなわち、高効率ビデオコーディング(HEVC)の設計が、ITU-Tビデオコーディングエキスパートグループ(VCEG)およびISO/IECモーションピクチャエキスパートグループ(MPEG)のビデオコーディング共同研究部会(JCT-VC)によって確定されている。確定されたHEVC規格(すなわち、ITU-T H.265, Series H: AUDIOVISUAL AND MULTIMEDIA SYSTEMS Infrastructure of audiovisual services - Coding of moving video、2015年4月)のコピーが、https://www.itu.int/rec/T-REC-H.265-201504-I/enにおいて入手可能である(以下、「HEVC規格」)。
【００４４】
HEVCへの範囲拡張、すなわち、HEVCスクリーンコンテンツコーディング(SCC)もJCT-VCによって開発されている。HEVC SCCの最近のドラフト(Joshiら、「High Efficiency Video Coding (HEVC) Screen Content Coding: Draft 4」、ITU-T SG16 WP3およびISO/IEC JTC1/SC29/WG11のビデオコーディング共同研究部会(JCT-VC)、第21回会合、ワルシャワ、ポーランド、2015年6月19日〜6月26日)が、http://phenix.it- sudparis.eu/jct/doc_end_user/documents/21_Warsaw/wg11/JCTVC-U1005-v2.zipから入手可能である(以下、「HEVC SCCドラフト4」)。
【００４５】
HEVCフレームワークに関して、一例として、パレットベースコーディング技法は、コーディングユニット(CU)モードとして使用されるように構成され得る。他の例では、パレットベースコーディング技法は、HEVCのフレームワークにおける予測ユニット(PU)モードとして使用されるように構成され得る。したがって、CUモードのコンテキストにおいて説明される、以下の開示されるプロセスのすべては、追加または代替として、PUに適用され得る。しかしながら、そのような技法が、独立に機能するように、または他の既存の、もしくはこれから開発されるべきシステム/規格の一部として機能するように適用され得るので、これらのHEVCベースの例は、本明細書で説明するパレットベースコーディング技法の制約または限定と見なされるべきでない。これらの場合には、パレットコーディングのためのユニットは、正方形ブロック、長方形ブロック、または非矩形形状の領域でさえあり得る。
【００４６】
図1は、本開示の技法を利用し得る例示的なビデオコーディングシステム10を示すブロック図である。本明細書で使用する「ビデオコーダ」という用語は、総称的に、ビデオエンコーダとビデオデコーダの両方を指す。本開示では、「ビデオコーディング」または「コーディング」という用語は、ビデオ符号化またはビデオ復号を総称的に指すことがある。ビデオコーディングシステム10のビデオエンコーダ20およびビデオデコーダ30は、本開示で説明する様々な例によるパレットベースビデオコーディングのための技法を実行するように構成され得るデバイスの例を表す。たとえば、ビデオエンコーダ20およびビデオデコーダ30は、HEVCコーディングにおけるCUまたはPUなどのビデオデータの様々なブロックを、パレットベースコーディングまたは非パレットベースコーディングのいずれかを使用して選択的にコーディングするように構成され得る。非パレットベースコーディングモードは、HEVC規格によって規定される様々なコーディングモードなどの、様々なインター予測時間コーディングモードまたはイントラ予測空間コーディングモードを指すことがある。
【００４７】
図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は、ディスクアクセスまたはカードアクセスを介して記憶媒体にアクセスし得る。記憶媒体は、Blu-rayディスク、DVD、CD-ROM、フラッシュメモリ、または符号化ビデオデータを記憶するための他の適切なデジタル記憶媒体などの、様々な局所的にアクセスされるデータ記憶媒体を含み得る。
【００５１】
さらなる一例では、チャネル16は、ファイルサーバ、またはソースデバイス12によって生成された符号化ビデオデータを記憶する別の中間記憶デバイスを含み得る。この例では、宛先デバイス14は、ファイルサーバまたは他の中間記憶デバイスにおいて記憶された符号化ビデオデータに、ストリーミングまたはダウンロードを介してアクセスし得る。ファイルサーバは、符号化ビデオデータを記憶し、符号化ビデオデータを宛先デバイス14へ送信することが可能なタイプのサーバであってよい。例示的なファイルサーバは、(たとえば、ウェブサイト用の)ウェブサーバ、ファイル転送プロトコル(FTP)サーバ、ネットワーク接続ストレージ(NAS)デバイス、およびローカルディスクドライブを含む。
【００５２】
宛先デバイス14は、インターネット接続などの標準的なデータ接続を通じて符号化ビデオデータにアクセスし得る。例示的なタイプのデータ接続は、ファイルサーバ上に記憶された符号化ビデオデータにアクセスするのに適した、ワイヤレスチャネル(たとえば、Wi-Fi接続)、ワイヤード接続(たとえば、DSL、ケーブルモデムなど)、または両方の組合せを含み得る。ファイルサーバからの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであってよい。
【００５３】
本開示の技法は、ワイヤレスの適用例または設定に限定されない。技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえば、インターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのビデオデータの符号化、データ記憶媒体に記憶されたビデオデータの復号、または他の用途などの、様々なマルチメディア適用例をサポートするビデオコーディングに適用され得る。いくつかの例では、ビデオコーディングシステム10は、ビデオストリーミング、ビデオ再生、ビデオ放送、および/またはビデオ電話などの用途をサポートするために、一方向または双方向のビデオ送信をサポートするように構成され得る。
【００５４】
図1は一例にすぎず、本開示の技法は、必ずしも符号化デバイスと復号デバイスとの間に何らかのデータ通信を含むとは限らないビデオコーディング設定(たとえば、ビデオ符号化またはビデオ復号)に適用されてもよい。他の例では、データは、ローカルメモリからの取出し、ネットワークを介したストリーミングなどが行われる。ビデオ符号化デバイスは、データを符号化するとともにメモリに記憶し得、かつ/またはビデオ復号デバイスは、データをメモリから取り出すとともに復号し得る。多くの例では、符号化および復号は、互いに通信しないデバイスによって実行されるが、単にデータをメモリへ符号化し、かつ/またはデータをメモリから取り出すとともに復号する。ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、アプライアンス、いわゆる「スマート」フォンなどの電話ハンドセット、いわゆる「スマート」パッド、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲のデバイスのうちのいずれかを備え得る。場合によっては、ソースデバイス12および宛先デバイス14は、ワイヤレス通信のために装備され得る。
【００５５】
宛先デバイス14は、リンク16を介して、復号されるべき符号化ビデオデータを受信し得る。リンク16は、ソースデバイス12から宛先デバイス14に符号化ビデオデータを移動することが可能な任意のタイプの媒体またはデバイスを備え得る。一例では、リンク16は、ソースデバイス12がリアルタイムで宛先デバイス14に符号化ビデオデータを直接送信することを可能にするための通信媒体を備え得る。符号化ビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され得、宛先デバイス14へ送信され得る。通信媒体は、無線周波数(RF)スペクトルまたは1つもしくは複数の物理伝送線路などの任意のワイヤレス通信媒体またはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットのようなグローバルネットワークなどの、パケットベースネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、または、ソースデバイス12から宛先デバイス14への通信を容易にするために有用であり得る任意の他の機器を含み得る。
【００５６】
代替的に、符号化データは、出力インターフェース22からストレージデバイス19に出力されてもよい。同様に、符号化データは、入力インターフェースによってストレージデバイス19からアクセスされてもよい。ストレージデバイス19は、ハードドライブ、Blu-ray（登録商標）ディスク、DVD、CD-ROM、フラッシュメモリ、揮発性もしくは不揮発性メモリ、または、符号化ビデオデータを記憶するための任意の他の適切なデジタル記憶媒体などの、様々な分散されたまたは局所的にアクセスされるデータ記憶媒体のうちのいずれかを含み得る。さらなる一例では、ストレージデバイス19は、ソースデバイス12によって生成された符号化ビデオを保持し得るファイルサーバまたは別の中間ストレージデバイスに相当し得る。宛先デバイス14は、ストリーミングまたはダウンロードを介して、ストレージデバイス19からの記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化ビデオデータを記憶し、その符号化ビデオデータを宛先デバイス14に送信することが可能な任意のタイプのサーバであり得る。例示的なファイルサーバは、(たとえば、ウェブサイト用の)ウェブサーバ、FTPサーバ、ネットワーク接続ストレージ(NAS)デバイス、またはローカルディスクドライブを含む。宛先デバイス14は、インターネット接続を含む任意の標準的なデータ接続を通じて、符号化ビデオデータにアクセスし得る。このことは、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに適した、ワイヤレスチャネル(たとえば、Wi-Fi接続)、ワイヤード接続(たとえば、DSL、ケーブルモデムなど)、または両方の組合せを含み得る。ストレージデバイス19からの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであり得る。
【００５７】
本開示の技法は、必ずしもワイヤレスの適用例または設定に限定されるとは限らない。技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえばインターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのデジタルビデオの符号化、データ記憶媒体に記憶されたデジタルビデオの復号、または他の用途などの、様々なマルチメディア用途のうちのいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオ放送、および/またはビデオ電話などの用途をサポートするために、一方向または双方向のビデオ送信をサポートするように構成され得る。
【００５８】
図1の例では、ソースデバイス12は、ビデオソース18、ビデオエンコーダ20、および出力インターフェース22を含む。場合によっては、出力インターフェース22は、変調器/復調器(モデム)および/または送信機を含み得る。ソースデバイス12において、ビデオソース18は、ビデオキャプチャデバイス、たとえば、ビデオカメラ、以前にキャプチャされたビデオを含むビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェース、および/もしくはソースビデオとしてコンピュータグラフィックスデータを生成するためのコンピュータグラフィックスシステム、またはそのようなソースの組合せなどの、ソースを含み得る。一例として、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、いわゆるカメラフォンまたはビデオフォンを形成し得る。しかしながら、本開示で説明する技法は、一般に、ビデオコーディングに適用可能であり得、ワイヤレス用途および/またはワイヤード用途に適用され得る。
【００５９】
キャプチャされたビデオ、以前にキャプチャされたビデオ、またはコンピュータ生成されたビデオは、ビデオエンコーダ20によって符号化され得る。符号化ビデオデータは、ソースデバイス12の出力インターフェース22を介して宛先デバイス14に直接送信され得る。符号化ビデオデータはまた(または、代替的に)、復号および/または再生するために、宛先デバイス14または他のデバイスによって後でアクセスするためのストレージデバイス19に記憶され得る。
【００６０】
宛先デバイス14は、入力インターフェース28、ビデオデコーダ30、およびディスプレイデバイス32を含む。場合によっては、入力インターフェース28は、受信機および/またはモデムを含み得る。宛先デバイス14の入力インターフェース28は、リンク16を介して符号化ビデオデータを受信する。リンク16を介して通信された、またはストレージデバイス19上に提供された符号化ビデオデータは、ビデオデータを復号する際にビデオデコーダ30などのビデオデコーダによって使用するための、ビデオエンコーダ20によって生成された様々なシンタックス要素を含み得る。そのようなシンタックス要素は、通信媒体上で送信された、記憶媒体上に記憶された、またはファイルサーバ上に記憶された符号化ビデオデータとともに含まれ得る。
【００６１】
ディスプレイデバイス32は、宛先デバイス14と一体であってよく、または宛先デバイス14の外部にあってもよい。いくつかの例では、宛先デバイス14は、集積ディスプレイデバイスを含み得、外部ディスプレイデバイスとインターフェースするようにも構成され得る。他の例では、宛先デバイス14はディスプレイデバイスであり得る。一般に、ディスプレイデバイス32は、復号ビデオデータをユーザに表示し、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなどの、様々なディスプレイデバイスのいずれかを備え得る。
【００６２】
ビデオエンコーダ20およびビデオデコーダ30は、最近確定されたHEVC規格(および現在開発中のそれらの様々な拡張)などのビデオ圧縮規格に従って動作し得る。代替的に、ビデオエンコーダ20およびビデオデコーダ30は、代替的に、MPEG-4, Part 10,アドバンストビデオコーディング(AVC)と呼ばれるITU-T H.264規格、またはそのような規格の拡張などの、他の独自規格または業界規格に従って動作し得る。しかしながら、本開示の技法は、いかなる特定のコーディング規格にも限定されない。ビデオ圧縮規格の他の例は、VP8およびVP9を含む。
【００６３】
図1に示さないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30は各々、オーディオエンコーダおよびオーディオデコーダと一体化されてよく、共通のデータストリームまたは別個のデータストリームの中のオーディオとビデオの両方の符号化を処理するために、適切なMUX-DEMUXユニット、または他のハードウェアおよびソフトウェアを含んでもよい。適用可能な場合、いくつかの例では、MUX-DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
【００６４】
ビデオエンコーダ20およびビデオデコーダ30は各々、マイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せを含む、1つまたは複数の集積回路などの、様々な適切なエンコーダ回路のいずれかとして実装され得る。本技法が部分的にソフトウェアに実装されるとき、デバイスは、ソフトウェアのための命令を適切な非一時的コンピュータ可読媒体に記憶し、本開示の技法を実施するために1つまたは複数のプロセッサを使用する集積回路などのハードウェアで、命令を実行し得る。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダに含まれてよく、それらのいずれかが、それぞれのデバイスの中で複合エンコーダ/デコーダ(コーデック)の一部として一体化されてよい。
【００６５】
上記で紹介したように、JCT-VCは、HEVC規格の開発を最近確定している。HEVC規格化の取組みは、HEVCテストモデル(HM)と呼ばれるビデオコーディングデバイスの発展的モデルに基づいた。HMは、たとえば、ITU-T H.264/AVCによる既存のデバイスに対して、ビデオコーディングデバイスのいくつかの追加の機能を仮定する。たとえば、H.264は、9個のイントラ予測符号化モードを提供するが、HMは、35個ものイントラ予測符号化モードを提供し得る。
【００６６】
HEVCおよび他のビデオコーディング仕様では、ビデオシーケンスは、通常、一連のピクチャを含む。ピクチャは、「フレーム」と呼ばれることもある。ピクチャは、SL、SCb、およびSCrと示される3つのサンプルアレイを含み得る。SLは、ルーマサンプルの2次元アレイ(すなわち、ブロック)である。SCbは、Cbクロミナンスサンプルの2次元アレイである。SCrは、Crクロミナンスサンプルの2次元アレイである。クロミナンスサンプルは、本明細書で「クロマ」サンプルと呼ばれることもある。他の事例では、ピクチャはモノクロームであってよく、ルーマサンプルのアレイだけを含んでよい。
【００６７】
ピクチャの符号化表現を生成するために、ビデオエンコーダ20は、コーディングツリーユニット(CTU:coding tree unit)のセットを生成し得る。CTUの各々は、ルーマサンプルのコーディングツリーブロック、クロマサンプルの2つの対応するコーディングツリーブロック、およびコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造を備え得る。モノクロームピクチャ、または3つの別個のカラープレーンを有するピクチャでは、CTUは、単一のコーディングツリーブロック、およびコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造を備え得る。コーディングツリーブロックは、サンプルのN×Nブロックであり得る。CTUは、「ツリーブロック」またはLCUと呼ばれることもある。HEVCのCTUは、H.264/AVCなどの他の規格のマクロブロックと概ね類似し得る。しかしながら、CTUは、必ずしも特定のサイズに限定されるとは限らず、1つまたは複数のコーディングユニット(CU)を含み得る。スライスは、ラスタ走査順序で連続的に順序付けられた整数個のCTUを含み得る。
【００６８】
コード化CTUを生成するために、ビデオエンコーダ20は、CTUのコーディングツリーブロック上で4分木区分を再帰的に実行してコーディングツリーブロックをコーディングブロックに分割し得、したがって、「コーディングツリーユニット」という名前である。コーディングブロックは、サンプルのN×Nブロックであり得る。CUは、ルーマサンプルアレイ、CbサンプルアレイおよびCrサンプルアレイを有するピクチャの、ルーマサンプルのコーディングブロック、およびクロマサンプルの2つの対応するコーディングブロック、ならびにコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造を備え得る。モノクロームピクチャ、または3つの別個のカラープレーンを有するピクチャでは、CUは、単一のコーディングブロック、およびコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造を備え得る。
【００６９】
ビデオエンコーダ20は、CUのコーディングブロックを1つまたは複数の予測ブロックに区分し得る。予測ブロックは、同じ予測が適用されるサンプルの、長方形(すなわち、正方形または非正方形)のブロックである。CUの予測ユニット(PU:prediction unit)は、ルーマサンプルの予測ブロック、クロマサンプルの2つの対応する予測ブロック、および予測ブロックを予測するために使用されるシンタックス構造を備え得る。モノクロームピクチャ、または3つの別個のカラープレーンを有するピクチャでは、PUは、単一の予測ブロック、および予測ブロックを予測するために使用されるシンタックス構造を備え得る。ビデオエンコーダ20は、CUの各PUのルーマ予測ブロック、Cb予測ブロック、およびCr予測ブロックに対して、予測ルーマブロック、予測Cbブロック、および予測Crブロックを生成し得る。
【００７０】
ビデオエンコーダ20は、PUに対する予測ブロックを生成するために、イントラ予測またはインター予測を使用し得る。ビデオエンコーダ20がPUの予測ブロックを生成するためにイントラ予測を使用する場合、ビデオエンコーダ20は、PUに関連するピクチャの復号サンプルに基づいて、PUの予測ブロックを生成し得る。ビデオエンコーダ20がPUの予測ブロックを生成するためにインター予測を使用する場合、ビデオエンコーダ20は、PUに関連するピクチャ以外の1つまたは複数のピクチャの復号サンプルに基づいて、PUの予測ブロックを生成し得る。
【００７１】
ビデオエンコーダ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:transform unit)は、ルーマサンプルの変換ブロック、クロマサンプルの2つの対応する変換ブロック、および変換ブロックサンプルを変換するために使用されるシンタックス構造を備え得る。したがって、CUの各TUは、ルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロックに関連し得る。TUに関連するルーマ変換ブロックは、CUのルーマ残差ブロックのサブブロックであり得る。Cb変換ブロックは、CUのCb残差ブロックのサブブロックであり得る。Cr変換ブロックは、CUのCr残差ブロックのサブブロックであり得る。モノクロームピクチャ、または3つの別個のカラープレーンを有するピクチャでは、TUは、単一の変換ブロック、および変換ブロックのサンプルを変換するために使用されるシンタックス構造を備え得る。
【００７３】
ビデオエンコーダ20は、1つまたは複数の変換をTUのルーマ変換ブロックに適用して、TUに対するルーマ係数ブロックを生成し得る。係数ブロックは、変換係数の2次元アレイであり得る。変換係数は、スカラー量であり得る。ビデオエンコーダ20は、1つまたは複数の変換をTUのCb変換ブロックに適用して、TUに対するCb係数ブロックを生成し得る。ビデオエンコーダ20は、1つまたは複数の変換をTUのCr変換ブロックに適用して、TUに対するCr係数ブロックを生成し得る。
【００７４】
係数ブロック(たとえば、ルーマ係数ブロック、Cb係数ブロック、またはCr係数ブロック)を生成した後、ビデオエンコーダ20は、係数ブロックを量子化し得る。量子化は、概して、変換係数が量子化されて、場合によっては、変換係数を表すために使用されるデータの量を低減し、さらなる圧縮をもたらすプロセスを指す。ビデオエンコーダ20が係数ブロックを量子化した後、ビデオエンコーダ20は、量子化変換係数を示すシンタックス要素をエントロピー符号化し得る。たとえば、ビデオエンコーダ20は、量子化変換係数を示すシンタックス要素に、コンテキスト適応型バイナリ算術コーディング(CABAC:Context-Adaptive Binary Arithmetic Coding)を実行し得る。
【００７５】
ビデオエンコーダ20は、コード化ピクチャの表現および関連するデータを形成するビットのシーケンスを含む、ビットストリームを出力し得る。ビットストリームは、NALユニットのシーケンスを備え得る。NALユニットは、NALユニットの中のデータのタイプの表示を含むシンタックス構造、および必要に応じてエミュレーション防止ビットを組み入れられたRBSPの形態でそのデータを含むバイトである。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をカプセル化してよく、以下同様である。ビデオコーディングデータ用のRBSP(パラメータセット用およびSEIメッセージ用のRBSPではなく)をカプセル化するNALユニットは、VCL NALユニットと呼ばれることがある。
【００７７】
ビデオデコーダ30は、ビデオエンコーダ20によって生成されたビットストリームを受信し得る。加えて、ビデオデコーダ30は、ビットストリームを構文解析して、ビットストリームからシンタックス要素を取得し得る。ビデオデコーダ30は、ビットストリームから取得されたシンタックス要素に少なくとも部分的に基づいて、ビデオデータのピクチャを再構成し得る。ビデオデータを再構成するためのプロセスは、概して、ビデオエンコーダ20によって実行されるプロセスの逆であり得る。加えて、ビデオデコーダ30は、現在CUのTUに関連する係数ブロックを逆量子化し得る。ビデオデコーダ30は、係数ブロックに対して逆変換を実行して、現在CUのTUに関連する変換ブロックを再構成し得る。ビデオデコーダ30は、現在CUのPUに対する予測ブロックのサンプルを、現在CUのTUの変換ブロックの対応するサンプルに加算することによって、現在CUのコーディングブロックを再構成し得る。ピクチャのCUごとにコーディングブロックを再構成することによって、ビデオデコーダ30は、ピクチャを再構成し得る。
【００７８】
いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、パレットベースコーディングを実行するように構成され得る。たとえば、パレットベースコーディングでは、上記で説明したイントラ予測またはインター予測コーディング技法を実行するのではなく、ビデオエンコーダ20およびビデオデコーダ30は、特定のエリア(たとえば、所与のブロック)のビデオデータを表すためのカラー値のテーブルとして、いわゆるパレットをコーディングし得る。各ピクセルは、ピクセルのカラーを表すパレットの中のエントリに、たとえば、ルーマ(Y)値とクロマ(CbおよびCr)値とに関連付けられ得る。たとえば、ビデオエンコーダ20およびビデオデコーダ30は、ピクセル値をパレットの中の適切な値に関連付けるインデックスをコーディングし得る。
【００７９】
上記の例では、ビデオエンコーダ20は、ブロック用のパレットを決定することと、各ピクセルの値を表すためのエントリをパレットの中に配置することと、ピクセル値をパレットに関連付けるピクセルに対するインデックス値とともにパレットを符号化することとによって、ビデオデータのブロックを符号化し得る。ビデオデコーダ30は、ブロック用のパレット、ならびにブロックのピクセルに対するインデックス値を、符号化ビットストリームから取得し得る。ビデオデコーダ30は、ピクセルのインデックス値をパレットのエントリに関連付けて、ブロックのピクセル値を再構成し得る。
【００８０】
本開示の態様は、エンコーダおよびデコーダにおいて行われ得るパレット導出を対象とする。一例として、ビデオエンコーダ20は、現在ブロックの中のピクセルのヒストグラムを導出することによって、現在ブロック用のパレットを導出し得る。いくつかの例では、ヒストグラムは、H={(vi,fi),i={0,1,2,...,M}}として表現され得、ただし、M+1は現在ブロックの中の異なるピクセル値の数であり、viはピクセル値であり、fiはviの出現の数(すなわち、現在ブロックの中の何個のピクセルがピクセル値viを有するのか)である。そのような例では、ヒストグラムは、概して、ピクセル値が現在ブロックの中に出現する回数を表す。
【００８１】
ビデオエンコーダ20は、ヒストグラムを導出するとき、1つまたは複数の変数を初期設定し得る。一例として、ビデオエンコーダ20は、パレットインデックスidxを0に初期設定(すなわち、idx=0に設定)し得る。別の例として、ビデオエンコーダ20は、パレットPを空となるように初期設定(すなわち、P=φ、j=0に設定)し得る。
【００８２】
ビデオエンコーダ20は、より多く出現するピクセルが値のリストの前方近くに配置されるように、ヒストグラムを、たとえば、降順でソートし得る。たとえば、ビデオエンコーダ20は、fiの降順に従ってHをソートし得、順序付きリストは、Ho={(ui,fi),i={0,1,2,...,M},fi≧fi+1}として表現され得る。この例では、順序付きリストは、最も頻繁に出現するピクセル値をリストの前方(上部)に、最も頻繁に出現しないピクセル値をリストの後方(下部)に含む。
【００８３】
ビデオエンコーダ20は、1つまたは複数のエントリをヒストグラムからパレットの中へコピーし得る。一例として、ビデオエンコーダ20は、ヒストグラムの中で最も頻度が高いエントリをパレットの中に挿入し得る。たとえば、ビデオエンコーダ20は、(j,uj)をパレットPの中に挿入し得る(すなわち、P=P∪{(idx,uj)})。いくつかの例では、エントリをパレットの中に挿入した後、ビデオエンコーダ20は、パレットの中に挿入するための、ヒストグラムの中で次に頻度が高いエントリを評価し得る。たとえば、ビデオエンコーダ20は、idx=idx+1、j=j+1に設定し得る。
【００８４】
ビデオエンコーダ20は、次に頻度が高いエントリ(すなわち、uj+1)がパレットの中の任意のピクセル(すなわち、x)の近傍内にあるかどうか(すなわち、距離(uj+1,x)<Thresh)を決定し得る。たとえば、ビデオエンコーダ20は、エントリの値がパレットの中の任意のピクセルの値のしきい値距離内にあるかどうかを決定することによって、エントリがパレットの中の任意のピクセルの近傍内にあるかどうかを決定し得る。いくつかの例では、ビデオエンコーダ20は、距離関数をフレキシブルに選択し得る。一例として、ビデオエンコーダ20は、3つのカラー成分(たとえば、ルミナンス、青色相クロミナンス、および赤色相クロミナンスの各々)または1つのカラー成分(たとえば、ルミナンス、青色相クロミナンス、または赤色相クロミナンスのうちの1つ)の予測の絶対差分の合計(SAD)または2乗誤差の合計(SSE)として、距離関数を選択し得る。いくつかの例では、ビデオエンコーダ20は、しきい値Threshをフレキシブルに選択し得る。一例として、ビデオエンコーダ20は、現在ブロックの量子化パラメータ(QP:quantization parameter)に依存するようにしきい値を選択し得る。別の例として、ビデオエンコーダ20は、idxの値またはjの値に依存するようにしきい値を選択し得る。
【００８５】
次に頻度が高いエントリ(すなわち、uj+1)がパレットの中の任意のピクセルの近傍内にあるとビデオエンコーダ20が決定する場合、ビデオエンコーダ20は、ヒストグラムの中のエントリを挿入しなくてよい。次に頻度が高いエントリ(すなわち、uj+1)がパレットの中の任意のピクセルの近傍内にないとビデオエンコーダ20が決定する場合、ビデオエンコーダ20は、ヒストグラムの中のエントリを挿入してよい。
【００８６】
ビデオエンコーダ20は、1つまたは複数の条件が満たされるまでパレットの中にエントリを挿入し続けてよい。いくつかの例示的な条件は、idx=Mのとき、j=Mのとき、またはパレットのサイズが既定の値よりも大きいときである。
【００８７】
パレットベースコーディングは、いくらかの量のシグナリングオーバーヘッドを有することがある。たとえば、パレットのサイズなどのパレットの特性、ならびにパレット自体をシグナリングするために、いくつかのビットが必要とされ得る。加えて、ブロックのピクセルに対するインデックス値をシグナリングするために、いくつかのビットが必要とされ得る。本開示の技法は、いくつかの例では、そのような情報をシグナリングするために必要とされるビットの数を低減し得る。たとえば、本開示で説明する技法は、パレットベースコーディングモードをシグナリングすること、パレットを送信すること、パレットを予測すること、パレットを導出すること、ならびにパレットベースコーディングマップおよび他のシンタックス要素を送信することのうちの、1つまたは複数の様々な組合せのための技法を含み得る。
【００８８】
いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、別のパレットを使用してパレットを予測し得る。たとえば、ビデオエンコーダ20および/またはビデオデコーダ30は、第1のピクセル値を示す第1のエントリを有する第1のパレットを決定し得る。ビデオエンコーダ20および/またはビデオデコーダ30は、次いで、第1のパレットの第1のエントリに基づいて、第2のパレットの第2のピクセル値を示す1つまたは複数の第2のエントリを決定し得る。ビデオエンコーダ20および/またはビデオデコーダ30はまた、第2のパレットを使用してビデオデータのブロックのピクセルをコーディングし得る。
【００８９】
第1のパレットの中のエントリに基づいて第2のパレットのエントリを決定するとき、ビデオエンコーダ20は、第2のパレットを再構成するためにビデオデコーダによって使用され得る様々なシンタックス要素を符号化し得る。たとえば、ビデオエンコーダ20は、全体的なパレット(または、ビデオデータの各カラー成分、たとえば、Y、Cb、Cr、またはY、U、V、またはR、G、Bが、別個のパレットを有する場合は、複数のパレット)が現在コーディングされているブロックの1つまたは複数の隣接ブロックからコピーされていることを示すために、ビットストリームの中の1つまたは複数のシンタックス要素を符号化し得る。現在ブロックの現在パレットのエントリがそこから予測される(たとえば、コピーされる)パレットは、予測パレットと呼ばれることがある。予測パレットは、空間的に隣接するブロックおよび/またはブロックの特定の走査順序で隣接するブロックを含む、1つまたは複数の隣接ブロックからのパレットエントリを含み得る。たとえば、隣接ブロックは、現在コーディングされているブロックの空間的に左側(左隣接ブロック)または上方(上隣接ブロック)に位置してよい。別の例では、ビデオエンコーダ20は、現在ブロックの因果的ネイバーの中で最も頻度が高いサンプル値を使用して、予測パレットエントリを決定してよい。別の例では、隣接ブロックは、ブロックをコーディングするために使用される特定の走査順序に従って、現在コーディングされているブロックに隣接してよい。すなわち、隣接ブロックは、走査順序において現在ブロックの前にコーディングされた1つまたは複数のブロックであってよい。ビデオエンコーダ20は、パレットがそこからコピーされている隣接ブロックのロケーションを示すために、1つまたは複数のシンタックス要素を符号化し得る。
【００９０】
いくつかの例では、パレット予測は、エントリ方向で実行されてよい。たとえば、ビデオエンコーダ20は、予測パレットのエントリごとに、パレットエントリが現在ブロック用のパレットに含まれるかどうかを示すために、1つまたは複数のシンタックス要素を符号化し得る。ビデオエンコーダ20が現在ブロック用のパレットのエントリを予測しない場合、ビデオエンコーダ20は、予測されていないエントリ、ならびにそのようなエントリの数を規定するために、1つまたは複数の追加のシンタックス要素を符号化し得る。
【００９１】
上記で説明したシンタックス要素は、パレット予測ベクトルと呼ばれることがある。たとえば、上述のように、ビデオエンコーダ20およびビデオデコーダ30は、隣接ブロックからの1つまたは複数のパレット(総称して参照パレットと呼ばれる)に基づいて、現在ブロック用のパレットを予測し得る。参照パレットを生成するとき、最新のパレットを待ち行列の前方に追加することによって、先入れ後出し(FIFO:first-in first-out)が使用され得る。待ち行列が既定のしきい値を上回る場合、最も古い要素が外へポップ(pop)されてよい。新しい要素を待ち行列の前方にプッシュ(push)した後、待ち行列の始まりから数えて重複した要素を除去するために、プルーニングプロセスが適用され得る。詳細には、いくつかの例では、ビデオエンコーダ20は、参照パレットの中のピクセル値が現在パレットに対して再使用されるかどうかを示すために、0-1ベクトルを符号化し得る(また、ビデオデコーダ30は復号し得る)。一例として、Table 6(表6)の例に示すように、参照パレットは、6個の項目(たとえば、6個のインデックス値およびそれぞれのピクセル値)を含み得る。
【００９２】
【表６】
0006771493.tif 000013
【００９３】
例示のための一例では、ビデオエンコーダ20は、v0、v2、v3、v4、およびv5が現在パレットにおいて再使用され、v1が再使用されないことを示す、ベクトル(1,0,1,1,1,1)をシグナリングし得る。v0、v2、v3、v4、およびv5を再使用することに加えて、ビデオエンコーダ20は、インデックス5および6を有する2つの新たな項目を現在パレットに追加し得る。この例にとっての現在パレットが、下のTable 7(表7)に示される。
【００９４】
【表７】
0006771493.tif 000014
【００９５】
パレット予測0-1ベクトルをコーディングするために、ベクトルの中の項目ごとに、ビデオエンコーダ20は、その値を表すための1ビットをコーディングし得る。追加として、予測され得ないパレット項目の数(たとえば、新たなパレットエントリ(上のTable 7(表7)の例におけるu0およびu1)の数)は、2値化およびシグナリングされ得る。
【００９６】
本開示の他の態様は、ビデオエンコーダ20および/またはビデオデコーダ30がピクセル値を決定することを可能にするマップを構成および/または送信することに関する。たとえば、本開示の他の態様は、特定のピクセルをパレットのエントリに関連付けるインデックスのマップを構成および/または送信することに関する。
【００９７】
いくつかの例では、ビデオエンコーダ20は、ブロックのピクセルがパレットの中の対応する値を有するかどうかを示し得る。例示のための一例では、マップの(i,j)エントリがビデオデータのブロックの中の(i,j)ピクセル位置に対応すると想定する。この例では、ビデオエンコーダ20は、ブロックのピクセル位置ごとにフラグを符号化し得る。ビデオエンコーダ20は、(i,j)ロケーションにおけるピクセル値がパレットの中の値のうちの1つであることを示すために、(i,j)エントリに対してフラグを1に等しく設定し得る。カラーがパレットに含まれる(すなわち、フラグが1に等しい)とき、ビデオエンコーダ20はまた、パレットの中のカラーを識別する(i,j)エントリに対するパレットインデックスを示すデータを符号化し得る。ピクセルのカラーがパレットに含まれない(すなわち、フラグが0に等しい)とき、ビデオエンコーダ20はまた、エスケープピクセルと呼ばれることがあるピクセルに対するサンプル値を示すデータを符号化し得る。ビデオデコーダ30は、上記で説明したデータを符号化ビットストリームから取得し得、そのデータを使用してブロックの中の特定のロケーションに対するパレットインデックスおよび/またはピクセル値を決定し得る。
【００９８】
いくつかの事例では、所与の位置におけるピクセルがマッピングされるパレットインデックスと、隣接ピクセルが同じパレットインデックスにマッピングされる確率との間に相関があり得る。すなわち、ピクセルが特定のパレットインデックスにマッピングされるとき、1つまたは複数の隣接ピクセル(空間的なロケーションの観点から)が同じパレットインデックスにマッピングされる確率は比較的高くなり得る。
【００９９】
いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、ビデオデータの同じブロックの1つまたは複数のインデックスに対して、ビデオデータのブロックの1つまたは複数のインデックスを決定およびコーディングし得る。たとえば、ビデオエンコーダ20および/またはビデオデコーダ30は、ビデオデータのブロックの中の第1のピクセルに関連する第1のインデックス値を決定するように構成され得、その場合、第1のインデックス値は、第1のピクセルの値をパレットのエントリに関連付ける。ビデオエンコーダ20および/またはビデオデコーダ30はまた、第1のインデックス値に基づいて、ビデオデータのブロックの中の1つまたは複数の第2のピクセルに関連する1つまたは複数の第2のインデックス値を決定し、ビデオデータのブロックの第1および1つまたは複数の第2のピクセルをコーディングするように構成され得る。したがって、この例では、マップのインデックスは、マップの1つまたは複数の他のインデックスに対してコーディングされ得る。
【０１００】
上記で説明したように、ビデオエンコーダ20および/またはビデオデコーダ30は、マップのインデックス値をマップの他のインデックスに対してコーディングするためのいくつかの異なる技法を使用し得る。たとえば、ビデオエンコーダ20および/またはビデオデコーダ30は、マップのインデックス値をマップの他のインデックスに対してコーディングするために、インデックスモード、上コピーモード、および遷移モードを使用し得る。
【０１０１】
パレットベースコーディングの「インデックスモード」では、ビデオエンコーダ20および/またはビデオデコーダ30は、パレットインデックスを最初にシグナリングし得る。インデックスがパレットのサイズに等しい場合、このことは、サンプルがエスケープサンプルであることを示す。この場合、ビデオエンコーダ20および/またはビデオデコーダ30は、成分ごとにサンプル値または量子化サンプル値をシグナリングし得る。たとえば、パレットサイズが4である場合、非エスケープサンプルにとって、パレットインデックスは範囲[0,3]の中にある。この場合、4としてのインデックス値は、エスケープサンプルを意味し得る。インデックスが非エスケープサンプルを示す場合、ビデオエンコーダ20および/またはビデオデコーダ30は、ランレングスを示す非負の値n-1によって、同じインデックスを共有する、走査順序での後続のサンプルの数を規定し得るランレングスをシグナリングし得、そのことは、現在のピクセルを含む後続のn個のピクセルが、最初にシグナリングされたインデックスと同じピクセルインデックスを有することを意味する。
【０１０２】
パレットベースコーディングの「上からのコピー」モードでは、ビデオエンコーダ20および/またはビデオデコーダ30は、現在ピクセルを含む後続のm個のピクセルにとって、パレットインデックスがそれらのすぐ上のネイバーとそれぞれ同じであることを示すために、非負のランレングス値m-1をシグナリングし得る。「上からのコピー」ランモード内ではパレットインデックスが異なる場合があるという意味で、「上からのコピー」モードが「インデックス」モードと異なることに留意されたい。
【０１０３】
上記で説明したように、いくつかの例では、バイパスビンを一緒にグループ化すること(すなわち、CABACスループットを向上させること)が望ましくあり得る。本開示の1つまたは複数の技法によれば、バイパスモードを使用してコーディングされるシンタックス要素が一緒にグループ化されるような現在パレットを定義するために使用されるシンタックス要素を、ビデオエンコーダ20が符号化し得、ビデオデコーダ30が復号し得る。たとえば、ビデオデータの現在ブロック用のデルタ量子化パラメータ(QP)および/またはクロマQPオフセットに関係する1つまたは複数のシンタックス要素を、ビデオデータの現在ブロック用のパレットのパレットインデックスに転置プロセスが適用されるかどうかを示すシンタックス要素の前でコーディングするのではなく、ビデオエンコーダ20および/またはビデオデコーダ30は、ビデオデータの現在ブロック用のデルタQPおよび/またはクロマQPオフセットに関係する1つまたは複数のシンタックス要素を、ビデオデータの現在ブロック用のパレットのパレットインデックスに転置プロセスが適用されるかどうかを示すシンタックス要素の後でコーディングし得る。このようにして、ビデオエンコーダ20および/またはビデオデコーダ30は、バイパスモードを使用してシンタックス要素のもっと大きいグループをコーディングし得、そのことは、CABACスループットを向上させ得る。
【０１０４】
いくつかの例では、ビデオデータの現在ブロック用のデルタQPに関係する1つまたは複数のシンタックス要素は、ビデオデータの現在ブロック用のルーマQPと現在ブロック用のルーマQPの予測子との間の差分の絶対値を規定するシンタックス要素(たとえば、cu_qp_delta_palette_abs)と、ビデオデータの現在ブロック用のルーマQPと現在ブロック用のルーマQPの予測子との間の差分の符号を規定するシンタックス要素(たとえば、cu_qp_delta_palette_sign_flag)とを含み得る。いくつかの例では、ビデオデータの現在ブロック用のクロマQPオフセットに関係する1つまたは複数のシンタックス要素は、現在ブロック用のクロマQPを決定するために1つまたは複数のオフセットリストの中のエントリが現在ブロック用のルーマQPに追加されるどうかを示すシンタックス要素(たとえば、cu_chroma_qp_palette_offset_flag)と、現在ブロック用のクロマQPを決定するために現在ブロック用のルーマQPに追加される、1つまたは複数のオフセットリストの各々の中のエントリのインデックスを規定するシンタックス要素(たとえば、cu_chroma_qp_palette_offset_idx)とを含み得る。したがって、ビデオエンコーダ20および/またはビデオデコーダ30は各々、ビットストリームの中の第1の位置においてpalette_transpose_flagシンタックス要素をコーディングし、第1の位置の後のビットストリームの中の第2の位置において、cu_qp_delta_palette_absシンタックス要素、cu_qp_delta_palette_sign_flagシンタックス要素、cu_chroma_qp_palette_offset_flagシンタックス要素、およびcu_chroma_qp_palette_offset_idxシンタックス要素をコーディングするように構成され得る。
【０１０５】
図2は、本開示の技法を実施し得る例示的なビデオエンコーダ20を示すブロック図である。図2は説明のために提供され、広く例示されかつ本開示で説明されるような技法の限定と見なされるべきでない。説明のために、本開示は、HEVCコーディングのコンテキストでビデオエンコーダ20を説明する。しかしながら、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
【０１０６】
ビデオエンコーダ20は、本開示で説明する様々な例によるパレットベースビデオコーディングのための技法を実行するように構成され得るデバイスの一例を表す。たとえば、ビデオエンコーダ20は、HEVCコーディングにおけるCUまたはPUなどのビデオデータの様々なブロックを、パレットベースコーディングまたは非パレットベースコーディングのいずれかを使用して選択的にコーディングするように構成され得る。非パレットベースコーディングモードは、HEVC規格によって規定される様々なコーディングモードなどの、様々なインター予測時間コーディングモードまたはイントラ予測空間コーディングモードを指すことがある。ビデオエンコーダ20は、一例では、ピクセル値を示すエントリを有するパレットを生成し、ビデオデータのブロックの少なくともいくつかの位置のピクセル値を表すパレットの中のピクセル値を選択し、ビデオデータのブロックの位置のうちの少なくともいくつかを、選択されたピクセル値にそれぞれ対応するパレットの中のエントリに関連付ける情報をシグナリングするように構成され得る。シグナリングされた情報は、ビデオデコーダ30によって、ビデオデータを復号するために使用され得る。
【０１０７】
図2の例では、ビデオエンコーダ20は、予測処理ユニット100、残差生成ユニット102、変換処理ユニット104、量子化ユニット106、逆量子化ユニット108、逆変換処理ユニット110、再構成ユニット112、フィルタユニット114、復号ピクチャバッファ116、およびエントロピー符号化ユニット118を含む。予測処理ユニット100は、インター予測処理ユニット120およびイントラ予測処理ユニット126を含む。インター予測処理ユニット120は、動き推定ユニットおよび動き補償ユニット(図示せず)を含む。ビデオエンコーダ20はまた、本開示で説明するパレットベースコーディング技法の様々な態様を実行するように構成された、パレットベース符号化ユニット122を含む。他の例では、ビデオエンコーダ20は、より多数の、より少数の、または異なる機能の構成要素を含み得る。
【０１０８】
ビデオエンコーダ20は、ビデオデータを受信し得る。ビデオエンコーダ20は、ビデオデータのピクチャのスライスの中の各CTUを符号化し得る。CTUの各々は、ピクチャの、等しいサイズのルーマコーディングツリーブロック(CTB:coding tree block)、および対応するCTBに関連し得る。CTUを符号化することの一部として、予測処理ユニット100は、4分木区分を実行して、CTUのCTBを次第に小さくなるブロックに分割し得る。より小さいブロックは、CUのコーディングブロックであり得る。たとえば、予測処理ユニット100は、CTUに関連するCTBを4つの等しいサイズのサブブロックに区分し得、サブブロックのうちの1つまたは複数を4つの等しいサイズのサブサブブロックに区分し得、以下同様である。
【０１０９】
ビデオエンコーダ20は、CTUのCUを符号化して、CUの符号化表現(すなわち、コード化CU)を生成し得る。CUを符号化することの一部として、予測処理ユニット100は、CUに関連するコーディングブロックを、CUの1つまたは複数のPUの間で区分し得る。したがって、各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に対する動き情報を含み得る。インター予測処理ユニット120は、PUがIスライスの中にあるのか、Pスライスの中にあるのか、またはBスライスの中にあるのかに応じて、CUのPUのための異なる動作を実行し得る。Iスライスでは、すべてのPUがイントラ予測される。したがって、PUがIスライスの中にある場合、インター予測処理ユニット120は、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は、ビデオデータのブロック用のパレットを定義するためのシンタックス要素を生成し得る。ビデオデータの現在ブロック用の現在パレットを定義するためにパレットベース符号化ユニット122が生成し得るいくつかの例示的なシンタックス要素は、限定はしないが、現在パレットのパレットインデックスに転置プロセスが適用されるかどうかを示すシンタックス要素(たとえば、palette_transpose_flag)、デルタ量子化パラメータ(QP)に関係する1つまたは複数のシンタックス要素(たとえば、cu_qp_delta_palette_abs、cu_qp_delta_palette_sign_flag、cu_chroma_qp_palette_offset_flag、および/またはcu_chroma_qp_palette_offset_idx)、ビデオデータの現在ブロック用のクロマQPオフセットに関係する1つまたは複数のシンタックス要素、予測子パレットからのエントリが現在パレットの中で再使用されるかどうかを示す、アレイの中の非0のエントリに先行する0の数を示す1つまたは複数のシンタックス要素(たとえば、palette_predictor_run)、明示的にシグナリングされる、現在パレットの中のエントリの数を示す1つまたは複数のシンタックス要素(たとえば、num_signalled_palette_entries)、現在パレットの中のパレットエントリにおけるコンポーネントの値を示す1つまたは複数のシンタックス要素(たとえば、palette_entry)、ビデオデータの現在ブロックが少なくとも1つのエスケープコード化サンプルを含むかどうかを示す1つまたは複数のシンタックス要素(たとえば、palette_escape_val_present_flag)、明示的にシグナリングされるかまたは推定される、現在パレットの中のエントリの数を示す1つまたは複数のシンタックス要素(たとえば、num_palette_indices_idc)、および現在パレットエントリのアレイの中のインデックスを示す1つまたは複数のシンタックス要素(たとえば、palette_index_idc)を含む。パレットベース符号化ユニット122は、現在ブロック用の現在パレットを定義する生成されたシンタッ
クス要素を、エントロピー符号化ユニット118などのビデオエンコーダ20の1つまたは複数の他の構成要素に出力し得る。
【０１１７】
したがって、ビデオエンコーダ20は、本開示で説明するようなパレットベースコーディングモードを使用して、ビデオデータのブロックを符号化するように構成され得る。ビデオエンコーダ20は、パレットコーディングモードを使用してビデオデータのブロックを選択的に符号化し得、または異なるモード、たとえば、そのようなHEVCインター予測コーディングモードまたはイントラ予測コーディングモードを使用して、ビデオデータのブロックを符号化し得る。ビデオデータのブロックは、たとえば、HEVCコーディングプロセスに従って生成されたCUまたはPUであってよい。ビデオエンコーダ20は、インター予測時間コーディングモードまたはイントラ予測空間コーディングモードを用いて一部のブロックを符号化し得、パレットベースコーディングモードを用いて他のブロックを復号し得る。
【０１１８】
イントラ予測処理ユニット126は、PUに対してイントラ予測を実行することによって、PUに対する予測データを生成し得る。PUに対する予測データは、PUに対する予測サンプルブロックおよび様々なシンタックス要素を含み得る。イントラ予測処理ユニット126は、Iスライス、Pスライス、およびBスライスの中のPUに対して、イントラ予測を実行し得る。
【０１１９】
PUに対してイントラ予測を実行するために、イントラ予測処理ユニット126は、複数のイントラ予測モードを使用して、PUに対する予測データの複数のセットを生成し得る。イントラ予測モードを使用して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:residual quad-tree)と呼ばれる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を表すデータを含み得る。
【０１２８】
上記で説明したように、パレットベース符号化ユニット122は、現在ブロック用の現在パレットを定義する生成されたシンタックス要素をエントロピー符号化ユニット118に出力し得る。エントロピー符号化ユニット118は、パレットベース符号化ユニット122から受信されたシンタックス要素の1つまたは複数のビンを、コンテキストを用いたCABACを使用して符号化し得、パレットベース符号化ユニット122から受信されたシンタックス要素の1つまたは複数のビンを、コンテキストを用いないCABAC(すなわち、バイパスモード)を使用して符号化し得る。いくつかの例では、エントロピー符号化ユニット118は、Table 2(表2)において上記で定義したように、シンタックス要素のビンをコンテキストモードまたはバイパスモードを使用して符号化し得る。
【０１２９】
上記で説明したように、CABACスループットを向上させるために、バイパスコード化ビンを一緒にグループ化することが望ましくあり得る。SCCドラフト3では、palette_predictor_run、num_signalled_palette_entries、palette_entry、およびpalette_escape_val_present_flagシンタックス要素のビンは、バイパスコーディングされ一緒にグループ化される。ただし、num_palette_indices_idcおよびpalette_index_idcシンタックス要素のビンもバイパスコーディングされるが、それらはpalette_predictor_run、num_signalled_palette_entries、palette_entry、およびpalette_escape_val_present_flagシンタックス要素のビンとグループ化されない。代わりに、HEVC SCCドラフト3では、num_palette_indices_idcおよびpalette_index_idcシンタックス要素は、ビデオデータの現在ブロック用のデルタ量子化パラメータ(QP)および/またはクロマQPオフセットに関係する1つまたは複数のシンタックス要素(すなわち、cu_qp_delta_palette_abs、cu_qp_delta_palette_sign_flag、cu_chroma_qp_palette_offset_flag、およびcu_chroma_qp_palette_offset_idx)、およびビデオデータの現在ブロック用のパレットのパレットインデックスに転置プロセスが適用されるかどうかを示すシンタックス要素(すなわち、palette_transpose_flag)によって、palette_predictor_run、num_signalled_palette_entries、palette_entry、およびpalette_escape_val_present_flagシンタックス要素から分離される。
【０１３０】
本開示の1つまたは複数の技法によれば、エントロピー符号化ユニット118は、バイパスモードを使用して符号化されるシンタックス要素が連続的に符号化されるような現在パレットを定義するために使用されるシンタックス要素を符号化し得る。たとえば、palette_predictor_run、num_signalled_palette_entries、palette_entry、およびpalette_escape_val_present_flagシンタックス要素のビンとnum_palette_indices_idcおよびpalette_index_idcシンタックス要素のビンとを分離するのではなく、エントロピー符号化ユニット118は、palette_predictor_run、num_signalled_palette_entries、palette_entry、およびpalette_escape_val_present_flag、num_palette_indices_idcおよびpalette_index_idcシンタックス要素のビンが一緒にグループ化されるように、ビデオデータの現在ブロック用のデルタQPおよび/またはクロマQPオフセットに関係する1つまたは複数のシンタックス要素を、ビデオデータの現在ブロック用のパレットのパレットインデックスに転置プロセスが適用されるかどうかを示すシンタックス要素の後で符号化し得る。このようにして、エントロピー符号化ユニット118のCABACスループットは向上し得る。
【０１３１】
図3は、本開示の技法を実施するように構成されている例示的なビデオデコーダ30を示すブロック図である。3は説明のために提供され、広く例示されかつ本開示で説明されるような技法の限定でない。説明のために、本開示は、HEVCコーディングのコンテキストでビデオデコーダ30を説明する。しかしながら、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
【０１３２】
ビデオデコーダ30は、本開示で説明する様々な例によるパレットベースビデオコーディングのための技法を実行するように構成され得るデバイスの一例を表す。たとえば、ビデオデコーダ30は、HEVCコーディングにおけるCUまたはPUなどのビデオデータの様々なブロックを、パレットベースコーディングまたは非パレットベースコーディングのいずれかを使用して選択的に復号するように構成され得る。非パレットベースコーディングモードは、HEVC規格によって規定される様々なコーディングモードなどの、様々なインター予測時間コーディングモードまたはイントラ予測空間コーディングモードを指すことがある。ビデオデコーダ30は、一例では、ピクセル値を示すエントリを有するパレットを生成し、ビデオデータのブロックの少なくともいくつかの位置をパレットの中のエントリに関連付ける情報を受信し、情報に基づいてパレットの中のピクセル値を選択し、選択されたピクセル値に基づいてブロックのピクセル値を再構成するように構成され得る。
【０１３３】
図3の例では、ビデオデコーダ30は、エントロピー復号ユニット150、予測処理ユニット152、逆量子化ユニット154、逆変換処理ユニット156、再構成ユニット158、フィルタユニット160、および復号ピクチャバッファ162を含む。予測処理ユニット152は、動き補償ユニット164およびイントラ予測処理ユニット166を含む。ビデオデコーダ30はまた、本開示で説明するパレットベースコーディング技法の様々な態様を実行するように構成された、パレットベース復号ユニット165を含む。他の例では、ビデオデコーダ30は、より多数の、より少数の、または異なる機能の構成要素を含み得る。
【０１３４】
いくつかの例では、ビデオデコーダ30は、ビデオデータメモリ149をさらに含み得る。ビデオデータメモリ149は、ビデオデコーダ30の構成要素によって復号されるべき、符号化ビデオビットストリームなどのビデオデータを記憶し得る。ビデオデータメモリ149の中に記憶されたビデオデータは、たとえば、チャネル16から、たとえば、カメラなどのローカルビデオソースから、ビデオデータのワイヤードもしくはワイヤレスのネットワーク通信を介して、または物理的なデータ記憶媒体にアクセスすることによって取得され得る。ビデオデータメモリ149は、符号化ビデオビットストリームからの符号化ビデオデータを記憶するコード化ピクチャバッファ(CPB)を形成し得る。CPBは、たとえば、イントラまたはインターコーディングモードでビデオデコーダ30によってビデオデータを復号する際の使用のために、参照ビデオデータを記憶する参照ピクチャメモリであってよい。ビデオデータメモリ149は、同期DRAM(SDRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM（登録商標）)、または他のタイプのメモリデバイスを含む、ダイナミックランダムアクセスメモリ(DRAM)などの様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ149および復号ピクチャバッファ162は、同じメモリデバイスまたは別個のメモリデバイスによって設けられてよい。様々な例では、ビデオデータメモリ149は、ビデオデコーダ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は、ビットストリームから、有意ルーマ係数ブロックの変換係数レベルを抽出し得、変換係数レベルを逆量子化し得、変換係数レベルに変換を適用して変換ブロックを生成し得、変換ブロックに少なくとも部分的に基づいてコーディングブロックを生成し得、表示用にコーディングブロックを出力し得る。
【０１４４】
本開示の様々な例によれば、ビデオデコーダ30は、パレットベースコーディングを実行するように構成され得る。パレットベース復号ユニット165は、たとえば、パレットベース復号を、たとえば、CUまたはPUに対してパレットベース復号モードが選択されたときに実行し得る。たとえば、パレットベース復号ユニット165は、ピクセル値を示すエントリを有するパレットを生成し、ビデオデータのブロックの少なくともいくつかの位置をパレットの中のエントリに関連付ける情報を受信し、情報に基づいてパレットの中のピクセル値を選択し、選択されたピクセル値に基づいてブロックのピクセル値を再構成するように構成され得る。様々な機能がパレットベース復号ユニット165によって実行されるものとして説明されるが、そのような機能の一部または全部は、他の処理ユニット、または異なる処理ユニットの組合せによって実行され得る。
【０１４５】
パレットベース復号ユニット165は、パレットコーディングモード情報を受信し得、パレットコーディングモードがブロックに適用されることをパレットコーディングモード情報が示すとき、上記の動作を実行し得る。パレットコーディングモードがブロックに適用されないことをパレットコーディングモード情報が示すとき、または異なるモードの使用を他のモード情報が示すとき、予測処理ユニット152は、パレットコーディングモードがブロックに適用されないことをパレットコーディングモード情報が示すときに、ビデオデータのブロックを非パレットベースコーディングモード、たとえば、動き補償ユニット164を使用するそのようなHEVCインター予測モード、またはイントラ予測処理ユニット166を使用するイントラ予測コーディングモードを使用して復号する。ビデオデータのブロックは、たとえば、HEVCコーディングプロセスに従って生成されたCUまたはPUであってよい。ビデオデコーダ30は、インター予測時間コーディングモードまたはイントラ予測空間コーディングモードを用いて一部のブロックを復号し得、パレットベースコーディングモードを用いて他のブロックを復号し得る。パレットベースコーディングモードは、複数の異なるパレットベースコーディングモードのうちの1つを備え得、または単一のパレットベースコーディングモードがあり得る。
【０１４６】
パレットベース復号ユニット165によって受信されるパレットコーディングモード情報は、フラグなどのパレットモードシンタックス要素を備え得る。パレットモードシンタックス要素の第1の値は、パレットコーディングモードがブロックに適用されることを示し、パレットモードシンタックス要素の第2の値は、パレットコーディングモードがビデオデータのブロックに適用されないことを示す。パレットベース復号ユニット165は、予測ユニットレベル、コーディングユニットレベル、スライスレベル、またはピクチャレベルのうちの1つもしくは複数においてパレットコーディングモード情報を受信し得るか、またはピクチャパラメータセット(PPS)、シーケンスパラメータセット(SPS)、またはビデオパラメータセット(VPS)のうちの少なくとも1つの中でパレットコーディングモード情報を受信し得る。
【０１４７】
いくつかの例では、パレットベース復号ユニット165は、ビデオデータのブロックに関連する、コーディングブロックのサイズ、フレームタイプ、色空間、カラー成分、フレームサイズ、フレームレート、スケーラブルビデオコーディングにおけるレイヤIDまたはマルチビューコーディングにおけるビューidのうちの1つまたは複数に基づいて、パレットコーディングモード情報を推定し得る。
【０１４８】
パレットベース復号ユニット165はまた、ビデオデータを有するパレットの中のエントリのうちの少なくともいくつかを定義する情報を受信し、受信された情報に少なくとも部分的に基づいてパレットを生成するように構成され得る。パレットのサイズは、固定または可変であってよい。場合によっては、パレットのサイズは可変であり、ビデオデータと一緒にシグナリングされる情報に基づいて調整可能である。シグナリングされる情報は、パレットの中のエントリがパレットの中での最後のエントリであるかどうかを規定し得る。また、場合によっては、パレットは最大サイズを有してよい。
【０１４９】
パレットは、ブロックのルーマ成分およびクロマ成分にとってのピクセル値を示すエントリを含む単一のパレットであってよい。この場合、パレットの中の各エントリは、ルーマ成分および2つのクロマ成分にとってのピクセル値を示すトリプルエントリである。代替として、パレットは、ブロックのルーマ成分のピクセル値を示すエントリを含むルーマパレット、およびブロックのそれぞれのクロマ成分にとってのピクセル値を示すエントリを含むクロマパレットを備える。
【０１５０】
いくつかの例では、パレットベース復号ユニット165は、以前に処理されたデータに基づいてパレットの中のエントリを予測することによって、パレットを生成し得る。以前に処理されたデータは、以前に復号された隣接ブロックに対するパレット、またはパレットからの情報を含み得る。パレットベース復号ユニット165は、パレットの中のエントリが予測されるべきかどうかを示す予測シンタックス要素を受信し得る。予測シンタックス要素は、それぞれ、ルーマ成分およびクロマ成分に対するパレットの中のエントリが予測されるべきかどうかを示す複数の予測シンタックス要素を含み得る。
【０１５１】
パレットベース復号ユニット165は、いくつかの例では、スライスまたはピクチャの中の左の隣接ブロック用または上の隣接ブロック用のパレットの中のエントリに基づいて、パレットの中のエントリのうちの少なくともいくつかを予測し得る。この場合、左の隣接ブロック用または上の隣接ブロック用のいずれかのパレットの中のエントリに基づいて予測される、パレットの中のエントリは、予測のための左の隣接ブロックまたは上の隣接ブロックの選択を示すシンタックス要素に基づいて、パレットベース復号ユニット165によって予測され得る。シンタックス要素は、予測のための左の隣接ブロックまたは上の隣接ブロックの選択を示す値を有するフラグであってよい。
【０１５２】
いくつかの例では、パレットベース復号ユニット165は、パレットの中の少なくともいくつかの選択されたエントリが、エントリごとに、予測されるべきかどうかを示す1つまたは複数の予測シンタックス要素を受信し得、それに応じてエントリを生成し得る。パレットベース復号ユニット165は、エントリのうちのいくつかを予測し得、パレットの中の他のエントリを直接規定する情報を受信し得る。
【０１５３】
パレットベース復号ユニット165によって受信され、ビデオデータのブロックの少なくともいくつかの位置をパレットの中のエントリに関連付ける情報は、ブロックの中の位置のうちの少なくともいくつかに対するパレットインデックス値を含むマップ情報を備えてよく、パレットインデックス値の各々は、パレットの中のエントリのうちの1つに対応する。マップ情報は、同じパレットインデックス値を有するブロックの中のいくつかの連続した位置を各々が示す1つまたは複数のランシンタックス要素を含み得る。
【０１５４】
いくつかの例では、パレットベース復号ユニット165は、ブロックの中の位置のラインに対するパレットエントリが、ブロックの中の位置の別のラインに対するパレットエントリからそれによってコピーされる、ラインコピーを示す情報を受信し得る。パレットベース復号ユニット165は、ラインコピーを実行してブロックの様々な位置に対するパレットの中のエントリを決定するためにこの情報を使用し得る。位置のラインは、ブロックの位置の行、行の一部分、列、または列の一部分を備え得る。
【０１５５】
パレットベース復号ユニット165は、ブロックの1つまたは複数の位置にとってのピクセル値を受信すること、およびパレットの中のエントリにピクセル値を追加してパレットの少なくとも一部分をオンザフライで動的に生成することによって、部分的にパレットを生成し得る。ピクセル値を追加することは、エントリの初期セットを備える初期パレットに、またはエントリの初期セットを含まない空のパレットに、ピクセル値を追加することを備え得る。いくつかの例では、追加することは、エントリの初期セットを備える初期パレットに新たなエントリを追加するかもしくは初期パレットの中の既存のエントリを満たすように、ピクセル値を追加すること、または初期パレットの中のエントリのピクセル値を交換もしくは変更することを備える。
【０１５６】
いくつかの例では、パレットは、復号プロセスが不可逆であるように、ブロックの中の位置のうちの1つに対するパレットの中から選択されたピクセル値が、ブロックの中の位置の実際のピクセル値と異なる量子化パレットであってよい。たとえば、異なる実際のピクセル値を有する2つの異なる位置に対するパレットの中から、同じピクセル値が選択されてよい。
【０１５７】
上記で説明したように、パレットベース復号ユニット165は、ビデオデータの現在ブロック用のパレットを定義する情報を受信し得る。たとえば、パレットベース復号ユニット165は、エントロピー復号ユニット150から複数のシンタックス要素を受信し得る。いくつかの例では、エントロピー復号ユニット150は、シンタックステーブルに従ってコード化ビデオビットストリームから複数のシンタックス要素を復号し得る。一例として、エントロピー復号ユニット150は、Table 1(表1)において上記に転載されているHEVC SCCドラフト3のパレットシンタックステーブルに従ってコード化ビデオビットストリームから複数のシンタックス要素を復号し得る。しかしながら、上記で説明したように、HEVC SCCドラフト3におけるシンタックス要素の配置は最適でない場合がある。詳細には、HEVC SCCドラフト3におけるシンタックス要素の配置は、一緒にグループ化されるバイパスモードコード化シンタックス要素の数を最大にせず、そのことはCABACスループットを下げる場合がある。
【０１５８】
本開示の1つまたは複数の技法によれば、エントロピー復号ユニット150は、追加のバイパスモードコード化シンタックス要素が一緒にグループ化されるような現在パレットを定義するために使用されるシンタックス要素を復号し得る。たとえば、palette_predictor_run、num_signalled_palette_entries、palette_entry、およびpalette_escape_val_present_flagシンタックス要素のビンとnum_palette_indices_idcおよびpalette_index_idcシンタックス要素のビンとを分離するのではなく、エントロピー復号ユニット150は、palette_predictor_run、num_signalled_palette_entries、palette_entry、およびpalette_escape_val_present_flag、num_palette_indices_idcおよびpalette_index_idcシンタックス要素のビンが一緒にグループ化されるように、ビデオデータの現在ブロック用のデルタQPおよび/またはクロマQPオフセットに関係する1つまたは複数のシンタックス要素を、ビデオデータの現在ブロック用のパレットのパレットインデックスに転置プロセスが適用されるかどうかを示すシンタックス要素の後で復号し得る。一例として、エントロピー復号ユニット150は、現在パレットを定義するために使用されるシンタックス要素を、Table 4(表4)において上記に示した順序で復号し得る。別の例として、エントロピー復号ユニット150は、現在パレットを定義するために使用されるシンタックス要素を、Table 5(表5)において上記に示した順序で復号し得る。このようにして、エントロピー復号ユニット150のCABACスループットは向上し得る。
【０１５９】
図4は、本開示の技法に一致する、ビデオデータをコーディングするためのパレットを決定することの一例を示す概念図である。図4の例は、第1のパレット184に関連付けられている第1のコーディングユニット(CU)180、および第2のパレット192に関連付けられている第2のCU188を有するピクチャ178を含む。以下でより詳細に説明するように、本開示の技法によれば、第2のパレット192は第1のパレット184に基づく。ピクチャ178はまた、イントラ予測コーディングモードを用いてコーディングされたブロック196、およびインター予測コーディングモードを用いてコーディングされたブロック200を含む。
【０１６０】
図4の技法は、説明のために、ビデオエンコーダ20(図1および図2)およびビデオデコーダ30(図1および図3)のコンテキストにおいて、HEVC規格に関して説明される。しかしながら、本開示の技法はこのように限定されず、他のビデオコーディングプロセッサおよび/またはデバイスによって、他のビデオコーディングプロセスおよび/または規格において適用され得ることを理解されたい。
【０１６１】
概して、パレットは、図4の例における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値を表し得る。別の例では、ビデオエンコーダ20は、CUのルーマ(Y)成分用のパレットと、CUの2つの成分(U、V)用の別のパレットとを符号化し得る。この例では、YパレットのエントリがCUのピクセルのY値を表し得、U-VパレットのエントリがCUのピクセルのU-V値ペアを表し得る。
【０１６２】
他の例では、ビデオエンコーダ20は、CUのすべてのカラー成分用の単一のパレットを符号化し得る。この例では、ビデオエンコーダ20は、Yi、Ui、およびViを含むトリプル値であるi番目のエントリを有するパレットを符号化し得る。この場合、パレットは、ピクセルの成分の各々に対する値を含む。したがって、複数の個々のパレットを有するパレットのセットとしてのパレット184および192の表現は、一例にすぎず限定を意図しない。
【０１６３】
図4の例では、第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によって符号化ビデオデータビットストリームの中で送信される。概して、1つまたは複数のパレットが、CUごとに送信されてよく、または異なるCUの間で共有されてもよい。
【０１６４】
ビデオエンコーダ20およびビデオデコーダ30は、第1のパレット184に基づいて第2のパレット192を決定し得る。たとえば、ビデオエンコーダ20は、CU用のパレットが、(空間的に、または走査順序に基づいて)隣接するCUまたは因果的ネイバーの最も頻度が高いサンプルなどの1つまたは複数の他のCUに関連する1つまたは複数のパレットから予測されるかどうかを示すために、CU(一例として、第2のCU188を含む)ごとにpred_palette_flagを符号化し得る。たとえば、そのようなフラグの値が1に等しいとき、第2のCU188に対する第2のパレット192が1つまたは複数のすでに復号されたパレットから予測されるとビデオデコーダ30は決定し得、したがって、第2のCU188に対する新たなパレットは、pred_palette_flagを含むビットストリームに含まれない。そのようなフラグが0に等しいとき、第2のCU188に対するパレット192が新たなパレットとしてビットストリームに含まれるとビデオデコーダ30は決定し得る。いくつかの例では、pred_palette_flagは、CUの異なるカラー成分ごとに別個にコーディングされ得る(たとえば、YUVビデオのCUに対して、3つのフラグ、すなわち、Yにとっての1つ、Uにとっての1つ、およびVにとっての1つ)。他の例では、CUのすべてのカラー成分に対して単一のpred_palette_flagがコーディングされ得る。
【０１６５】
上記の例では、現在ブロック用のパレットのエントリのうちのいずれかが予測されているかどうかを示すために、pred_palette_flagはCUごとにシグナリングされる。いくつかの例では、1つまたは複数のシンタックス要素が、エントリごとにシグナリングされ得る。すなわち、パレット予測子のエントリごとに、そのエントリが現在パレットの中に存在するかどうかを示すためにフラグがシグナリングされ得る。上述のように、パレットエントリが予測されていない場合、パレットエントリは、明示的にシグナリングされ得る。
【０１６６】
第2のパレット192を第1のパレット184に対して決定する(たとえば、pred_palette_flagが1に等しい)とき、ビデオエンコーダ20および/またはビデオデコーダ30は、予測パレット、この例では第1のパレット184がそこから決定される1つまたは複数のブロックの位置を特定し得る。予測パレットは、現在コーディングされているCU(たとえば、(空間的に、または走査順序に基づいて)隣接するCU、または因果的ネイバーの最も頻度が高いサンプル)、すなわち、第2のCU188の、1つまたは複数の隣接CUに関連し得る。1つまたは複数の隣接CUのパレットは、予測子パレットに関連し得る。いくつかの例では、図4に示す例などの、ビデオエンコーダ20および/またはビデオデコーダ30は、第2のCU188用の予測パレットを決定するとき、左の隣接CU、すなわち第1のCU180の位置を特定し得る。他の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、上のCU、すなわちCU196などの、第2のCU188に対して他の位置における1つまたは複数のCUの位置を特定し得る。
【０１６７】
ビデオエンコーダ20および/またはビデオデコーダ30は、階層に基づくパレット予測のためにCUを決定し得る。たとえば、ビデオエンコーダ20および/またはビデオデコーダ30は、パレット予測のために、最初に左の隣接CU、すなわち第1のCU180を識別し得る。左の隣接CUが予測のために利用可能でない(たとえば、左の隣接CUが、イントラ予測モードもしくはイントラ予測モードなどのパレットベースコーディングモード以外のモードを用いてコーディングされているか、またはピクチャもしくはスライスの一番左のエッジに位置している)場合、ビデオエンコーダ20および/またはビデオデコーダ30は、上の隣接CU、すなわちCU196を識別し得る。ビデオエンコーダ20および/またはビデオデコーダ30は、パレット予測のために利用可能なパレットを有するCUの位置を特定するまで、利用可能なCUをロケーションの所定の順序に従って探索し続けてよい。いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、複数のブロック、および/または隣接ブロックの再構成されたサンプルに基づいて予測パレットを決定し得る。
【０１６８】
図4の例は単一のCU、すなわち第1のCU180からの予測パレットとして第1のパレット184を示すが、他の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、隣接CUの組合せから予測のためのパレットの位置を特定し得る。たとえば、ビデオエンコーダ20および/またはビデオデコーダは、1つまたは複数の式、関数、規則などを適用して、複数の隣接CUのうちの1つまたはその組合せのパレットに基づいてパレットを生成し得る。
【０１６９】
さらに他の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、パレット予測のためのいくつかの潜在的な候補を含む候補リストを構成し得る。リストの中の重複した候補を除去するために、ビデオエンコーダ20とビデオデコーダ30の両方においてプルーニングプロセスが適用され得る。そのような例では、ビデオエンコーダ20は、パレット予測のために使用される現在CUがその中から選択される(たとえば、パレットをコピーする)リストの中の候補CUを示すために、候補リストへのインデックスを符号化し得る。ビデオデコーダ30は、同様の方法で候補リストを構成し得、インデックスを復号し得、復号されたインデックスを、現在CUと一緒に使用するための対応するCUのパレットを選択するために使用し得る。
【０１７０】
一例では、例示のために、ビデオエンコーダ20およびビデオデコーダ30は、現在コーディングされているCUの上に位置する1つのCUと、現在コーディングされているCUの左に位置する1つのCUとを含む、候補リストを構成し得る。この例では、ビデオエンコーダ20は、候補選択を示すために、1つまたは複数のシンタックス要素を符号化し得る。たとえば、ビデオエンコーダ20は、現在CU用のパレットが現在CUの左に位置するCUからコピーされていることを示すために、0としての値を有するフラグを符号化し得る。ビデオエンコーダ20は、現在CU用のパレットが現在CUの上に位置するCUからコピーされていることを示すために、1としての値を有するフラグを符号化し得る。ビデオデコーダ30は、そのフラグを復号し、パレット予測のために適切なCUを選択する。
【０１７１】
さらに他の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、1つまたは複数の他のパレットに含まれるサンプル値が1つまたは複数の隣接CUに出現する頻度に基づいて、現在コーディングされているCU用のパレットを決定する。たとえば、ビデオエンコーダ20および/またはビデオデコーダ30は、所定の数のCUのコーディングの間に最も頻繁に使用されるインデックス値に関連するカラーを追跡し得る。ビデオエンコーダ20および/またはビデオデコーダ30は、最も頻繁に使用されるカラーを、現在コーディングされているCU用のパレットに含め得る。
【０１７２】
いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、エントリ方向ベースのパレット予測を実行し得る。たとえば、ビデオエンコーダ20は、予測パレットのエントリごとに、それぞれの予測パレットエントリが現在パレットにおいて再使用されるかどうか(たとえば、別のCUのパレットの中のピクセル値が現在パレットによって再使用されるかどうか)を示す、1つまたは複数のフラグなどの1つまたは複数のシンタックス要素を符号化し得る。この例では、ビデオエンコーダ20は、エントリが予測パレット(たとえば、隣接CUに関連するパレットの対応するエントリ)から予測された値であるとき、所与のエントリに対して1に等しい値を有するフラグを符号化し得る。ビデオエンコーダ20は、特定のエントリが別のCUのパレットから予測されていないことを示すために、特定のエントリに対して0に等しい値を有するフラグを符号化し得る。この例では、ビデオエンコーダ20はまた、予測されていないパレットエントリの値を示す追加のデータを符号化し得る。
【０１７３】
図4の例では、第2のパレット192は、それぞれ、エントリインデックス値1、エントリインデックス値2、エントリインデックス値3、およびエントリインデックス4を有する4つのエントリ208〜214を含む。エントリ208〜214は、それぞれ、ピクセル値A、ピクセル値B、ピクセル値C、およびピクセル値Dを含むピクセル値に、インデックス値を関連付ける。ビデオエンコーダ20および/またはビデオデコーダ30は、上記で説明した技法のいずれかを使用して、第2のCU188をコーディングするために、パレット予測のために第1のCU180の位置を特定するとともに第1のパレット184のエントリ1〜3を第2のパレット192のエントリ1〜3にコピーし得る。このようにして、ビデオエンコーダ20および/またはビデオデコーダ30は、第1のパレット184に基づいて第2のパレット192を決定し得る。加えて、ビデオエンコーダ20および/またはビデオデコーダ30は、第2のパレット192とともに含められるべきエントリ4のためのデータをコーディングし得る。そのような情報は、予測子パレットから予測されていないパレットエントリの数、およびそれらのパレットエントリに対応するピクセル値を含み得る。
【０１７４】
いくつかの例では、本開示の態様によれば、第2のパレット192などのパレットが完全に予測パレット(第1のパレット184として図4に示すが、1つまたは複数のブロックからのエントリからなることがある)から予測されているかどうか、または第2のパレット192の特定のエントリが予測されているかどうかを、1つまたは複数のシンタックス要素が示し得る。たとえば、エントリのすべてが予測されているかどうかを、最初のシンタックス要素が示し得る。エントリのすべてが予測されているとは限らないことを最初のシンタックス要素が示す場合(たとえば、0としての値を有するフラグ)、第2のパレット192のどのエントリが予測パレットから予測されているのかを、1つまたは複数の追加のシンタックス要素が示し得る。
【０１７５】
本開示のいくつかの態様によれば、パレット予測に関連するいくつかの情報が、コーディングされているデータの1つまたは複数の特性から推定され得る。すなわち、ビデオエンコーダ20がシンタックス要素を符号化する(また、ビデオデコーダ30がそのようなシンタックス要素を復号する)のではなく、ビデオエンコーダ20およびビデオデコーダ30は、コーディングされているデータの1つまたは複数の特性に基づいてパレット予測を実行し得る。
【０１７６】
図5は、本開示の技法に一致する、ピクセルのブロック用のパレットへのインデックスを決定することの一例を示す概念図である。たとえば、図5は、インデックス値に関連するピクセルのそれぞれの位置をパレット244のエントリに関連付けるインデックス値(値1、2、および3)のマップ240を含む。パレット244は、図4に関して上記で説明した第1のパレット184および第2のパレット192と同様の方法で決定され得る。
【０１７７】
再び、図5の技法は、説明のために、ビデオエンコーダ20(図1および図2)およびビデオデコーダ30(図1および図3)のコンテキストにおいて、HEVCビデオコーディング規格に関して説明される。しかしながら、本開示の技法はこのように限定されず、他のビデオコーディングプロセッサおよび/またはデバイスによって、他のビデオコーディングプロセスおよび/または規格において適用され得ることを理解されたい。
【０１７８】
マップ240は図5の例ではピクセル位置ごとにインデックス値を含むように示されるが、他の例では、すべてのピクセル位置が、ピクセル値をパレット244のエントリに関連付けるインデックス値に関連し得るとは限らないことを理解されたい。すなわち、上述のように、いくつかの例では、ピクセル値がパレット244に含まれない場合、マップ240の中の位置に対する実際のピクセル値(または、その量子化バージョン)の表示をビデオエンコーダ20は符号化し得る(また、ビデオデコーダ30は符号化ビットストリームから取得し得る)。
【０１７９】
いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、どのピクセル位置がインデックス値に関連するのかを示す追加のマップをコーディングするように構成され得る。たとえば、マップの中の(i,j)エントリがCUの(i,j)位置に対応すると想定する。ビデオエンコーダ20は、マップ(すなわち、各ピクセル位置)のエントリごとに、関連するインデックス値をエントリが有するかどうかを示す1つまたは複数のシンタックス要素を符号化し得る。たとえば、ビデオエンコーダ20は、CUの中の(i,j)ロケーションにおけるピクセル値がパレット244の中の値のうちの1つであることを示すために、1としての値を有するフラグを符号化し得る。ビデオエンコーダ20はまた、そのような一例では、パレットの中のピクセル値を示すとともにビデオデコーダがピクセル値を再構成することを可能にするために、パレットインデックス(図5の例では値1〜3として示される)を符号化し得る。パレット244が単一のエントリおよび関連するピクセル値を含む事例では、ビデオエンコーダ20は、インデックス値のシグナリングをスキップ(skip)してよい。ビデオエンコーダ20は、CUの中の(i,j)ロケーションにおけるピクセル値がパレット244の中の値のうちの1つでないことを示すために、0としての値を有するようにフラグを符号化し得る。この例では、ビデオエンコーダ20はまた、ピクセル値を再構成する際にビデオデコーダ30によって使用するためのピクセル値の表示を符号化し得る。いくつかの事例では、ピクセル値は、不可逆方式でコーディングされてよい。
【０１８０】
CUのある位置の中のピクセルの値は、CUの他の位置における1つまたは複数の他のピクセルの値の表示を提供し得る。たとえば、CUの隣接ピクセル位置が、同じピクセル値を有するか、または(2つ以上のピクセル値が単一のインデックス値にマッピングされ得る不可逆コーディングの場合)同じインデックス値にマッピングされ得る、比較的高い確率があり得る。
【０１８１】
したがって、ビデオエンコーダ20は、同じピクセル値またはインデックス値を有する所与の走査順序でのいくつかの連続するピクセルまたはインデックス値を示す、1つまたは複数のシンタックス要素を符号化し得る。上述のように、同様の値のピクセルまたはインデックス値のストリングは本明細書ではランと呼ばれることがある。例示のための一例では、所与の走査順序での2つの連続するピクセルまたはインデックスが異なる値を有する場合、ランは0に等しい。所与の走査順序での2つの連続するピクセルまたはインデックスが同じ値を有するが、走査順序での第3のピクセルまたはインデックスが異なる値を有する場合、ランは1に等しい。同じ値を有する3つの連続するインデックスまたはピクセルの場合、ランは2であり、以下同様である。ビデオデコーダ30は、ランを示すシンタックス要素を符号化ビットストリームから取得し得、そのデータを使用して、同じピクセルまたはインデックス値を有する連続するロケーションの数を決定し得る。
【０１８２】
ランの中に含まれ得るインデックスの数は、走査順序によって影響を及ぼされることがある。たとえば、マップ240のライン266、268、および270のラスタ走査を検討する。水平で左から右への走査方向(ラスタ走査順序などの)を想定すると、行266は、「1」という3つのインデックス値、「2」という2つのインデックス値、および「3」という3つのインデックス値を含む。行268は、「1」という5つのインデックス値および「3」という3つのインデックス値を含む。この例では、行266に対して、ビデオエンコーダ20は、行266の最初の値(行の一番左の値)がランとして2を伴う1であり、ランとして1を伴う2というインデックス値が後続し、ランとして2を伴う3というインデックス値が後続することを示すシンタックス要素を符号化し得る。ラスタ走査に続いて、ビデオエンコーダ20は、次いで、一番左の値を用いて行268をコーディングし始めてよい。たとえば、ビデオエンコーダ20は、行268の最初の値がランとして4を伴う1であり、ランとして2を伴う3というインデックス値が後続することを示すシンタックス要素を符号化し得る。ビデオエンコーダ20は、同様にしてライン270を続けてよい。
【０１８３】
したがって、ラスタ走査順序において、現在のラインの最初のインデックスは、前のラインの最後のインデックスの直後に走査され得る。しかしながら、いくつかの例では、ラスタ走査順序でインデックスを走査することが望ましくない場合がある。たとえば、ビデオデータのブロックの第1のライン(たとえば、行266)が、ビデオデータのブロックの第1のエッジに隣接する最初のピクセル(たとえば、インデックス値が1の、行266の一番左のピクセル)、およびビデオデータのブロックの第2のエッジに隣接する最後のピクセル(たとえば、インデックス値が3の、行266の一番右のピクセル)を含み、ビデオデータのブロックの第2のライン(たとえば、行268)が、ビデオデータのブロックの第1のエッジに隣接する最初のピクセル(たとえば、インデックス値が1の、行268の一番左のピクセル)、およびビデオデータのブロックの第2のエッジに隣接する最後のピクセル(たとえば、インデックス値が3の、行268の一番右のピクセル)を含み、第1のラインの最後のピクセルが第2のラインの最後のピクセルに隣接し、第1のエッジおよび第2のエッジが平行であり、第1のラインの中の最後のピクセルが、第2のラインの中の最後のピクセルとインデックス値が同じであるが、第2のラインの中の最初のピクセルとインデックス値が異なる場合、ラスタ走査順序でインデックスを走査することが望ましくない場合がある。この状況(すなわち、第1のラインの中の最後のピクセルのインデックス値が、第2のラインの中の最後のピクセルと同じであるが第2のラインの中の最初のピクセルとは異なる場合)は、他のタイプのビデオコンテンツよりもコンピュータ生成されたスクリーンコンテンツにおいてより頻繁に発生し得る。
【０１８４】
いくつかの例では、ビデオエンコーダ20は、マップのインデックスを符号化するときにスネーク走査順序を利用してよい。たとえば、ビデオエンコーダ20は、第1のラインの最後のピクセルの直後に第2のラインの最後のピクセルを走査してよい。このようにして、ビデオエンコーダ20は、ランレングスコーディングの効率を改善し得る。
【０１８５】
たとえば、ラスタ走査順序を使用するのではなく、ビデオエンコーダ20は、マップ240の値をコーディングするためにスネーク走査順序を使用してよい。例示のための一例では、マップ240の行266、268、および270を検討する。スネーク走査順序(scan order)(スネーク走査順序(scanning order)などの)を使用すると、ビデオエンコーダ20は、行266の左の位置から始めて行266の一番右の位置へ進み、行268の一番左の位置へ下方に移動し、行268の一番左の位置へ進み、行270の一番左の位置へ下方に移動して、マップ240の値をコーディングし得る。たとえば、ビデオエンコーダ20は、行266の最初の位置が1であること、および走査方向での2つの連続したエントリの次のランが行266の最初の位置と同じであることを示す、1つまたは複数のシンタックス要素を符号化し得る。
【０１８６】
ビデオエンコーダ20は、行266の次の位置(すなわち、左から右へ第4の位置)が2であること、および走査方向での次の連続したエントリが行266の第4の位置と同じであることを示す、1つまたは複数のシンタックス要素を符号化し得る。ビデオエンコーダ20は、行266の次の位置(すなわち、第6の位置)が3であること、および走査方向での5つの連続したエントリの次のランが行266の第6の位置と同じであること示す、1つまたは複数のシンタックス要素を符号化し得る。ビデオエンコーダ20は、行268の走査方向での次の位置(すなわち、右から左へ行268の第4の位置)が1であること、および走査方向での9つの連続したエントリの次のランが行268の第4の位置と同じであること示す、1つまたは複数のシンタックス要素を符号化し得る。
【０１８７】
このようにして、スネーク走査順序を使用することによって、ビデオエンコーダ20は、長さがもっと長いランを符号化し得、そのことは、コーディング効率を改善し得る。たとえば、ラスタ走査を使用すると、行266の最終のラン(インデックス値3に対する)は2に等しい。しかしながら、スネーク走査を使用すると、行266の最終のランは、行268の中へ延び5に等しい。
【０１８８】
ビデオデコーダ30は、上記で説明したシンタックス要素を受信し得、行266、268、および270を再構成し得る。たとえば、ビデオデコーダ30は、現在コーディングされているマップ240の位置に対するインデックス値を示すデータを、符号化ビットストリームから取得し得る。ビデオデコーダ30はまた、同じインデックス値を有する、走査順序での連続した位置の数を示すデータを取得し得る。
【０１８９】
図6は、本開示の1つまたは複数の技法による、パレットモードを使用してビデオデータのブロックを復号するための例示的なプロセスを示すフローチャートである。図6の技法は、図1および図3に示すビデオデコーダ30などの、ビデオデコーダによって実行され得る。説明のために、図6の技法が図1および図3のビデオデコーダ30のコンテキスト内で説明されるが、ビデオデコーダ30の構成と異なる構成を有するビデオデコーダが図6の技法を実行してよい。
【０１９０】
上記で説明したように、一緒にグループ化されるシンタックス要素のバイパスモードコード化ビンの数を最大にすることが望ましくあり得る。本開示の1つまたは複数の技法によれば、ビデオデコーダ30は、コード化ビデオビットストリームから、かつバイパスモードを使用して、ビデオデータの現在ブロック用のパレットに対するシンタックス要素のグループを復号し得る(602)。たとえば、ビデオデコーダ30のエントロピー復号ユニット150は、予測子パレットからのエントリが現在パレットの中で再使用されるかどうかを示す、アレイの中の非0のエントリに先行する0の数を示す1つまたは複数のシンタックス要素(たとえば、1つまたは複数のpalette_predictor_runシンタックス要素)、明示的にシグナリングされる、現在パレットの中のエントリの数を示すシンタックス要素(たとえば、num_signalled_palette_entriesシンタックス要素)、各々が現在パレットの中のエントリにおけるコンポーネントの値を示す1つまたは複数のシンタックス要素(たとえば、1つまたは複数のpalette_entryシンタックス要素)、ビデオデータの現在ブロックが少なくとも1つのエスケープコード化サンプルを含むかどうかを示すシンタックス要素(たとえば、palette_escape_val_present_flagシンタックス要素)、明示的にシグナリングされるかまたは推定される、現在パレットの中のエントリの数を示すシンタックス要素(たとえば、num_palette_indices_idcシンタックス要素)、および現在パレットエントリのアレイの中のインデックスを示す1つまたは複数のシンタックス要素(たとえば、1つまたは複数のpalette_index_idcシンタックス要素)のビンを、バイパスモードを使用して復号し得る。いくつかの例では、バイパスコード化シンタックス要素のグループを復号するために、ビデオデコーダ30は、いかなる非バイパスコード化ビンも復号することなく、シンタックス要素のグループの中に含まれるシンタックス要素を連続的に復号し得る。上記で説明したように、多数のバイパスコード化ビン/シンタックス要素を一緒にグループ化することは、ビデオデコーダ30のCABACスループットを改善し得る。詳細には、バイパスコード化シンタックス要素のグループ化は、CABACエンジンを始動/停止/再開するのをビデオデコーダ30が回避することを可能にし得る。対照的に、バイパスコード化シンタックス要素がグループ化されないとき、ビデオデコーダ30は、絶えず第1のコンテキストを用いて非バイパスコード化ビンを復号するためにCABACエンジンを始動し、バイパスコード化ビンを復号するためにCABACエンジンを停止し、第1のコンテキストを用いて別の非バイパスコード化ビンを復号するためにCABACエンジンを始動するなどしなければならないことがある。上記で説明したように、反復されたCABACエンジンのトグリングは、CABACエンジンのスループットを下げることがある。
【０１９１】
ビデオデコーダ30は、コンテキストを用いたCABACを使用して、かつシンタックス要素のグループの後である、コード化ビデオビットストリームの中の位置において、ビデオデータの現在ブロック用のパレットのパレットインデックスに転置プロセスが適用されるかどうかを示すシンタックス要素を復号し得る(604)。たとえば、ビデオデコーダ30のエントロピー復号ユニット150は、palette_transpose_flagシンタックス要素のビンを、コンテキストを用いたCABACを使用して復号し得る。
【０１９２】
ビデオデコーダ30は、コンテキストを用いたCABACを使用して、かつビデオデータの現在ブロック用のパレットのパレットインデックスに転置プロセスが適用されるかどうかを示すシンタックス要素の後である、コード化ビデオビットストリームの中の位置において、ビデオデータの現在ブロック用のデルタ量子化パラメータ(QP)および/またはクロマQPオフセットに関係する1つまたは複数のシンタックス要素を復号し得る(606)。たとえば、ビデオデコーダ30のエントロピー復号ユニット150は、ビデオデータの現在ブロック用のQP(たとえば、ルーマQP)と現在ブロック用のQPの予測子との間の差分の絶対値を規定するシンタックス要素(たとえば、cu_qp_delta_abs)、ビデオデータの現在ブロック用のQPと現在ブロック用のQPの予測子との間の差分の符号を規定するシンタックス要素(たとえば、cu_qp_delta_sign_flag)、現在ブロック用のクロマQPを決定するために1つまたは複数のオフセットリストの中のエントリが現在ブロック用のルーマQPに追加されるかどうかを示すシンタックス要素(たとえば、cu_chroma_qp_offset_flag)、および現在ブロック用のクロマQPを決定するために現在ブロック用のルーマQPに追加される、1つまたは複数のオフセットリストの各々の中のエントリのインデックスを規定するシンタックス要素(たとえば、cu_chroma_qp_offset_idx)のビンを、1つまたは複数のコンテキストを用いたCABACを使用して復号し得る。
【０１９３】
いくつかの例では、ビデオデコーダ30は、ビデオデータの現在ブロック用のデルタQPおよび/またはクロマQPオフセットに関係する1つまたは複数のシンタックス要素を、バイパスモードを使用して復号されたシンタックス要素のグループのシンタックス要素の値に基づいて復号し得る。一例として、ビデオデータの現在ブロックが少なくとも1つのエスケープコード化サンプルを含むかどうかを示すシンタックス要素のグループのシンタックス要素が、ビデオデータの現在ブロックが少なくとも1つのエスケープサンプルを含むことを示す場合、ビデオデコーダ30は、ビデオデータの現在ブロック用のデルタQPおよび/またはクロマQPオフセットに関係する1つまたは複数のシンタックス要素を復号し得る。別の例として、ビデオデータの現在ブロックが少なくとも1つのエスケープコード化サンプルを含むかどうかを示すシンタックス要素のグループのシンタックス要素が、ビデオデータの現在ブロックが少なくとも1つのエスケープサンプルを含まないことを示す場合、ビデオデコーダ30は、ビデオデータの現在ブロック用のデルタQPおよび/またはクロマQPオフセットに関係する1つまたは複数のシンタックス要素を復号しなくてよい。
【０１９４】
ビデオデコーダ30は、シンタックス要素のグループ、およびビデオデータの現在ブロック用のパレットのパレットインデックスに転置プロセスが適用されるかどうかを示すシンタックス要素に基づいて、ビデオデータの現在ブロック用のパレットを生成し得(608)、生成されたパレット、ならびにビデオデータの現在ブロック用のデルタQPおよび/またはクロマQPオフセットに関係する1つまたは複数のシンタックス要素に基づいて、ビデオデータの現在ブロックを復号し得る(610)。たとえば、パレットベース復号ユニット165は、ピクセル値を示すエントリを有するパレットを生成し得、ビデオデータの現在ブロックの少なくともいくつかの位置をパレットの中のエントリに関連付ける情報を受信し得、情報に基づいてパレットの中のピクセル値を選択し得、選択されたピクセル値に基づいてブロックのピクセル値を再構成し得る。
【０１９５】
図7は、本開示の1つまたは複数の技法による、パレットモードを使用してビデオデータのブロックを符号化するための例示的なプロセスを示すフローチャートである。図7の技法は、図1および図2に示すビデオエンコーダ20などの、ビデオエンコーダによって実行され得る。説明のために、図7の技法は、図1および図2のビデオエンコーダ20のコンテキスト内で説明されるが、ビデオエンコーダ20の構成とは異なる構成を有するビデオエンコーダが図7の技法を実行してよい。
【０１９６】
上記で説明したように、一緒にグループ化されるシンタックス要素のバイパスモードコード化ビンの数を最大にすることが望ましくあり得る。本開示の1つまたは複数の技法によれば、ビデオエンコーダ20は、コード化ビデオビットストリームの中で、かつバイパスモードを使用して、ビデオデータの現在ブロック用のパレットに対するシンタックス要素のグループを符号化し得る(702)。たとえば、ビデオエンコーダ20のエントロピー符号化ユニット118は、予測子パレットからのエントリが現在パレットの中で再使用されるかどうかを示す、アレイの中の非0のエントリに先行する0の数を示す1つまたは複数のシンタックス要素(たとえば、1つまたは複数のpalette_predictor_runシンタックス要素)、明示的にシグナリングされる、現在パレットの中のエントリの数を示すシンタックス要素(たとえば、num_signalled_palette_entriesシンタックス要素)、各々が現在パレットの中のエントリにおけるコンポーネントの値を示す1つまたは複数のシンタックス要素(たとえば、1つまたは複数のpalette_entryシンタックス要素)、ビデオデータの現在ブロックが少なくとも1つのエスケープコード化サンプルを含むかどうかを示すシンタックス要素(たとえば、palette_escape_val_present_flagシンタックス要素)、明示的にシグナリングされるかまたは推定される、現在パレットの中のエントリの数を示すシンタックス要素(たとえば、num_palette_indices_idcまたはnum_palette_indices_minus1シンタックス要素)、および現在パレットエントリのアレイの中のインデックスを示す1つまたは複数のシンタックス要素(たとえば、1つまたは複数のpalette_index_idcシンタックス要素)のビンを、バイパスモードを使用して符号化し得る。
【０１９７】
ビデオエンコーダ20は、コンテキストを用いたCABACを使用して、かつシンタックス要素のグループの後である、コード化ビデオビットストリームの中の位置において、ビデオデータの現在ブロック用のパレットのパレットインデックスに転置プロセスが適用されるかどうかを示すシンタックス要素を符号化し得る(704)。たとえば、ビデオエンコーダ20のエントロピー符号化ユニット118は、palette_transpose_flagシンタックス要素のビンを、コンテキストを用いたCABACを使用して符号化し得る。
【０１９８】
ビデオエンコーダ20は、コンテキストを用いたCABACを使用して、かつビデオデータの現在ブロック用のパレットのパレットインデックスに転置プロセスが適用されるかどうかを示すシンタックス要素の後である、コード化ビデオビットストリームの中の位置において、ビデオデータの現在ブロック用のデルタ量子化パラメータ(QP)および/またはクロマQPオフセットに関係する1つまたは複数のシンタックス要素を符号化し得る(706)。たとえば、ビデオエンコーダ20のエントロピー符号化ユニット118は、ビデオデータの現在ブロック用のルーマQPと現在ブロック用のルーマQPの予測子との間の差分の絶対値を規定するシンタックス要素(たとえば、cu_qp_delta_abs)、ビデオデータの現在ブロック用のルーマQPと現在ブロック用のルーマQPの予測子との間の差分の符号を規定するシンタックス要素(たとえば、cu_qp_delta_sign_flag)、現在ブロック用のクロマQPを決定するために1つまたは複数のオフセットリストの中のエントリが現在ブロック用のルーマQPに追加されるかどうかを示すシンタックス要素(たとえば、cu_chroma_qp_offset_flag)、および現在ブロック用のクロマQPを決定するために現在ブロック用のルーマQPに追加される、1つまたは複数のオフセットリストの各々の中のエントリのインデックスを規定するシンタックス要素(たとえば、cu_chroma_qp_offset_idx)のビンを、1つまたは複数のコンテキストを用いたCABACを使用して符号化し得る。
【０１９９】
いくつかの例では、ビデオエンコーダ20は、ビデオデータの現在ブロック用のデルタQPおよび/またはクロマQPオフセットに関係する1つまたは複数のシンタックス要素を、バイパスモードを使用して符号化されたシンタックス要素のグループのシンタックス要素の値に基づいて符号化し得る。一例として、ビデオデータの現在ブロックが少なくとも1つのエスケープコード化サンプルを含むかどうかを示すシンタックス要素のグループのシンタックス要素が、ビデオデータの現在ブロックが少なくとも1つのエスケープサンプルを含むことを示す場合、ビデオエンコーダ20は、ビデオデータの現在ブロック用のデルタQPおよび/またはクロマQPオフセットに関係する1つまたは複数のシンタックス要素を符号化し得る。別の例として、ビデオデータの現在ブロックが少なくとも1つのエスケープコード化サンプルを含むかどうかを示すシンタックス要素のグループのシンタックス要素が、ビデオデータの現在ブロックが少なくとも1つのエスケープサンプルを含まないことを示す場合、ビデオエンコーダ20は、ビデオデータの現在ブロック用のデルタQPおよび/またはクロマQPオフセットに関係する1つまたは複数のシンタックス要素を符号化しなくてよい。
【０２００】
例に応じて、本明細書で説明する技法のいずれかのいくつかの行為またはイベントは異なる順序で実行されてもよく、一緒に追加され、統合され、または省略されてもよい(たとえば、説明される行為またはイベントのすべてが技法の実施のために必要とは限らない)ことを認識されたい。その上、いくつかの例では、行為またはイベントは、順次的にではなく、たとえばマルチスレッド処理、割り込み処理、または複数のプロセッサを通じて同時に実行され得る。加えて、明快のために本開示のいくつかの態様は単一のモジュールまたはユニットによって実行されるものとして説明されるが、本開示の技法がビデオコーダに関連するユニットまたはモジュールの組合せによって実行され得ることを理解されたい。
【０２０１】
例示のために、本開示のいくつかの態様は開発中のHEVC規格に関して説明された。しかしながら、本開示で説明する技法は、まだ開発されていない他の標準的なまたは独自のビデオコーディングプロセスを含む、他のビデオコーディングプロセスにとって有用であり得る。
【０２０２】
上記で説明した技法は、ビデオエンコーダ20(図1および図2)および/またはビデオデコーダ30(図1および図3)によって実行されてよく、それらの両方が概してビデオコーダと呼ばれることがある。同様に、ビデオコーディングは、適用可能なとき、ビデオ符号化またはビデオ復号を指すことがある。
【０２０３】
技法の様々な態様の特定の組合せが上記で説明されているが、これらの組合せは、本開示で説明する技法の例を示すために提供されているにすぎない。したがって、本開示の技法は、これらの例示的な組合せに限定されるべきでなく、本開示で説明する技法の様々な態様の考えられるいかなる組合せも包含し得る。
【０２０４】
1つまたは複数の例では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体に記憶またはコンピュータ可読媒体を介して送信されてよく、ハードウェアベースの処理ユニットによって実行されてもよい。コンピュータ可読媒体は、データ記憶媒体などの有形媒体、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体に相当する、コンピュータ可読記憶媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、(1)非一時的である有形コンピュータ可読記憶媒体、または(2)信号もしくは搬送波などの通信媒体に相当し得る。データ記憶媒体は、本開示で説明した技法の実施のための命令、コード、および/またはデータ構造を取り出すために、1つもしくは複数のコンピュータまたは1つもしくは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品がコンピュータ可読媒体を含んでもよい。
【０２０５】
限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、フラッシュメモリ、または命令またはデータ構造の形式の所望のプログラムコードを記憶するために使用され得るとともに、コンピュータによってアクセスされ得る任意の他の媒体を備え得る。また、いかなる接続も厳密にはコンピュータ可読媒体と呼ばれる。たとえば、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから命令が送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まず、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(CD)、レーザーディスク（登録商標）、光ディスク、デジタル多用途ディスク(DVD)、フロッピーディスク、およびBlu-ray（登録商標）ディスクを含み、ディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)はレーザーを用いてデータを光学的に再生する。上記の組合せも、コンピュータ可読媒体の範囲に含まれるべきである。
【０２０６】
命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の等価の集積されたもしくは個別の論理回路などの、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用する「プロセッサ」という用語は、前述の構造、または本明細書で説明した技法の実装に適した任意の他の構造のいずれかを指すことがある。加えて、いくつかの態様では、本明細書で説明した機能は、専用のハードウェア内で、ならびに/または符号化および復号のために構成された、もしくは複合コーデックに組み込まれたソフトウェアモジュール内で提供され得る。また、技法は、1つまたは複数の回路または論理要素において完全に実施され得る。
【０２０７】
本開示の技法は、ワイヤレスハンドセット、集積回路(IC)、またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実施され得る。様々な構成要素、モジュール、またはユニットは、開示する技法を実行するように構成されたデバイスの機能的態様を強調するために本開示で説明されているが、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上記で説明したように、様々なユニットは、コーデックハードウェアユニットにおいて結合されてよく、または適切なソフトウェアおよび/もしくはファームウェアとともに、上記で説明したような1つもしくは複数のプロセッサを含む相互動作可能なハードウェアユニットの集合によって提供されてもよい。
【０２０８】
様々な例が説明された。これらおよび他の例は、以下の特許請求の範囲内に入る。
【符号の説明】
【０２０９】
10  ビデオコーディングシステム
12  ソースデバイス
14  宛先デバイス
16  リンク
18  ビデオソース
19  ストレージデバイス
20  ビデオエンコーダ
22  出力インターフェース
28  入力インターフェース
30  ビデオデコーダ
32  ディスプレイデバイス
100  予測処理ユニット
102  残差生成ユニット
104  変換処理ユニット
106  量子化ユニット
108  逆量子化ユニット
110  逆変換処理ユニット
112  再構成ユニット
114  フィルタユニット
116  復号ピクチャバッファ
118  エントロピー符号化ユニット
120  インター予測処理ユニット
122  パレットベース符号化ユニット
126  イントラ予測処理ユニット
149  ビデオデータメモリ
150  エントロピー復号ユニット
152  予測処理ユニット
154  逆量子化ユニット
156  逆変換処理ユニット
158  再構成ユニット
160  フィルタユニット
162  復号ピクチャバッファ
164  動き補償ユニット
165  パレットベース復号ユニット
166  イントラ予測処理ユニット
178  ピクチャ
180  第1のコーディングユニット
184  第1のパレット
188  第2のコーディングユニット
192  第2のパレット
202〜206  エントリ
208〜214  エントリ
240  マップ
244  パレット
266〜270  ライン
【図１】
0006771493.tif 000015
【図２】
0006771493.tif 000016
【図３】
0006771493.tif 000017
【図４】
0006771493.tif 000018
【図５】
0006771493.tif 000019
【図６】
0006771493.tif 000020
【図７】
0006771493.tif 000021