(57)【特許請求の範囲】
【請求項１】
１つ以上の処理ユニット及びメモリを備えるコンピューティングデバイスであって、当該コンピューティングデバイスは、ビデオ又は画像のエンコーダを実装し、該エンコーダは、
イントラピクチャ圧縮を使用してピクチャのユニットについてのデータを符号化する、符号化ステップであって、前記ユニットは１つ以上のブロックを含み、該符号化ステップは、ベースカラーテーブルとインデックスマップを使用し、前記ベースカラーテーブルは、１つ以上のインデックス値を１つ以上の対応するベースカラーに割り当て、前記インデックスマップは、前記１つ以上のインデックス値のうちの少なくとも１つと、前記ベースカラーテーブル内の前記１つ以上の対応するベースカラーのいずれのベースカラーも表さない１つ以上の例外値とを含み、例外値に対応するサンプル値は、量子化パラメータを使用して符号化され、最も高い可能性のあるインデックス値で指定される、符号化ステップと；
前記符号化されたデータを出力するステップと；
を備える動作を実行するように構成される、コンピューティングデバイス。
【請求項２】
前記１つ以上のインデックス値は、パック・インデックス値又はパック・インデックス残差値である、
請求項１に記載のコンピューティングデバイス。
【請求項３】
前記ユニットは、符号化ユニットであり、前記符号化ユニットは、イントラ予測の予測モードを有する、
請求項１に記載のコンピューティングデバイス。
【請求項４】
前記符号化されたデータは、前記イントラ予測が空間予測モードを使用したか、ベースカラーインデックスマップモードを使用したかを示すフラグ値を有する、
請求項３に記載のコンピューティングデバイス。
【請求項５】
前記符号化ステップは、隣接するインデックス値を使用して前記インデックスマップ内の所与のインデックス値を予測するステップを含む、
請求項１に記載のコンピューティングデバイス。
【請求項６】
前記隣接するインデックス値は、前記インデックスマップ内の前記所与のインデックス値より上である、
請求項５に記載のコンピューティングデバイス。
【請求項７】
ビデオデコーダ又は画像デコーダを有するコンピューティングデバイスにおいて、
ピクチャのユニットについての符号化データを受け取るステップであって、前記ユニットはイントラピクチャ圧縮を使用して符号化されており、前記ユニットは１つ以上のブロックを含む、ステップと；
前記符号化データを復号する復号ステップであって、該復号ステップは、ベースカラーテーブルとインデックスマップを使用し、前記ベースカラーテーブルは、１つ以上のインデックス値を１つ以上の対応するベースカラーに割り当て、前記インデックスマップは、前記１つ以上のインデックス値のうちの少なくとも１つと、前記ベースカラーテーブル内の前記１つ以上の対応するベースカラーのいずれのベースカラーも表さない１つ以上の例外値とを含み、例外値に対応するサンプル値は、量子化パラメータを使用して復号され、最も高い可能性のあるインデックス値で指定される、復号ステップと；
を備える、方法。
【請求項８】
前記１つ以上のインデックス値は、パック・インデックス値又はパック・インデックス残差値である、
請求項７に記載の方法。
【請求項９】
コンピューティングデバイスに、
ピクチャのユニットについての符号化データを受け取るステップであって、前記ユニットはイントラピクチャ圧縮を使用して符号化されており、前記ユニットは１つ以上のブロックを含む、ステップと；
前記符号化データを復号する復号ステップであって、該復号ステップは、ベースカラーテーブルとインデックスマップを使用し、前記ベースカラーテーブルは、１つ以上のインデックス値を１つ以上の対応するベースカラーに割り当て、前記インデックスマップは、前記１つ以上のインデックス値のうちの少なくとも１つと、前記ベースカラーテーブル内の前記１つ以上の対応するベースカラーのいずれのベースカラーも表さない１つ以上の例外値とを含み、例外値に対応するサンプル値は、量子化パラメータを使用して復号され、最も高い可能性のあるインデックス値で指定される、復号ステップと；
を含む動作を実行させる、コンピュータプログラム。
【発明の詳細な説明】
【背景技術】
【０００１】
技術者は、圧縮（ソースコーディング又はソース符号化とも呼ばれる）を使用して、デジタルビデオのビットレートを減少させる。圧縮は、ビデオ情報をより低ビットレート形式に変換することにより、ビデオ情報の格納及び転送コストを減少させる。圧縮解除（復号とも呼ばれる）は、圧縮形式から元の情報のバージョンを再構築する。「コーデック」はエンコーダ／デコーダシステムである。
【０００２】
この２０年の間に、ITU-T  H.261、H.262（MPEG-2又はISO/TEC13818-2）、H.263及びH.264（MPEG-4  AVC又はISO/IEC14496-10）規格、MPEG-1（ISO/IEC11172-2）及びMPEG-4ビジュアル（ISO/IEC14496-2）規格、並びにSMPTE421M規格を含め、様々なビデオコーデック規格が採用されてきた。より最近では、HEVC規格（ITU-T  H.265又はISO/IEC23008-2）も承認されている。（例えばスケーラブルなビデオ符号化／復号のため、サンプルビット深度又はクロマサンプリングレートに関してより高い忠実性のビデオ符号化／復号のため、あるいはマルチビュー符号化／復号のための）HEVC規格に対する拡張が、現在開発中である。ビデオコーデック規格は典型的に、符号化ビデオビットストリームのシンタックスについて、特定の機能が符号化及び復号に使用されるときに、そのビットストリーム内のパラメータを詳述するオプションを定義する。多くの場合において、ビデオコーデック規格はまた、復号の際に適合した結果をもたらすよう、デコーダが実行すべき復号操作に関する詳細も提供する。コーデック規格に加えて、様々な独自のコーデックフォーマットが、符号化ビデオビットストリームのシンタックス及び対応する復号操作について他のオプションを定義する。
【０００３】
ベースカラーインデックスマップ（「BCIM：base  color  index  map」）モードでは、ビデオエンコーダは、ベースカラーを表すインデックス値を使用してサンプル値を符号化する。インデックス値は各々、サンプル値の中の異なる値（「ベースカラー」）に関連付けられる。例えば8×8ブロックが、そのブロックの64個のサンプル値の中で4つの異なる値を有する場合、エンコーダは、４つの異なるインデックス値をこれらの４つのベースカラーに割り当てる。符号化中に、サンプル値は、対応するインデックス値と置換される。エンコーダは、ベースカラーに対するインデックス値のマッピング（「ベースカラーテーブル」）並びにサンプル値を表すインデックス値の配置についてのデータ（「インデックスマップ」）を符号化して伝達（signal）する。デコーダは、ベースカラーへのインデックス値のマッピングを受け取って、復号する。そのマッピングを使用して、デコーダは、インデックスマップ内のインデックス値を、元のサンプル値のベースカラーと置き換える。
【０００４】
BCIMモードは、スクリーンキャプチャコンテンツのように、特定の「人工的に」作成されるビデオコンテンツを符号化するときに有益であり得る。スクリーンキャプチャコンテンツは、典型的に、自然のビデオと比べて、特徴的なサンプル値をほとんど使用しない繰り返しの構造（例えばグラフィクス、テキスト文字）を含む。これは、BCIMについて性能を向上させる機会を提供する。
【０００５】
HEVC規格及びHEVC規格のための何らかの参照ソフトウェアにおける実装のためのBCIMモードの現在の設計は、幾つかの問題を有する。例えばBCIMは、ベースカラーマッピング及びインデックスマップのために多くの新たなシンタックス要素及びシンタックス構造を必要とし、これは実装を複雑にする。また、ベースカラーマッピング及びインデックスマップの符号化／復号に対するアプローチは、既にHEVC規格に含まれているものと異なるツールを使用することがあり、これもやはり実装を複雑にする。また、ベースカラーテーブル及びインデックスマップの符号化は非効率的である。
【発明の概要】
【０００６】
簡潔に言うと、詳細な説明は、ベースカラーインデックスマップ（「BCIM」）モードにおける技術革新を提示する。例えばこの技術革新の一部は、非BCIMモードにおける変換係数及びBCIMモードにおけるインデックスマップの要素のためにシンタックス構造を再使用することに関する。これは、BCIMモードをサポートするために行われる修正の数を減らすことができる。他の技術革新は、インデックス値のマッピング又はインデックスマップの要素の予測のためのストラテジに関し、これは、BCIMモードの符号化効率を向上させることができる。更に他の技術革新は、BCIMモードにおける例外値の処理に関する。
【０００７】
ベースカラーインデックスマップモードのための本技術革新は、方法の一部として、方法を実行するよう適合されるコンピューティングデバイスの一部として、あるいはコンピューティングデバイスに方法を実行させるためのコンピュータ実行可能命令を格納する有形のコンピュータ読取可能媒体の一部として実装され得る。様々な技術革新を組み合わせて又は別個に使用することができる。
【０００８】
本発明の前述及び他の目的、特徴及び利点は、添付の図面と関連して進められる以下の詳細な説明から、より明らかになるであろう。
【図面の簡単な説明】
【０００９】
【図１】幾つかの説明される実施形態を実装することができる例示のコンピューティングシステムの図である。
【００１０】
【図２ａ】幾つかの説明される実施形態を実装することができる例示のネットワーク環境の図である。
【図２ｂ】幾つかの説明される実施形態を実装することができる例示のネットワーク環境の図である。
【００１１】
【図３】例示のエンコーダシステムのブロック図であり、このエンコーダシステムとともに、幾つかの説明される実施形態を実装することができる。
【００１２】
【図４】例示のデコーダシステムのブロック図であり、このデコーダシステムとともに、幾つかの説明される実施形態を実装することができる。
【００１３】
【図５ａ】例示のビデオエンコーダを示す図であり、このビデオエンコーダとともに、幾つかの説明される実施形態を実装することができる。
【図５ｂ】例示のビデオエンコーダを示す図であり、このビデオエンコーダとともに、幾つかの説明される実施形態を実装することができる。
【００１４】
【図６】例示のビデオデコーダを示す図であり、このビデオエンコーダとともに、幾つかの説明される実施形態を実装することができる。
【００１５】
【図７】ピクチャのブロックについてのベースカラーインデックスマップモードを示すチャートである。
【００１６】
【図８】同じ係数符号化シンタックス構造を使用してインデックスマップの要素又は変換係数を伝達するときの、符号化処理中の例示の処理フローを示す図である。
【図９】同じ係数符号化シンタックス構造を使用してインデックスマップの要素又は変換係数を伝達するときの、復号処理中の例示の処理フローを示す図である。
【００１７】
【図１０】インデックスマップの要素又は変換係数を選択的に表す係数符号化シンタックス構造を使用する、符号化処理の一般化した技術を示すフローチャートである。
【図１１】インデックスマップの要素又は変換係数を選択的に表す係数符号化シンタックス構造を使用する、復号処理の一般化した技術を示すフローチャートである。
【００１８】
【図１２】インデックスマップの要素又は変換係数を選択的に表す係数符号化シンタックス構造を使用する、復号処理の例示の技術のフローチャートである。
【００１９】
【図１３】インデックス値のパック・インデックス値へのマッピングと、パック・インデックス値のインデックス値へのマッピングを示すチャートである。
【００２０】
【図１４】符号化中にベースカラーのインデックス値をマッピングする一般化した技術を示すフローチャートである。
【図１５】復号中にベースカラーのインデックス値をマッピングする一般化した技術を示すフローチャートである。
【００２１】
【図１６】符号化中の減算処理と復号中の加算処理を使用する、インデックスマップの要素の予測を示すチャートである。
【図１７】符号化中の減算処理と復号中の加算処理を使用する、インデックスマップの要素の予測を示すチャートである。
【００２２】
【図１８】符号化中にXOR演算を使用するインデックスマップの要素の予測と、復号中にXOR演算を使用する要素の対応する再構築を示すチャートである。
【００２３】
【図１９】符号化中のインデックスマップの要素の予測のための一般化した技術を示すフローチャートである。
【図２０】復号中のインデックスマップの要素の予測のための一般化した技術を示すフローチャートである。
【００２４】
【図２１ａ】符号化中のBCIMモードの例外値及びインデックス値の処理を示すチャートである。
【図２１ｂ】復号中のBCIMモードの例外値及びインデックス値の処理を示すチャートである。
【００２５】
【図２２】BCIMモードでインデックス値及び例外値を使用して符号化するための一般化した技術を示すフローチャートである。
【図２３】BCIMモードでインデックス値及び例外値を使用して復号するための一般化した技術を示すフローチャートである。
【００２６】
【図２４】BCIMモードでインデックス値及び例外値を使用する例示の技術を示すフローチャートである。
【発明を実施するための形態】
【００２７】
詳細な説明は、符号化及び／又は復号中のベースカラーインデックスマップ（「BCIM」）モードの使用における技術革新を提示する。特に、この詳細な説明は、BCIMモードにおけるインデックスマップの要素についてのデータを伝達する代わりに、変換係数に対して適合されるシンタックス構造を再使用し、BCIMモードにいてインデックス値をマッピングし、インデックスマップの要素の予測及びBCIMモードにおける例外値の処理のための技術革新を提示する。これらの技術革新の一部は、BCIMモードをサポートするために行われる修正の数を減らすことによって実装を簡単にする。他の技術革新は、BCIMモードの符号化効率を向上させる。
【００２８】
本明細書で説明される動作は、適所に、ビデオエンコーダ又はビデオデコーダによって実行されるように説明されるが、多くの場合、これらの動作を、別のタイプのメディア処理ツール（例えば画像エンコーダ、画像デコーダ）によって実行することができる。
【００２９】
本明細書で説明される技術革新の一部は、HEVC規格に固有のシンタックス要素及び操作に関連して説明される。例えばHEVC規格のドラフトバージョンのJCTVC-N1005「High  Efficiency  Video  Coding（HEVC）Range  Extensions  Text  Specification：Draft4」、JCTVC-N1005、２０１３年７月を参照する。本明細書で説明される技術革新を他の規格又フォーマットについて実装することもできる。
【００３０】
より具体的には、本明細書で説明される例に対する様々な代替も可能である。例えば本明細書で説明される方法の一部を、説明される方法の動作の順序を変更することによって、特定の方法の動作を分割し、繰り返し又は省略すること等によって変えることができる。開示される技術の様々な側面を、組み合わせて又は別個に使用することができる。異なる実施形態は、説明される技術革新のうちの１つ又は複数を使用する。本明細書で説明される技術革新の一部は、背景技術において示した問題の１つ又は複数に対処する。典型的に所与の技術／ツールは、必ずしも全ての上記問題を解決するものではない。
【００３１】
Ｉ．例示のコンピューティングシステム
図１は、開示される技術革新の幾つかが実装され得る、適切なコンピューティングシステム（１００）の一般化した例を図示している。この技術革新は、多様な汎用又は専用のコンピューティングシステムにおいて実装されてよいので、コンピューティングシステム（１００）は、使用又は機能の範囲に関して如何なる限定を示唆するようにも意図されていない。
【００３２】
図１に関連して、コンピューティングシステム（１００）は、１つ以上の処理ユニット（１１０、１１５）及びメモリ（１２０、１２５）を含む。処理ユニット（１１０、１１５）はコンピュータ実行可能命令を実行する。処理ユニットは、汎用の中央処理ユニット（CPU）、特定用途向け集積回路（ASIC）のプロセッサ又は任意の他のタイプのプロセッサとすることができる。マルチ処理システムでは、マルチ処理ユニットが、コンピュータ実行可能命令を実行して処理能力を向上させる。例えば図１は、中央処理ユニット（１１０）だけでなく、グラフィック処理ユニット又はコプロセッシングユニット（１１５）も図示している。有形のメモリ（１２０、１２５）は、処理ユニットによってアクセス可能な揮発性メモリ（例えばレジスタ、キャッシュ、RAM）、不揮発性メモリ（例えばROM、EEPROM、フラッシュメモリ等）又はこれらの２つの何らかの組合せであってよい。メモリ（１２０、１２５）は、処理ユニットによる実行に適したコンピュータ実行可能命令の形で、BCIMモードのための１つ以上の技術革新を実装するソフトウェア（１８０）を格納する。
【００３３】
コンピューティングシステムは、更なる特徴を有してもよい。例えばコンピューティングシステム（１００）は、記憶装置（１４０）、１つ以上の入力デバイス（１５０）、１つ以上の出力デバイス（１６０）及び１つ以上の通信接続部（１７０）を含む。バスやコントローラ、ネットワーク等の相互接続機構（図示せず）が、コンピューティングシステム（１００）のコンポーネントを相互接続する。典型的に、オペレーティングシステムソフトウェア（図示せず）は、コンピューティングシステム（１００）内で実行している他のソフトウェアのための動作環境を提供し、コンピューティングシステム（１００）のコンポーネントの動作を調整する。
【００３４】
有形の記憶装置（１４０）は、取外し可能であっても取外し不可能であってもよく、磁気ディスク、磁気テープ若しくはカセット、CD-ROM、DVD又は情報を格納するのに使用することができ、かつコンピューティングシステム（１００）内でアクセス可能な任意の他の媒体を含む。記憶装置（１４０）は、BCIMモードのための１つ以上の技術革新を実装するソフトウェア（１８０）のための命令を格納する。
【００３５】
入力デバイス（１５０）は、キーボード、マウス、ペン又はトラックボール等のタッチ入力デバイス、音声入力デバイス、スキャニングデバイス、あるいはコンピューティングシステム（１００）へ入力を提供する別のデバイスであってよい。ビデオの場合、入力デバイス（１５０）は、カメラ、ビデオカード、TVチューナカード、あるいはアナログ若しくはデジタル形式のビデオ入力を受け入れる同様のデバイス又はコンピューティングシステム（１００）へビデオサンプルを読み出すCD-ROM又はCD-RWであってよい。出力デバイス（１６０）は、ディスプレイ、プリンタ、スピーカ、CDライター又はコンピューティングシステム（１００）からの出力を提供する別のデバイスであってよい。
【００３６】
通信接続部（１７０）は、通信媒体を介して別のコンピューティングエンティティとの通信を可能にする。通信媒体は、コンピュータ実行可能命令、オーディオ又はビデオ入力又は出力、あるいは他のデータ等の情報を変調データ信号内で伝達する。変調データ信号は、信号内に情報を符号化するように設定又は変更された特性の１つ以上を有する信号である。限定ではなく例として、通信媒体は、電気、光学、RF又は他の担体を使用することができる。
【００３７】
本技術革新は、コンピュータ読取可能媒体の一般的な文脈で説明することができる。コンピュータ読取可能媒体は、コンピューティング環境内でアクセスすることができる任意の利用可能な有形の媒体である。限定でなく例として、コンピューティングシステム（１００）では、コンピュータ読取可能媒体は、メモリ（１２０、１２５）、記憶装置（１４０）及び上記の任意の組合せを含む。
【００３８】
本技術革新は、プログラムモジュールに含まれるもののように、コンピューティングシステム内で対象の実際のプロセッサ又は仮想プロセッサ上で実行されるコンピュータ実行可能命令の一般的な文脈で説明することができる。一般に、プログラムモジュールは、特定のタスクを実行するか、特定の抽象データタイプを実装する、ルーチン、プログラム、ライブラリ、オブジェクト、クラス、コンポーネント、データ構造等を含む。プログラムモジュールの機能は、様々な実施形態において望まれるように、プログラムモジュール間で組み合わされてもよく、あるいは分割されてもよい。プログラムモジュールのためのコンピュータ実行可能命令は、ローカル又は分散コンピューティングシステム内で実行され得る。
【００３９】
「システム」及び「デバイス」という用語は本明細書では交換可能に使用される。文脈がそうでないことを明らかに示さないに限り、いずれの用語もコンピューティングシステム又はコンピューティングデバイスのタイプに関するいかなる限定も示唆しない。一般に、コンピューティングシステム又はコンピューティングデバイスはローカルとすることも分散させることもでき、専用のハードウェア及び／又は汎用のハードウェアと、本明細書で説明される機能を実装するソフトウェアとの任意の組合せを含むことができる。
【００４０】
また、開示される方法は、これらの開示される方法のいずれかを実行するように構成された専用のコンピューティングハードウェアを使用して実装されることもある。例えば開示される方法は、開示される方法のいずれかを実装するよう特別に設計又は構成される、集積回路（例えばASIC（ASICデジタル信号処理ユニット（「DSP」）等）、グラフィクス処理ユニット（「GPU」）又はフィールドプログラマブルゲートアレイ（「FPGA」）等のプログラマブル論理回路（「PLD」））によって実装され得る。
【００４１】
提示の目的で、詳細な説明は「決定する」及び「使用する」等の用語を使用して、コンピューティングシステムにおけるコンピュータの動作を説明する。これらの用語は、コンピュータによって実行される動作の高レベルな抽象化であり、人間によって実行される動作と混同されるべきではない。これらの用語に対応する実際のコンピュータの動作は実装に応じて変化する。
【００４２】
ＩＩ．例示のネットワーク環境
図２ａ及び図２ｂは、ビデオエンコーダ（２２０）及びビデオデコーダ（２７０）を含む例示のネットワーク環境（２０１、２０２）を示す。エンコーダ（２２０）及びデコーダ（２７０）は、ネットワーク（２５０）上で適切な通信プロトコルを使用して接続される。ネットワーク（２５０）は、インターネット又は別のコンピュータネットワークを含むことができる。
【００４３】
図２ａに示されるネットワーク環境（２０１）では、各リアルタイム通信（「RTC」）ツール（２１０）は、双方向通信のためのエンコーダ（２２０）とデコーダ（２７０）の双方を含む。所与のエンコーダ（２２０）は、HEVC規格、SMPTE  421M規格、ISO-IEC14496-10規格（H.264又はAVCとしても知られる）、別の規格又は独自のフォーマットの変形又は拡張に準拠した出力を生成し、この場合、対応するデコーダ（２７０）がエンコーダ（２２０）からの符号化データを受け入れる。双方向通信は、ビデオ会議、ビデオ電話又は他の二者通信シナリオの一部とすることができる。図２ａのネットワーク環境（２０１）は、２つのリアルタイム通信ツール（２１０）を含むが、ネットワーク環境（２０１）は代わりに、多者通信に参加する３つ以上のリアルタイム通信ツール（２１０）を含むことができる。
【００４４】
リアルタイム通信ツール（２１０）は、エンコーダ（２２０）による符号化を管理する。図３は、リアルタイム通信ツール（２１０）に含まれ得る例示のエンコーダシステム（３００）を示す。あるいは、リアルタイム通信ツール（２１０）は別のエンコーダシステムを使用する。リアルタイム通信ツール（２１０）は、デコーダ（２７０）による復号も管理する。図４は、リアルタイム通信ツール（２１０）に含まれ得る例示のデコーダシステム（４００）を示す。あるいは、リアルタイム通信ツール（２１０）は別のデコーダシステムを使用する。
【００４５】
図２ｂに示されるネットワーク環境（２０２）では、符号化ツール（２１２）は、デコーダ（２７０）を含め複数の再生ツール（２１４）への配信用にビデオを符号化する、エンコーダ（２２０）を含む。一方向通信は、ビデオ監視システム、ウェブカメラモニタリングシステム、リモートデスクトップ会議プレゼンテーション、あるいはビデオが符号化され、ある場所から１つ以上の他の場所に送信される他のシナリオのために提供され得る。図２ｂのネットワーク環境（２０２）は、２つの再生ツール（２１４）を含むが、ネットワーク環境（２０２）は、より多くの又はより少ない再生ツール（２１４）を含むことができる。一般に、再生ツール（２１４）は、符号化ツール（２１２）と通信して、再生ツール（２１４）が受け取るべきビデオのストリームを決定する。再生ツール（２１４）は、ストリームを受け取り、受け取った符号化データを適切な期間の間バッファして、復号及び再生を開始する。
【００４６】
図３は、符号化ツール（２１２）に含まれ得る例示のエンコーダシステム（３００）を示す。あるいは、符号化ツール（２１２）は別のエンコーダシステムを使用する。符号化ツール（２１２）は、１つ以上の再生ツール（２１４）との接続を管理するためのサーバ側のコントローラロジックを含むこともできる。図４は、再生ツール（２１４）に含まれ得る例示のデコーダシステム（４００）を示す。あるいは、再生ツール（２１４）は別のデコーダシステムを使用する。再生ツール（２１４）は、符号化ツール（２１２）との接続を管理するためのクライアント側のコントローラロジックを含むこともできる。
【００４７】
ＩＩＩ．例示のエンコーダシステム
図３は、例示のエンコーダシステム（３００）のブロック図であり、このエンコーダシステム（３００）とともに、幾つかの説明される実施形態が実装され得る。エンコーダシステム（３００）は、リアルタイム通信用の低遅延符号化モード、トランスコーディングモード及びファイル又はストリームからのメディア再生のための標準の符号化モードを含め複数の符号化モードのいずれかで動作する能力を有する、汎用の符号化ツールとすることができ、あるいは１つのそのような符号化モード用に適合される専用の符号化ツールとすることもできる。エンコーダシステム（３００）は、オペレーティングシステムモジュールとして、アプリケーションライブラリとして、あるいはスタンドアロンアプリケーションとして実装され得る。全体として、エンコーダシステム（３００）は、ビデオソースからのソースビデオフレーム（３１１）のシーケンスを受け取り、チャネル（３９０）への出力として符号化データを生成する。チャネルへ出力される符号化データは、BCIMモードを使用して符号化されるコンテンツを含むことができる。
【００４８】
ビデオソース（３１０）は、カメラ、チューナカード、記憶媒体又は他のデジタルビデオソースとすることができる。ビデオソース（３１０）は、例えば30フレーム毎秒のフレームレートでビデオフレームのシーケンスを生成する。本明細書で使用されるとき、「フレーム」という用語は、ソース、符号化又は再構築された画像データを指す。プログレッシブビデオでは、フレームはプログレッシブビデオフレームである。インタレースビデオの場合、例示の実施形態では、インタレースビデオフレームは、符号化の前にデインタレースされる。あるいは、２つの相補的なインタレースビデオフィールドが、デインタレースビデオフレーム又は別個のフィールドとして符号化される。プログレッシブビデオフレームを示すことに加えて、「フレーム」又は「ピクチャ」は、単一のペアでないビデオフィールド、ビデオフィールドの相補的なペア、所与の時間のビデオオブジェクトを表すビデオオブジェクト面又は大きな画像の関心領域を示すことができる。ビデオオブジェクト面又は領域は、あるシーンの複数のオブジェクト又は領域を含む大きな画像の一部とすることができる。
【００４９】
到着ソースフレーム（３１１）は、複数のフレームバッファ記憶エリア（３２１、３２２．．．３２ｎ）を含む、ソースフレーム一時メモリ記憶エリア（３２０）に格納される。フレームバッファ（３２１、３２２等）は、ソースフレーム記憶エリア（３２０）内に１つのソースフレームを保持する。ソースフレーム（３１１）の１つ以上がフレームバッファ（３２１、３２２等）内に格納された後、フレームセレクタ（３３０）は、ソースフレーム記憶エリア（３２）から個々のソースフレームを周期的に選択する。エンコーダ（３４０）への入力のためにフレームセレクタ（３３０）によってフレームが選択される順序は、フレームがビデオソース（３１０）によって生成される順序と異なってよく、例えばあるフレームは、時間的に後方予測を容易にするために先行し得る。エンコーダ（３４０）の前に、エンコーダシステム（３００）は、符号化の前に、選択されたフレーム（３３１）の事前処理（例えばフィルタリング）を実行するプリプロセッサ（図示せず）を含むことができる。事前処理は、符号化のために第１の及び第２のコンポーネントへの色空間変換も含むことができる。典型的に、符号化の前に、ビデオはYUI等の色空間へ変換されており、この色空間において、ルマ（Y）コンポーネントのサンプル値は、明るさ又は強さの値を表し、クロマ（U、V）コンポーネントのサンプル値は、色差値（color-difference  value）を表す。クロマサンプル値は、より低いクロマサンプリングレート（例えばYUV4:2:0フォーマットの）へサブサンプリングされてよく、あるいはクロマサンプル値はルマサンプル値と同じ解像度（例えばYUV4:4:4フォーマット）を有してもよい。あるいは、ビデオを別のフォーマット（例えばRGB4:4:4フォーマット）で符号化することもできる。
【００５０】
エンコーダ（３４０）は、選択されたフレーム（３３１）を符号化して符号化フレーム（３４１）を生成し、また、メモリ管理制御操作（「MMCO：memory  management  control  operation」）信号（３４２）又は参照ピクチャセット（「RPS：reference  picture  set」）情報も生成する。現在のフレームが符号化された最初のフレームでない場合、その符号化処理を実行するとき、エンコーダ（３４０）は、復号フレーム一時メモリ記憶エリア（３６０）内に格納されている１つ以上の以前に符号化／復号されたフレーム（３６９）を使用してよい。そのような格納済みの復号フレーム（３６９）は、現在のソースフレーム（３３１）のコンテンツのインターフレーム予測の参照フレームとして使用される。一般に、エンコーダ（３４０）は、タイルへの区分、イントラ予測推定及び予測、動き推定及び補償、周波数変換、量子化及びエントロピー符号化のような、符号化タスクを実行する複数の符号化モジュールを含む。エンコーダ（３４０）によって実行される正確な操作は、圧縮フォーマットに応じて変化し得る。出力の符号化データのフォーマットは、HEVCフォーマット、Windows（登録商標）メディアビデオフォーマット、VC-1フォーマット、MPEG-xフォーマット（例えばMPEG-1、MPEG-2又はMPEG-4）、H.26xフォーマット（例えばH.261、H.262、H.263、H.264）又は別のフォーマットの変形又は拡張とすることができる。
【００５１】
エンコーダ（３４０）は、フレームを、同じサイズ又は異なるサイズの複数のタイルに区分することができる。例えばエンコーダ（３４０）は、フレームを、タイル境界により、フレーム内のタイルの水平境界及び垂直境界を定義するタイル行及びタイル列に沿って分割し、この場合、各タイルは矩形領域である。タイルはしばしば、並行処理のためのオプションを改善するのに使用される。フレームを１つ以上のスライスとして編成することもでき、この場合、１つのスライスは、全体のフレームとすることも、フレームの領域とすることもできる。スライスを、フレーム内の他のスライスと独立に復号することができ、これはエラー耐性を改善する。スライス又はタイルのコンテンツは更に、符号化及び復号のために、サンプルのブロック又は他のセットに更に区分される。
【００５２】
HEVC規格によるシンタックスでは、エンコーダは、フレーム（又はスライス若しくはタイル）のコンテンツを符号化ツリー・ユニットに分割することができる。符号化ツリー・ユニット（「CTU：coding  tree  unit」）は、ルマ符号化ツリー・ブロック（「CTB：coding  tree  block」）として編成されるルマサンプル値と、２つのクロマCTBとして編成される、対応するクロマサンプル値とを含む。CTU（及びそのCTB）のサイズは、エンコーダによって選択され、例えば64×64、32×32又は16×16サンプルとすることができる。CTUは１つ以上の符号化ユニットを含む。符号化ユニット（「CU：coding  unit」）は、１つのルマ符号化ブロック（「CB：coding  block」）と、２つの対応するクロマCBとを有する。例えば64×64ルマCTBと２つの64×64クロマCTBとを有するCTU（YUV4:4:4フォーマット）を、各CUが32×32ルマCBと２つの32×32クロマCBとを有し、各CUが場合によっては、より小さなCUに更に分割される、４つのCUに分割することができる。あるいは、別の例として、64×64ルマCTBと２つの32×32クロマCTBを有するCTU（YUV4:2:0フォーマット）を、各CUが32×32ルマCBと２つの16×16クロマCBとを有し、各CUが場合によっては、より小さなCUに更に分割される、４つのCUに分割することができる。最小許容サイズのCU（例えば8×8、16×16）をビットストリーム内で伝達することができる。
【００５３】
一般に、CUは、インター又はイントラ等の予測モードを有する。CUは、（予測モード詳細等のような）予測情報の伝達及び／又は予測処理のために１つ以上の予測ユニットを含む。予測ユニット（「PU：prediction  unit」）は、ルマ予測ブロック（「PB：prediction  block」）と２つのクロマPBを有する。イントラ予測されるCUでは、PUは、CUが最小のサイズ（例えば8×8）でなければ、CUと同じサイズを有する。この場合、CUを、4つのより小さいPU（例えば最小のCUのサイズが8×8の場合は、それぞれ4×4）に分割することができ、あるいはPUは、CUのシンタックス要素によって示されるように、最小のCUサイズを有することができる。CUは、残差符号化／復号のために１つ以上の変換ユニットも有し、この場合、変換ユニット（「TU：transform  unit」）は、変換ブロック（「TB：transform  block」）と２つのクロマTBを有する。イントラ予測CU内のPUは、（サイズがPUに等しい）単一のTU又は複数のTUを含み得る。本明細書で使用されるとき、「ブロック」という用語は、コンテキストに応じて、CB、PB、TB又は他のセットのサンプル値を示すことができる。エンコーダは、ビデオをどのようにCTU、CU、PU、TU等に区分すべきかを決める。
【００５４】
図３に戻ると、エンコーダは、フレーム（３３１）内の他の以前に再構築されたサンプル値からの予測に関して、ソースフレーム（３３１）のイントラ符号化ブロックを表す。ブロックについてのイントラ空間予測では、イントラピクチャ推定器は、隣接する再構築されたサンプル値の、ブロックへの外挿（extrapolation）を推定する。イントラ予測推定器は、エントロピー符号化される予測情報（イントラ空間予測についての予測モード（方向））を出力する。イントラ予測の予測器は、予測情報を適用して、イントラ予測値を決定する。BCIMモードでは、エンコーダは、インデックス値についてのベースカラーテーブルを使用し、かつインデックスマップの要素を使用して、ブロックのサンプル値のうちのベースカラーのインデックス値によりイントラ符号化ブロックを表す。エンコーダは、下述されるように、インデックス値を使用せずに、BCIMモードのブロック内の例外値を表すこともできる。
【００５５】
エンコーダ（３４０）は、参照フレームからの予測に関して、ソースフレーム（３３１）のインター符号化された予測ブロックを表す。動き推定器は、１つ以上の参照フレーム（３６９）に関して、ブロックの動きを推定する。複数の参照フレームを使用するとき、複数の参照フレームは、異なる時間方向からのものとすることも、同じ時間方向からのものとすることもできる。動き補償される予測参照領域は、現在のフレームのサンプルのブロックについて動き補償された予測値を生成するのに使用される、参照フレーム内のサンプルの領域である。動き推定器は、動きベクトル情報等のような、エントロピー符号化される動き情報を出力する。動き補償器は、動きベクトルを参照フレーム（３６９）に適用して、動き補償された推定値を決定する。
【００５６】
非BCIMモードでは、エンコーダは、ブロックの予測値（イントラ又はインター）と対応する元の値との間の差（もしあれば）を決定する。これらの予測残差値は、周波数変換、量子化及びエントロピー符号化を使用して更に符号化される。例えばエンコーダ（３４０）は、ピクチャ、タイル、スライス及び／又はビデオの他の部分について量子化パラメータ（「QP」）の値を設定し、これに応じて変換係数を量子化する。BCIMモードでは、エンコーダは、例外値を処理するときの特定の量子化操作を除いて、変換及び量子化操作をスキップする。
【００５７】
エンコーダ（３４０）のエントロピーコーダは、量子化された変換係数の値だけでなく、特定のサイド情報（例えば動きベクトル情報、QP値、モード決定、パラメータ選択）も圧縮する。特に、エントロピーコーダは、係数符号化シンタックス構造を使用して、インデックスマップの要素のデータを圧縮することができる。典型的なエントロピー符号化技術には、Exp-Golomb符号化、算術符号化、差分符号化、ハフマン符号化、ランレングス符号化、可変長−可変長（「V2V」）符号化、可変長−固定長（「V2F」）符号化、LZ符号化、ディクショナリ符号化、PIPE（probability  interval  partitioning  entropy）符号化及び上記の組合せが含まれる。エントロピーコーダは、異なる種類の情報に異なる符号化技術を使用することができ、特定の符号化技術における複数のコードテーブルの中から選択することができる。
【００５８】
符号化フレーム（３４１）及びMMCO/RPS情報（３４２）は、復号処理エミュレータ（３５０）によって処理される。復号処理エミュレータ（３５０）は、例えばタスクを復号して参照フレームを再構築する、デコーダの機能の一部を実装する。復号処理エミュレータ（３５０）はMMCO/RPS情報（３４２）を使用して、符号化すべき後続フレームのインターフレーム予測における参照フレームとして使用するために、所与の符号化フレーム（３４１）を再構築して格納する必要があるかどうかを判断する。MMCO/RPS情報（３４２）が、符号化フレーム（３４１）を格納する必要があることを示す場合、復号処理エミュレータ（３５０）は、符号化フレーム（３４１）を受け取り、対応する復号フレーム（３５１）を生成するデコーダによって構築されるであろう、復号処理をモデル化する。そのために、エンコーダ（３４０）が、復号フレーム記憶エリア（３６０）内に格納されている復号フレーム（３６９）を使用しているとき、復号処理エミュレータ（３５０）は、復号処理の一部として、記憶エリア（３６０）からの復号フレーム（３６９）も使用する。
【００５９】
復号フレーム一時メモリ記憶エリア（３６０）は、複数のフレームバッファ記憶エリア（３６１、３６２．．．３６ｎ）を含む。復号処理エミュレータ（３５０）は、参照フレームとしての使用のためにエンコーダ（３４０）によってもはや必要とされないフレームを有する任意のフレームバッファ（３６１、３６２等）を識別するために、MMCO/RPS情報（３４２）を使用して記憶エリア（３６０）のコンテンツを管理する。復号処理をモデル化した後、復号処理エミュレータ（３５０）は、新たに復号されたフレーム（３５１）を、この方法で識別されたフレームバッファ（３６１、３６２等）内に格納する。
【００６０】
符号化フレーム（３４１）及びMMCO/RPS情報（３４２）は、一時的な符号化データエリア（３７０）にバッファされる。符号化データエリア（３７０）内に集約される符号化データは、基本的な符号化ビデオビットストリーム（elementary  coded  video  bitstream）のシンタックスの一部として、１つ以上のピクチャについての符号化データを含む。符号化データエリア（３７０）に集約される符号化データは、（例えば１つ以上の補足エンハンスメント情報（「SEI：supplemental  enhancement  information」）メッセージ又はビデオ使用情報「VUI：video  usability  information」メッセージ内の１つ以上のパラメータとして）、符号化ビデオデータに関連するメディアメタデータを含むこともできる。
【００６１】
一時的な符号化データエリア（３７０）からの集約データ（３７１）は、チャネルエンコーダ（３８０）によって処理される。チャネルエンコーダ（３８０）は、（例えばISO/IEC  13818-1のようなメディアストリーム多重化フォーマットに従って）集約データをメディアストリームとしての伝送用にパケット化することができ、この場合、チャネルエンコーダ（３８０）は、シンタックス要素を、メディア伝送ストリームのシンタックスの一部として追加することができる。あるいは、チャネルエンコーダ（３８０）は、（例えばISO/IEC  14496-12のようなメディアコンテナフォーマットに従って）集約データをファイルとしての記憶用に編成することができ、この場合、チャネルエンコーダ（３８０）は、シンタックス要素を、メディア記憶ファイルのシンタックスの一部として追加することができる。あるいは、より一般的に、チャネルエンコーダ（３８０）は、１つ以上のメディアシステム多重化プロトコル又はトランスポートプロトコルを実装することができ、この場合、チャネルエンコーダ（３８０）は、シンタックス要素を、プロトコルのシンタックスの一部として追加することができる。チャネルエンコーダ（３８０）は、出力をチャネル（３９０）に提供し、このチャネルは、記憶装置、通信接続又は出力用の別のチャネルを表す。
【００６２】
ＩＶ．例示のデコーダシステム
図４は、例示のデコーダシステム（４００）のブロック図であり、このデコーダシステム（４００）とともに、幾つかの説明される実施形態が実装され得る。デコーダシステム（４００）は、リアルタイム通信用の低遅延復号モード、ファイル又はストリームからのメディア再生のための標準復号モードを含め、複数の復号モードのいずれかで動作する能力を有する、汎用の復号ツールとすることができ、あるいは１つのそのような復号モードに適合される専用の復号ツールとすることもできる。デコーダシステム（４００）は、オペレーティングシステムモジュールとして、アプリケーションライブラリとして、あるいはスタンドアロンアプリケーションとして実装され得る。全体として、デコーダシステム（４００）は、チャネル（４１０）から符号化データを受け取り、出力宛先（４９０）への出力として再構築フレームを生成する。符号化データは、BCIMモードを使用して符号化されたコンテンツを含むことができる。
【００６３】
デコーダシステム（４００）はチャネル（４１０）を含み、このチャネル（４１０）は、記憶装置、通信接続又は入力としての符号化データのための別のチャネルを表すことができる。チャネル（４１０）は、チャネル符号化された符号化データを生成する。チャネルデコーダ（４２０）は、符号化データを処理することができる。例えばチャネルデコーダ（４２０）は、（例えばISO/IEC  13818-1のようなメディアストリーム多重化フォーマットに従って）メディアストリームとしての伝送用に集約されているデータをパケット化解除することができ、この場合、チャネルデコーダ（４２０）は、メディア伝送ストリームのシンタックスの一部として追加されたシンタックス要素を解析することができる。あるいは、チャネルデコーダ（４２０）は、（例えばISO/IEC  14496-12のようなメディアコンテナフォーマットに従って）ファイルとしての記憶用に集約されている符号化ビデオデータを分けることができ、この場合、チャネルデコーダ（４２０）は、メディア記憶ファイルのシンタックスの一部として追加されたシンタックス要素を解析することができる。あるいは、より一般的に、チャネルデコーダ（４２０）は、１つ以上のメディアシステム多重化解除プロトコル又はトランスポートプロトコルを実装することができ、この場合、チャネルデコーダ（４２０）は、プロトコルのシンタックスの一部として追加されたシンタックス要素を解析することができる。
【００６４】
チャネルデコーダ（４２０）から出力される符号化データ（４２１）は、十分な量のそのようなデータを受け取るまで、一時的な符号化データエリア（４３０）に格納される。符号化データ（４２１）は、符号化フレーム（４３１）及びMMCO/RPS情報（４３２）を含む。符号化データエリア（４３０）内の符号化データ（４２１）は、基本的な符号化ビデオビットストリームのシンタックスの一部として、１つ以上のピクチャについての符号化データを含む。符号化データエリア（４３０）内の符号化データ（４２１）は、（例えば１つ以上のSEIメッセージ又はVUIメッセージ内の１つ以上のパラメータとして）符号化ビデオデータに関連するメディアメタデータを含むこともできる。
【００６５】
一般的に、符号化データエリア（４３０）は、符号化データ（４２１）がデコーダ（４５０）によって使用されるまで、符号化データ（４２１）を一時的に格納する。この時点で、符号化フレーム（４３１）及びMMCO/RPS情報（４３２）の符号化データが、符号化データエリア（４３０）からデコーダに転送される。復号処理を継続すると、新たな符号化データが符号化データエリア（４３０）に追加され、符号化データエリア（４３０）内に残っている最も古い符号化データがデコーダ（４５０）に転送される。
【００６６】
デコーダ（４５０）は周期的に、符号化フレーム（４３１）を復号して、対応する復号フレーム（４５１）を生成する。必要に応じて、その復号処理を実行するとき、デコーダ（４５０）は、１つ以上の以前に復号されたフレーム（４６９）を、インターフレーム予測のための参照フレームとして使用してよい。デコーダ（４５０）は、そのような以前に復号されたフレーム（４６９）を復号フレーム一時メモリ記憶エリア（４６０）から読み出す。一般に、デコーダ（４５０）は、エントロピー復号、逆量子化、逆周波数変換、イントラ予測、動き補償及びタイルのマージといった、復号タスクを実行する複数の復号モジュールを含む。デコーダ（４５０）によって実行される正確な操作は、圧縮フォーマットに応じて変化し得る。
【００６７】
例えばデコーダ（４５０）は、圧縮フレーム又はフレームのシーケンスについての符号化データを受け取り、復号フレーム（４５１）を含む出力を生成する。デコーダ（４５０）では、バッファが、圧縮フレームについての符号化データを適切な時に受け取り、受け取った符号化データをエントロピーデコーダに利用可能にする。エントロピーデコーダは、典型的にはエンコーダで実行されたエントロピー符号化の逆を適用して、エントロピー符号化された量子化データ並びにエントロピー符号化されたサイド情報をエントロピー復号する。動き補償器は、動き情報を１つ以上の参照フレームに適用して、再構築されているフレームの任意のインター符号化されたブロックについて、動き補償された予測値を形成する。イントラ予測モジュールは、現在のブロック値のサンプル値を、隣接する以前に再構築されたサンプル値から空間的に予測することができる。BCIMモードでは、デコーダは、インデックス値のベースカラーテーブルを使用し、かつインデックスマップの要素を使用して、ブロックのサンプル値のうちのベースカラーのインデックス値により、イントラ符号化ブロックを再構築する。
【００６８】
非BCIMモードでは、デコーダ（４５０）は、予測残差も再構築する。逆量子化器は、エントロピー復号されたデータを量子化する。例えばデコーダ（４５０）は、ビットストリーム内のシンタックス要素に基づいて、ピクチャ、タイル、スライス及び／又はビデオの他の部分についてQPの値を設定し、それに応じて変換係数を逆量子化する。逆周波数変換器は、量子化された周波数領域データを、空間領域情報に変換する。BCIMモードでは、デコーダは、例外値を復号するときの特定の逆量子化操作を除いて、逆量子化及び逆周波数変換操作をスキップする。インター予測ブロックでは、デコーダ（４５０）は、再構築された予測残差を動き補償された予測値と組み合わせる。デコーダ（４５０）は同様に、予測残差をイントラ予測からの予測値と組み合わせることができる。ビデオデコーダ（４５０）における動き補償のループは、復号フレーム（４５１）におけるブロック境界の行及び／又は列にわたる不連続性を平滑化する適応的デブロッキングフィルタを含む。
【００６９】
復号フレーム一時メモリ記憶エリア（４６０）は、複数のフレームバッファ記憶エリア（４６１、４６２．．．４６ｎ）を含む。復号フレーム記憶エリア（４６０）は、復号ピクチャのバッファの例である。デコーダ（４５０）はMMCO/RPS情報（４３２）を使用してフレームバッファ（４６１、４６２等）を識別し、このフレームバッファは復号フレーム（４５１）を格納することができる。デコーダ（４５０）は、そのフレームバッファ内に復号フレーム（４５１）を格納する。
【００７０】
出力シーケンサ（４８０）は、MMCO/RPS情報（４３２）を使用して、出力順で生成すべき次のフレームが、復号フレーム記憶エリア（４６０）内で利用可能になる時を識別する。出力順で生成すべき次のフレーム（４８１）が、復号フレーム記憶エリア（４６０）内で利用可能になると、次のフレーム（４８１）は、出力シーケンサ（４８０）によって読み取られて、出力宛先（４９０）（例えばディスプレイ）へ出力される。一般に、フレームが出力シーケンサ（４８０）によって復号フレーム記憶エリア（４６０）から出力される順序は、フレームがデコーダ（４５０）によって復号される順序と異なってよい。
【００７１】
Ｖ．例示のビデオエンコーダ
図５ａ及び図５ｂは、一般化したビデオエンコーダ（５００）のブロック図であり、このビデオエンコーダとともに、幾つかの説明される実施形態が実装され得る。エンコーダ（５００）は、現在のピクチャを含むビデオピクチャのシーケンスを、入力ビデオ信号（５０５）として受け取り、出力として符号化ビデオビットストリーム（５９５）内に符号化データを生成する。
【００７２】
エンコーダ（５００）は、ブロックベースであり、実装に依存するブロックフォーマットを使用する。ブロックは、異なる段階、例えば予測、周波数変換及び／又はエントロピー符号化段階等に更に細分され得る。例えばピクチャは、64×64ブロック、32×32ブロック又は16×16ブロックに分割され、これは次に、符号化及び復号のためにサンプル値のより小さいブロックに分割され得る。HEVC規格の符号化の実装では、エンコーダは、ピクチャをCTU（CTB）、CU（CB）、PU（PB）及びTU（TB）に分ける。
【００７３】
エンコーダ（５００）は、イントラピクチャ符号化及び／又はインターピクチャ符号化を使用してピクチャを圧縮する。エンコーダ（５００）のコンポーネントの多くは、イントラピクチャ符号化及びインターピクチャ符号化の双方に使用される。これらのコンポーネントによって実行される正確な操作は、圧縮されている情報のタイプに応じて異なり得る。
【００７４】
タイル化モジュール（５１０）は任意選択により、ピクチャを同じサイズ又は異なるサイズの複数のタイルに分割する。例えばタイル化モジュール（５１０）は、ピクチャを、ピクチャ境界により、ピクチャ内のタイルの水平境界及び垂直境界を定義するタイル行及びタイル列に沿って分割し、この場合、各タイルは矩形領域である。タイル化モジュール（５１０）は、これらのタイルを１つ以上のタイルセットにグループ化することができ、この場合、１つのタイルセットは、上記タイルのうちの１つ以上のタイルのグループである。
【００７５】
一般的な符号化コントロール（５２０）は、エンコーダ（５００）の様々なモジュールから入力ビデオ信号（５０５）のピクチャ及びフィードバック（図示せず）を受け取る。全体的に、一般的な符号化コントロール（５２０）は、制御信号（図示せず）を他のモジュール（タイル化モジュール（５１０）、変換器／スケーラ／量子化器（５３０）、スケーラ／逆変換器（５３５）、イントラピクチャ推定器（５４０）、動き推定器（５５０）及びイントラ／インタースイッチ等）に提供し、符号化するパラメータを符号化中に設定及び変更する。特に、一般的な符号化コントロール（５２０）は、符号化中にBCIMモードを使用すべきかどうか及びどのように使用すべきかを決定することができる。一般的な符号化コントロール（５２０）は、例えば速度ひずみ分析（rate-distortion  analysis）を実行して、符号化中に中間結果を評価することもできる。一般的な符号化コントロール（５２０）は、符号化中に行われた決定を示す一般的な制御データ（５２２）を生成し、これにより、対応するデコーダは、整合性のある決定を行うことができる。一般的な制御データ（５２２）は、ヘッダフォーマッタ／エントロピーコーダ（５９０）に提供される。
【００７６】
現在のピクチャがインターピクチャ予測を使用して予測される場合、動き推定器（５５０）は、１つ以上の参照ピクチャに関して入力ビデオ信号（５０５）の現在のピクチャのサンプル値のブロックの動きを推定する。復号ピクチャバッファ（５７０）は、１つ以上の再構築された、以前に符号化されたピクチャを参照ピクチャとしての使用のためにバッファする。複数の参照ピクチャが使用されるとき、複数の参照ピクチャは、異なる時間方向又は同じ時間方向からのものとすることができる。動き推定器（５５０）は、サイド情報動きデータ（５５２）として、動きベクトルデータ及び参照ピクチャ選択データ等を生成する。動きデータ（５５２）は、ヘッダフォーマッタ／エントロピーコーダ（５９０）だけでなく、動き補償器（５５５）にも提供される。
【００７７】
動き補償器（５５５）は、動きベクトルを、復号ピクチャバッファ（５７０）からの再構築された参照ピクチャに適用する。動き補償器（５５５）は、現在のピクチャについて動き補償された予測を生成する。
【００７８】
エンコーダ（５００）内の別個の経路において、イントラピクチャ推定器（５４０）は、入力ビデオ信号（５０５）の現在のピクチャのサンプル値のブロックについて、どのようにイントラピクチャ予測を実行すべきかを決定する。現在のピクチャは、イントラピクチャ符号化を使用して、全体又は部分的に符号化され得る。イントラ空間予測について、現在のピクチャの再構築（５３８）の値を使用して、イントラピクチャ推定器（５４０）は、現在のピクチャの、隣接する以前に再構築されたサンプル値を、どのように空間的に予測すべきかを決定する。
【００７９】
BCIMモードでは、エンコーダ（５００）は、インデックス値についてのインデックスマップを使用し、かつインデックスマップの要素を使用して、ブロックのサンプル値のうちベースカラーのインデックス値を用いて、イントラ符号化ブロックを表す。
【００８０】
イントラピクチャ推定器（５４０）は、サイド情報として、イントラ予測が空間予測又はBCIMモードを使用するかどうかを示す情報（例えばイントラブロックごと又は特定の予測モード方向のイントラブロックごとのフラグ値）や（例えば特定の空間予測について）予測モード方向を示す情報等のような、イントラ予測データ（５４２）を生成する。イントラ予測データ（５４２）は、ヘッダフォーマッタ／エントロピーコーダ（５９０）並びにイントラピクチャ予測器（５４５）に提供される。イントラ予測データ（５４２）に従って、イントラピクチャ予測器（５４５）は、現在のピクチャの隣接する以前に再構築されたサンプル値から、現在のピクチャの現在のブロックのサンプル値を空間的に予測するか、BCIMモードのブロックのサンプル値を再構築する。
【００８１】
非BCIMモードでは、イントラ／インタースイッチは、動き補償された予測又はイントラピクチャ予測の値を、所与のブロックについての予測（５５８）として使用するために選択する。非BCIMモードでは、予測（５５８）のブロックと、入力ビデオ信号（５０５）の元の現在のピクチャの対応する部分との間の差（もしあれば）が、残差（５１８）の値を提供する。現在のピクチャの再構築の間、再構築された残差値を、予測（５５８）と組み合わせて、ビデオ信号（５０５）からの元のコンテンツの再構築（５３８）を生成する。しかしながら、ロスのある圧縮では、一部の情報が依然としてビデオ信号（５０５）から失われる。
【００８２】
変換器／スケーラ／量子化器（５３０）では、非BCIMモードのために、周波数変換器が、空間領域のビデオ情報を周波数領域（すなわち、スペクトル、変換）データに変換する。ブロックベースのビデオ符号化のために、周波数変換器は、離散コサイン変換（「DCT」）、その整数近似又は別のタイプの順方向変換を予測残差データのブロック（例えば予測（５５８）がヌルの場合はサンプル値データ）に適用し、周波数変換係数のブロックを生成する。エンコーダ（５００）は、そのような変換ステップをスキップすることを指示することもできる。スケーラ／量子化器は、変換係数をスケールして量子化する。例えば量子化器は、フレームごとに、タイルごとに、スライスごとに、ブロックごとに又は他の単位で変化するステップサイズで、非均一のスケーラ量子化を周波数領域データに適用する。量子化された変換係数データ（５３２）は、ヘッダフォーマッタ／エントロピーコーダ（５９０）へ提供される。
【００８３】
スケーラ／逆変換器（５３５）では、非BCIMモードのために、スケーラ／逆量子化器が、量子化された変換係数に対して逆スケーリング及び逆量子化を実行する。逆周波数変換器は、逆周波数変換を実行して、再構築された予測残差及びサンプル値のブロックを生成する。エンコーダ（５００）は、再構築された残差（例えば動き補償された予測値、イントラピクチャ予測値）を予測（５５８）の値と組み合わせて、再構築（５３８）を形成する。
【００８４】
イントラピクチャ予測のために、再構築（５３８）の値を、イントラピクチャ推定器（５４０）及びイントラピクチャ予測器（５４５）へ供給することができる。また、再構築（５３８）の値を、後続のピクチャの動き補償された予測に使用することができる。再構築（５３８）の値を更にフィルタすることができる。フィルタリングコントロール（５６０）は、ビデオ信号（５０５）の所与のピクチャについて、デブロックフィルタリング及びサンプル適応型オフセット（SAO：sample  adaptive  offset）フィルタリングを再構築（５３８）の値に対してどのように実行すべきかを決定する。フィルタリングコントロール（５６０）は、ヘッダフォーマッタ／エントロピーコーダ（５９０）及びマージャ／フィルタ（５６５）へ提供されるフィルタ制御データ（５６２）を生成する。
【００８５】
マージャ／フィルタ（５６５）では、エンコーダ（５００）は、異なるタイルからのコンテンツをマージして、ピクチャの再構築バージョンにする。エンコーダ（５００）は、フレーム内の境界にわたる不連続性を適応的に平滑化するよう、フィルタ制御データ（５６２）に従って、デブロックフィルタリング及びSAOフィルタリングを選択的に実行する。タイル境界は、エンコーダ（５００）の設定に応じて選択的に、フィルタされることも、全くフィルタされないこともあり、エンコーダ（５００）は、そのようなフィルタリングが適用されたか否かを示すシンタックスを符号化ビットストリームにおいて提供することができる。復号ピクチャバッファ（５７０）は、後続の動き補償された予測で使用するために再構築された現在のピクチャをバッファする。
【００８６】
ヘッダフォーマッタ／エントロピーコーダ（５９０）は、一般的な制御データ（５２２）、量子化された変換係数データ（５３２）、イントラ予測データ（５４２）及びパック・インデックス値、動きデータ（５５２）及びフィルタ制御データ（５６２）をフォーマット及び／又はエントロピー符号化する。例えばヘッダフォーマッタ／エントロピーコーダ（５９０）は、係数符号化シンタックス構造の様々なシンタックス要素のエントロピー符号化のために、コンテキスト適応型二値算術符号化方式（「CABAC：context-adaptive  binary  arithmetic  coding」）を使用する。
【００８７】
ヘッダフォーマッタ／エントロピーコーダ（５９０）は、符号化ビデオビットストリーム（５９５）で符号化データを提供する。符号化ビデオビットストリーム（５９５）のフォーマットは、HEVCフォーマット、Windows（登録商標）メディアビデオフォーマット、VC-1フォーマット、MPEG-xフォーマット（例えばMPEG-1、MPEG-2又はMPEG-4）、H.26xフォーマット（例えばH.261、H.262、H.263、H.264）又は別のフォーマットの変形又は拡張とすることができる。
【００８８】
所望の圧縮の実装及びタイプに応じて、エンコーダのモジュールを追加し、省略し、複数のモジュールへ分割し、他のモジュールと組み合わせ、かつ／又は同様のモジュールと置換することができる。代替的な実施形態では、異なるモジュール及び／又はモジュールの他の構成を用いるエンコーダは、説明される技術の１つ以上を実行する。エンコーダの具体的な実施形態は、典型的にエンコーダ（５００）の変形又は補足バージョンを使用する。エンコーダ（５００）内のモジュール間に示される関係は、エンコーダ内における情報の一般的な流れを示し、他の関係は簡潔性のために示されていない。
【００８９】
ＶＩ．例示のビデオデコーダ
図６は、一般化されたデコーダ（６００）のブロック図であり、このデコーダとともに幾つかの説明される実施形態が実装され得る。デコーダ（６００）は、符号化ビデオビットストリーム（６０５）内の符号化データを受け取り、再構築ビデオ（６９５）についてのピクチャを含む出力を生成する。符号化ビデオビットストリーム（６０５）のフォーマットは、HEVCフォーマット、Windows（登録商標）メディアビデオフォーマット、VC-1フォーマット、MPEG-xフォーマット（例えばMPEG-1、MPEG-2又はMPEG-4）、H.26xフォーマット（例えばH.261、H.262、H.263、H.264）又は別のフォーマットの変形又は拡張とすることができる。
【００９０】
デコーダ（６００）は、ブロックベースであり、実装に依存するブロックフォーマットを使用する。ブロックは、異なる段階等に更に細分され得る。例えばピクチャは、64×64ブロック、32×32ブロック又は16×16ブロックに分割され、これは次にサンプル値のより小さいブロックに分割され得る。HEVC規格の復号の実装では、ピクチャがCTU（CTB）、CU（CB）、PU（PB）及びTU（TB）に分けられる。
【００９１】
デコーダ（６００）は、イントラピクチャ復号及び／又はインターピクチャ復号を使用してピクチャを圧縮解除する。デコーダ（６００）のコンポーネントの多くは、イントラピクチャ復号及びインターピクチャ復号の双方に使用される。これらのコンポーネントによって実行される正確な操作は、圧縮解除されている情報のタイプに応じて異なり得る。
【００９２】
バッファは、符号化ビデオビットストリーム（６０５）で符号化データを受け取り、受け取った符号化データをパーサ／エントロピーデコーダ（６１０）に利用可能にする。パーサ／エントロピーデコーダ（６１０）は、典型的にはエンコーダ（５００）で実行されたエントロピー符号化の逆（例えばコンテキスト適応型二値算術復号）を適用して、エントロピー符号化された量子化データをエントロピー復号する。例えばパーサ／エントロピーデコーダ（６１０）は、係数符号化シンタックス構造の様々なシンタックス要素のエントロピー復号のために、コンテキスト適応型二値算術符号化方式を使用する。解析及びエントロピー復号の結果として、パーサ／エントロピーデコーダ（６１０）は、一般的な制御データ（６２２）、量子化された変換係数データ（６３２）、イントラ予測データ（６４２）及びパック・インデックス値、動きデータ（６５２）及びフィルタ制御データ（６６２）を生成する。
【００９３】
一般的な復号コントロール（６２０）は、一般的な制御データ（６２２）を受け取り、制御信号（図示せず）を他のモジュール（スケーラ／逆変換器（６３５）、イントラピクチャ予測器（６４５）、動き補償器（６５５）及びイントラ／インタースイッチ等）に提供し、復号するパラメータを復号処理中に設定及び変更する。
【００９４】
現在のピクチャがインターピクチャ予測を使用して予測される場合、動き補償器（６５５）は、動きベクトルデータ及び参照ピクチャ選択データ等のような動きデータ（６５２）を受け取る。動き補償器（６５５）は、動きベクトルを、復号ピクチャバッファ（６７０）からの再構築された参照ピクチャに適用する。動き補償器（６５５）は、現在のピクチャのインター符号化ブロックについて、動き補償された予測を生成する。復号ピクチャバッファ（６７０）は、参照ピクチャとしての使用のために、１つ以上の以前に再構築されたピクチャを格納する。
【００９５】
デコーダ（６００）内の別個の経路において、イントラ予測の予測器（６４５）は、例えばイントラ予測が空間予測を使用するか又はBCIMモードを使用するかどうかを示す情報（例えばイントラブロックごと又は特定の予測モード方向のイントラブロックごとのフラグ値）、（例えば特定の空間予測について）予測モード方向を示す情報等のような、イントラ予測データ（６４２）を受け取る。イントラ空間予測のために、現在のピクチャの再構築（６３８）の値を使用して、予測モードデータに従って、イントラピクチャ予測器（６４５）は、現在のピクチャの隣接する以前に再構築されたサンプル値から、現在のピクチャの現在のブロックのサンプル値を空間的に予測する。BCIMモードでは、デコーダは、インデックス値についてのベースカラーテーブルを使用し、かつインデックスマップの要素を使用して、ブロックのサンプル値のうちのベースカラーのインデックス値を用いて、イントラ符号化ブロックを再構築する。
【００９６】
非BCIMモードでは、イントラ／インタースイッチは、動き補償された予測又はイントラピクチャ予測の値を、所与のブロックについての予測（６５８）として使用するために選択する。例えばHEVCシンタックスに従うとき、イントラ／インタースイッチは、イントラ予測されたCU及びインター予測されたCUを含み得るピクチャのCUについて、符号化されたシンタックス要素に基づいて制御され得る。デコーダ（６００）は、予測（６５８）を、再構築された残差値と組み合わせて、ビデオ信号からコンテンツの再構築（６３８）を生成する。
【００９７】
残差を再構築するために、非BCIMモードでは、スケーラ／逆変換器（６３５）は、量子化された変換係数データ（６３２）を受け取って処理する。スケーラ／逆変換器（６３５）では、スケーラ／逆量子化器が、量子化された変換係数に対して逆スケーリング及び逆量子化を実行する。逆周波数変換器は、逆周波数変換を実行して、再構築された予測残差又はサンプル値のブロックを生成する。例えば逆周波数変換器は、逆ブロック変換を周波数変換係数に適用して、サンプル値データ又は予測残差データを生成する。逆周波数変換は、逆DCT、その整数近似又は別のタイプの逆周波数変換とすることができる。
【００９８】
イントラピクチャ予測のために、再構築（６３８）の値を、イントラピクチャ予測器（６４５）へ供給することができる。インターピクチャ予測のために、再構築（６３８）の値を更にフィルタすることができる。マージャ／フィルタ（６６５）では、デコーダ（６００）は、異なるタイルからのコンテンツを、ピクチャの再構築バージョンへマージする。デコーダ（６００）は、フレーム内の境界にわたる不連続性を適応的に平滑化するよう、フィルタ制御データ（６６２）及びフィルタ適応についてのルールに従って、デブロックフィルタリング及びSAOフィルタリングを選択的に実行する。タイル境界は、デコーダ（６００）の設定又は符号化ビットストリームデータ内のシンタックス指示に従って、選択的にフィルタされることもあり、全くフィルタされないこともある。復号ピクチャバッファ（６７０）は、後続の動き補償された予測での使用のために再構築された現在のピクチャをバッファする。
【００９９】
デコーダ（６００）は、事後処理デブロックフィルタも含むことができる。事後処理デブロックフィルタは任意選択で、再構築されたピクチャにおける不連続性を平滑化する。他のフィルタリング（例えばリング解除（de-ring）フィルタリング）も、事後処理フィルタリングの一部として適用され得る。
【０１００】
所望の圧縮解除の実装及びタイプに応じて、デコーダのモジュールを追加し、省略し、複数のモジュールへ分割し、他のモジュールと組み合わせ、かつ／又は同様のモジュールと置換することができる。代替的な実施形態では、異なるモジュール及び／又はモジュールの他の構成を用いるデコーダが、説明される技術の１つ以上を実行する。デコーダの具体的な実施形態は、典型的にデコーダ（６００）の変形又は補足バージョンを使用する。デコーダ（６００）内のモジュール間に示される関係は、デコーダ内における情報の一般的な流れを示し、他の関係は簡潔性のために示されていない。
【０１０１】
ＶＩＩ．ベースカラーインデックスマップモードのための技術革新
このセクションは、ベースカラーインデックスマップ（「BCIM」）モードのための様々な技術革新を提示する。これらの技術革新の一部は、BCIMモードにおける変換係数又はインデックスマップデータのための係数符号化シンタックス構造の再利用に関し、他の技術革新は、BCIMモードにおけるインデックス値のマッピング又は予測に関する。更に他の革新は、BCIMモードにおける例外値の処理に関する。これらの技術革新は、速度ひずみ性能及び／又は符号化若しくは復号の計算効率に関してより効果的なBCIMモードを促進することができる。特に、BCIMモードを使用することは、例えば画面キャプチャコンテンツのように、特定の「人工的に」作られたビデオコンテンツを符号化するときに、速度ひずみ性能を改善することができる。画面キャプチャコンテンツは典型的に、繰り返し構造（例えばグラフィクス、テキスト文字）を含み、これらの構造は、性能を向上させるようイントラBC予測のための機会を提供する。画面キャプチャコンテンツは、低クロマサンプリング解像度（例えばYUV４:2:０）のフォーマットでエンコードされてもよいが、通常は、高クロマサンプリング解像度（例えばYUV4:4:4又はRGB4:4:4）で符号化される。
【０１０２】
Ａ．ベースカラーインデックスマップモード−序論
BCIMモードでは、ビデオエンコーダ又は画像エンコーダは、ベースカラーを表すインデックス値を使用してサンプル値を符号化する。インデックス値の各々は、サンプル値のうちの異なる値（「ベースカラー」）に関連付けられる。符号化中に、サンプル値は、対応するインデックス値と置換される。エンコーダは、インデックス値と対応するベースカラーとのテーブル（「ベースカラーテーブル」）、並びにサンプル値を表すインデックス値の配置（「インデックスマップ」）を符号化し、伝達する。ビデオデコーダ又は画像デコーダは、インデックス値と対応するベースカラーとのテーブルを受け取って復号する。ベースカラーテーブルを使用して、ベースカラーは、インデックスマップの値を、元のサンプル値のベースカラーと置き換える。
【０１０３】
図７は、次元i、j（0≦i≦7、0≦j≦7）の２次元配置のサンプル値sのブロック（７１０）を示す図である。図７では、サンプル値sは、画面キャプチャコンテンツの強さ又は明るさを表す。サンプル値sは、均一な値と強いパターンのセクションを含む。ブロック（７１０）は、サンプル値26、85、41、127、168及び200を含む。
【０１０４】
エンコーダは、インデックス値を対応するベースカラーに割り当てるベースカラーテーブル（７２０）を作成する。図７の例では、インデックス値0がサンプル値200に割り当てられ、インデックス値1がサンプル値168に割り当てられ、以下同様である。エンコーダは、より一般的なサンプル値が、より低いインデックス値を有し、あまり一般的でないサンプル値がより高いインデックス値を有するように、ピクチャ内における発生の可能性に従って、インデックス値をベースカラーに割り当てることができ、これは、より低いインデックス値がより少ないビットで表される場合に、より効率的な符号化を生じる傾向がある。あるいは、エンコーダは、インデックスマップのインデックス値における冗長性を利用する予測のように、後の処理に依拠して、ブロックがスキャンされるときの出現の順序に従って、インデックス値をベースカラーに割り当てることができる。ベースカラーテーブル（７２０）はルックアップテーブル又は他のデータ構造として実装され得る。
【０１０５】
図７は、サンプル値sが、対応するインデックス値nで置換されるブロック（７３０）を示す。サンプル値をインデックス値で置換する処理はロスがない。あるいは、ロスのある圧縮の変形では、正確な合致が得られない場合、サンプル値を、そのサンプル値に最も近いベースカラーを表すインデックス値で置換することができる。これは、ベースカラーテーブル（７２０）のサイズを縮小させることができるが、知覚可能なひずみも導入する。インデックス値で表されないサンプル値（いわゆる例外値）に対処する別の手法を以下に説明する。
【０１０６】
エンコーダは、ベースカラーテーブル（７２０）、並びに、インデックス値nのブロック（７３０）を表す要素を有するインデックスマップを符号化し、出力する。例えばエンコーダは、以下で説明されるように、係数符号化シンタックス構造を使用してブロック（７３０）の要素を表す。符号化の一部として、ブロック（７３０）のインデックス値nを、更なるマッピング操作及び／又は予測により処理することができる。
【０１０７】
復号中に、デコーダは、ベースカラーテーブル（７２０）及びインデックスマップのデータを受け取り、復号する。例えばデコーダは、以下で説明されるように、係数符号化シンタックス構造からブロック（７３０）の要素を復号する。復号の一部として、ブロック（７３０）のインデックス値nを、更なるマッピング操作及び／又は予測により処理することができる。デコーダは次いで、図７に図示されるように、ベースカラーテーブル（７２０）を使用してマッピング処理を反対にする。
【０１０８】
図７の例では、エンコーダは、8×8ブロックのサンプル値について、ベースカラーテーブル（７２０）を作成する。あるいは、ブロックは、別のサイズ（例えば4×4、16×16、32×32又は64×64）を有する。より一般的には、ブロックはm×nのブロックであり、この場合、m及びnは等しい値を有することも、異なる値を有することもできる。あるいは、エンコーダは、スライス、タイル、全体のピクチャ、ピクチャのグループ又はビデオシーケンスのサンプル値についてベースカラーマッピングを作成することができる。
【０１０９】
Ｂ．係数符号化シンタックス構造の再使用
一部の例示の実装では、ビデオエンコーダ又は画像エンコーダは、BCIMモードデータを伝達する代わりに、変換係数情報を伝達するのに通常使用されるシンタックス構造を用いる。特に、エンコーダは、係数符号化シンタックス構造を再使用して、BCIMモードでインデックスマップ情報を伝達する。
【０１１０】
図８は、符号化中におけるこのアプローチの処理フロー（８００）を示す。エンコーダは、空間領域値（８１０）のブロックを受け取る。空間領域値（８１０）はサンプル値とすることができる。あるいは、空間領域値（８１０）は、インターピクチャ予測又はイントラピクチャ予測の後の予測残差とすることができる。エンコーダは、BCIMモードと非BCIMモードの双方で同じ係数符号化シンタックス構造を使用して、BCIMモードにおける符号化操作を適用し、あるいは非BCIMモードにおける操作を適用することができる。
【０１１１】
BCIMモードでは、エンコーダは、空間領域値（８１０）（例えばサンプル値）をインデックス値（８３０）にマップし（８１２）、空間領域値（８１０）を対応するインデックス値（８３０）で置換する。エンコーダは更に、例えば次のセクションで説明されるように、インデックス値をインデックスマップのパック・インデックス値（８４０）にマップする。BCIMモードにおけるマッピング操作（８１２、８３２）は、（一部の実装では、例外値の符号化を除いて）量子化又は変換操作を含まない。エンコーダは、インデックスマップのパック・インデックス値（８４０）を伝達するよう、係数符号化シンタックス構造（８９０）を使用してベースカラーテーブル及びインデックスマップの要素を符号化する（８４２）。
【０１１２】
非BCIMモードでは、エンコーダは、周波数変換を空間領域値（８１０）（例えば残差値）に適用し（８１４）、これにより変換係数（８６０）を生じ、エンコーダはこの変換係数を量子化する（８６２）。あるいは、変換及び／又は量子化をスキップする。量子化された変換係数（８７０）は次いで、係数符号化シンタックス構造（８９０）を使用して符号化される。
【０１１３】
HEVCシンタックスに従う一部の例示の実施形態では、係数符号化シンタックス構造は、残差＿符号化シンタックス構造（residual_coding  syntax  structure）である。JCTVC-N1005のセクション7.3.8.11及び7.4.9.11を参照されたい。BCIMモードでは、エンコーダは、インデックスマップの要素（例えば以下で説明されるように、インデックス値、パック・インデックス値、インデックス残差値又はパック・インデックス残差値）が量子化された変換係数であるかのように、これらのインデックスマップの要素を処理する。特に、エンコーダは、ブロック内の最後の非ゼロ係数の位置を伝達する。ブロックは、4×4ブロック、8×8ブロック、16×16ブロック又は32×32ブロックとすることができる。ブロック内の値の4×4グループごとに、エンコーダは、その4×4グループが少なくとも１つの非ゼロの係数を有するかどうかを示すフラグを伝達する。少なくとも１つの非ゼロの係数を有する4×4グループでは、エンコーダは、どの係数が非ゼロ値を有するかを示すフラグを伝達し、次いで非ゼロの係数についてのレベル情報と（多くの場合）符号情報を伝達する。エンコーダはCABACを使用して、残差＿符号化シンタックス構造の様々な要素を符号化する。あるいは、別の係数符号化シンタックス構造が使用される。例えばH.264規格、VC-1規格又は別の規格若しくは独自のフォーマットのシンタックスに従う係数符号化シンタックス構造を使用することができる。
【０１１４】
図９は、復号中のこのアプローチの処理フロー（９００）を示す。デコーダは、係数符号化シンタックス構造（９９０）を受け取る。デコーダは、BCIMモードと非BCIMモードの双方で同じ係数符号化シンタックス構造を使用して、BCIMモードにおける操作を適用し、あるいは非BCIMモードにおける操作を適用することができる。
【０１１５】
BCIMモードでは、デコーダは、ベースカラーテーブルを復号し（９４２）、係数符号化シンタックス構造（９９０）を使用してインデックスマップの要素も復号する（９４２）。これは、インデックスマップについてパック・インデックス値（９４０）を生成する。デコーダは、例えば次のセクションで説明されるように、パック・インデックス値（９４０）をインデックスマップのインデックス値（９３０）にマップする（９３２）。デコーダは次いで、インデックス値（９３０）を、ブロックの空間領域値（９１０）（例えばサンプル値）にマップする（９１２）。BCIMモードにおけるマッピング操作（９１２、９３２）は、（一部の実装では、例外値の復号処理を除いて）量子化又は逆変換操作を含まない。
【０１１６】
非BCIMモードでは、デコーダは、係数符号化シンタックス構造（９９０）を使用して伝達された、量子化された変換係数（９７０）を復号する（９７２）。デコーダは、量子化された変換係数を逆量子化（９６２）し、逆周波数変換を適用（９１４）して、空間領域値（９１０）（例えば予測残差）を再構築することができる。あるいは、逆量子化及び／又は逆変換はスキップされる。デコーダは、次いでインターピクチャ予測又はイントラピクチャ予測（図示せず）を実行して、再構築された残差値を予測値（図示せず）と組み合わせることができる。
【０１１７】
図１０は、インデックスマップの要素又は変換係数を選択的に表すよう係数符号化シンタックス構造を使用する符号化について、一般化した技術（１０００）を図示する。技術（１０００）は、図３又は図５ａ及び図５ｂに関連して説明したようなエンコーダによって、あるいは別のエンコーダによって実行され得る。
【０１１８】
エンコーダは、ブロックのインデックスマップの要素又はそのブロックの変換係数を選択的に表すよう、ブロックの係数符号化シンタックス構造を使用して、データを符号化する（１０１０）。例えば係数符号化構造が、非BCIMモードで変換係数のために使用される場合、エンコーダは、（ａ）ブロックの残差値を計算し、（ｂ）その残差値に対して周波数変換を実行して、変換係数を生成し、（ｃ）変換係数を量子化し、（ｄ）結果として得られる値を係数符号化シンタックス構造内で符号化する。あるいは、係数符号化構造が、BCIMモードでインデックスマップのために使用される場合、エンコーダは、（ａ）そのブロックのサンプル値をインデックス値にマップし、この場合、インデックス値の各々がベースカラーを表し、（ｂ）インデックス値を、パック・インデックス値又はパック・インデックス残差値にマップし、（ｃ）結果として得られる値を係数符号化シンタックス構造内で符号化する。
【０１１９】
BCIMモードでは、インデックスマップは、ブロックについてのパック・インデックス値を含むことができ、この場合、パック・インデックス値の各々は、ベースカラーを表し、係数符号化シンタックス構造へパックされるインデックス値である。あるいは、インデックスマップは、ブロックについてのパック・インデックス残差値を含むことができ、この場合、パック・インデックス残差値の各々は、ベースカラーを表し、係数符号化シンタックス構造へパックされる。パック・インデックス残差値は、インデックス値と予測インデックス値との間の差に基づくインデックス残差値とすることができ、あるいはパック・インデックス残差値は、パック・インデックス値と予測パック・インデックス値との間の差に基づくことができる。インデックスマップは、いずれのベースカラーも表さない１つ以上の例外値も含むことができ、この例外値は、以下で説明されるように処理され得る。
【０１２０】
エンコーダは、符号化データを出力する（１０２０）。例えばHEVCシンタックスに従う実装では、符号化データは、インデックスマップの要素又は変換係数についての残差＿符号化シンタックス構造を含むことができる。あるいは、符号化データは何らかの他の方法でフォーマットされる。エンコーダは別のブロックについて技術（１０００）を繰り返すことができる。
【０１２１】
図１１は、インデックスマップの要素又は変換係数を選択的に表す係数符号化シンタックス構造を使用する復号について、一般化した技術（１１００）を図示する。技術（１１００）は、図４又は図６に関連して説明したようなデコーダによって、あるいは別のデコーダによって実行され得る。
【０１２２】
デコーダは、符号化データを受け取る（１１１０）。例えばHEVCシンタックスに従う実装では、符号化データは、インデックスマップの要素又は変換係数についての残差＿符号化シンタックス構造を含むことができる。あるいは、符号化データは何らかの他の方法でフォーマットされる。
【０１２３】
デコーダは、ブロックのインデックスマップの要素又はブロックの変換係数を選択的に表す、ブロックについての係数符号化シンタックス構造を使用して符号化データを復号する（１１２０）。例えば係数符号化構造が非BCIMモードで変換係数のために使用される場合、デコーダは、（ａ）係数符号化シンタックス構造からの変換係数の値を復号し、（ｂ）変換係数を逆量子化し、（ｃ）変換係数に対して逆周波数変換を実行して、ブロックについての残差値を取得し、（ｄ）残差値を予測値と組み合わせて、そのブロックについてのサンプル値を再構築する。あるいは、係数符号化構造がBCIMモードでインデックスマップのために使用される場合、デコーダは、（ａ）係数符号化シンタックス構造からインデックスマップの値を復号し、（ｂ）パック・インデックス値又はパック・インデックス残差値をインデックス値にマップし、ここで、インデックス値の各々はベースカラーを表し、（ｃ）インデックス値をブロックのサンプル値にマップする。
【０１２４】
BCIMモードでは、インデックスマップは、ブロックについてのパック・インデックス値を含むことができ、この場合、パック・インデックス値の各々は、ベースカラーを表し、係数符号化シンタックス構造へパックされるインデックス値である。あるいは、インデックスマップは、ブロックについてのパック・インデックス残差値を含むことができ、この場合、パック・インデックス残差値の各々は、ベースカラーを表し、係数符号化シンタックス構造へパックされる。パック・インデックス残差値は、インデックス値と予測インデックス値との間の差に基づくインデックス残差値とすることができ、あるいはパック・インデックス残差値は、パック・インデックス値と予測パック・インデックス値との間の差に基づくことができる。インデックスマップは、いずれのベースカラーも表さない１つ以上の例外値も含むことができ、この例外値は以下で説明されるように処理され得る。
【０１２５】
デコーダは、別のブロックについて技術（１１００）を繰り返すことができる。
【０１２６】
図１２は、インデックスマップの要素又は変換係数を選択的に表す係数符号化シンタックス構造を使用する復号について、より具体的な例示の技術（１２００）を示す。技術（１２００）は、図４又は図６に関連して説明したようなデコーダによって、あるいは別のデコーダによって実行され得る。
【０１２７】
デコーダは、ブロックについての係数符号化シンタックス構造を受け取る（１２１０）。例えばHEVCシンタックスに従う実装では、係数符号化シンタックス構造は、残差＿符号化シンタックス構造である。あるいは、係数符号化シンタックス構造は何らかの他の方法で編成される。
【０１２８】
デコーダは、ブロックのモードがBCIMであるかどうかを確認する（１２２０）。例えばデコーダは、ブロックについて１つ以上のシンタックス要素の値を確認する。HEVCシンタックスに従う実装では、ブロックがBCIMモードのブロックであるかどうかを示すシンタックス要素は、PUに伝達され得る。あるいは、シンタックス要素は、CU,CB、PB、TU又はTBに伝達される。
【０１２９】
ブロックがBCIMブロックである場合、デコーダは、そのブロックの係数符号化構造からインデックスマップの要素を復号する（１２４０）。ブロックがBCIMブロックでない場合、デコーダは、そのブロックの係数符号化シンタックス構造から変換係数を復号する（１２３０）。例えばデコーダは、図９又は図１１に関連して説明される動作を実行する。
【０１３０】
デコーダは、次のブロックに継続すべきかどうかを確認する（１２５０）。次のブロックに継続する場合、デコーダは、次のブロックの係数符号化シンタックス構造を受け取る（１２１０）。
【０１３１】
Ｃ．パック・インデックス値へのインデックス値のマッピング
インデックス値を変換係数であるかのように伝達するために、エンコーダは、インデックス値nをパック・インデックス値npackedにマップする。復号中に、デコーダは、パック・インデックス値npackedをインデックス値nにマップし返す。エンコーダ及びデコーダは、インデックス値nとパック・インデックス値npackedとの間をマッピングするときに様々なストラテジに従うことができる。
【０１３２】
例えばエンコーダは単に、インデックス値をパック・インデックス値として使用することができる。すなわち、符号化中はnpacked＝nであり、復号中はn＝npackedである。その簡潔性に加えて、このアプローチの１つの利点は、パック・インデックス値は常に負でないので、パック・インデックス値npackedの符号、を伝達される符号化データから省略することができることにある。
【０１３３】
第２の例示のアプローチとして、デコーダは、次のようにインデックス値nをパック・インデックス値npackedにマップすることができる：
n%2が0の場合、npacked＝-(n/2)であり；
そうでない場合、npacked＝(n+1)/2である。
ここで、「%」はMOD演算子を表し、x%yは、xをyで割ったときの余りである。「/」は、その結果をゼロへ切り捨てる割り算を表す。デコーダは、次のようにパック・インデックス値npackedをインデックス値nにマップし返すことができる。
npacked≦0の場合、n＝-2*npackedであり；
そうでない場合、n＝2*npacked−1である。
【０１３４】
図１３は、このアプローチによる、インデックス値のパック・インデックス値へのマッピングと、パック・インデックス値のインデックス値へのマッピング返しとを示す。ブロック（１３１０）内のインデックス値nは、符号化中にブロック（１３３０）内のパック・インデックス値にマップされ、これは、復号中にブロック（１３１０）内のインデックス値nにマッピングし返される。0…5の範囲のインデックス値は、-2…3の範囲のパック・インデックス値にマップされ、またその逆も行われる。
【０１３５】
第２の例示のアプローチの変形では、エンコーダは、偶数のインデックス値を非負の数にマップして、奇数を負の値にマップし、デコーダはそのマッピングの逆を行う。符号化中のマッピングでは：
n%2が0の場合、npacked＝(n/2)であり；
そうでない場合、npacked＝-(n+1)/2である。
復号では、
npacked≧0の場合、n＝2*npackedであり；
そうでない場合、n＝-2*npacked-1である。
【０１３６】
第３の例示のアプローチとして、異なるカラーコンポーネント（例えばYUV4:4:4フォーマットのビデオのルマ及びクロマコンポーネント）のインデックス値を、ピクセルの単一のパック・インデックス値にマップすることができる。例えばルマサンプルをルマインデックス値nyにマップし、２つの対応するクロマサンプルが、２つのクロマインデックス値nu及びnvにマップされる。インデックス値ny、nu及びnvの各々を表すのに使用されるビット数はnbitsであり、単一のパック・インデックス値npacked,combined（3*nbitsを有する）は、次のように決定することができる：
npacked,combined＝nv<<(2*nbits)＋nu<<nbits+nv
ここで、「<<」は、左ビットシフト操作を表す。復号では、インデックス値インデックス値ny、nu及びnvは、パック・インデックス値npacked,combinedの適切なビットの値を識別するビットマスク操作及びビットシフト操作を使用して、次のように再構築され得る：
nv＝npacked,combined>>(2*nbits)
nu＝(npacked,combined>>nbits)&((1<<nbits)-1)
nv＝npacked,combined&((1<<nbits)-1)
ここで、「>>」は右ビットシフト操作を表し、「&」は、ビットワイズのAND操作を表す。インデックス値ny、nu及びnvの順序は、復号中のマッピング操作に対する変化に対応して、符号化中のマッピング操作において変化し得る。また、インデックス値ny、nu及びnvは、符号化中及び復号中のマッピング操作に対する変化に対応して、異なるビット数を有することができる。
【０１３７】
あるいは、Yコンポーネントのcountyベースカラーと、Uコンポーネントについてcountuベースカラーと、Vコンポーネントについてcountvベースカラーが存在する場合、単一のパック・インデックス値を、次のように決定することができる：
npacked,combined＝nv*(county*countu)+nu*county+ny
復号では、インデックス値ny、nu及びnvを、次のように再構築することができる：
nv＝npacked,combined%county
nu＝(npacked,combined/county)%countu
nv＝npacked,combined/(county*countu)
ここで、「/」は、結果をゼロへ切り捨てる割り算を表す。やはり、インデックス値ny、nu及びnvの順序は、どのカウント変数が使用されるかについての変化に対応して異なり得る。
【０１３８】
あるいは、エンコーダ及びデコーダは、インデックス値nとパック・インデックス値npackedとの間をマッピングする際に異なるアプローチを使用する。
【０１３９】
図１４は、符号化中にベースカラーのインデックス値をマッピングする技術（１４００）を示す。技術（１４００）は、図３又は図５ａ及び図５ｂに関連して説明されるようなエンコーダにより、あるいは別のエンコーダによって実行され得る。
【０１４０】
エンコーダは、サンプル値をベースカラーのインデックス値にマップする（１４１０）。例えばエンコーダは、上述のようなベースカラーテーブルを使用して、ルマ又はクロマのサンプル値をインデックス値にマップする。
【０１４１】
エンコーダは次いで、インデックス値を、係数符号化シンタックス構造のパック・インデックス値の少なくとも一部にマップする（１４２０）。例えばエンコーダは、例えば上述の第１のマッピングアプローチのように、インデックス値に基づいてパック・インデックス値を設定する。あるいは、別の例として、インデックス値が偶数である場合、エンコーダは、２で割ったインデックス値に基づいてパック・インデックス値を設定するが、そうでない場合は、エンコーダは、（例えば上述の第２のマッピングアプローチのように）インデックス値に１を足して２で割った値に基づいて、パック・インデックス値を設定する。あるいは、別の例として、エンコーダは、例えば上述の第３のマッピングアプローチのように、インデックス値を使用してパック・インデックス値の一部を設定し、この場合、パック・インデックス値を、１つのルマインデックス値と複数のクロマインデックス値とに基づいて設定する。
【０１４２】
エンコーダは次いで、下述されるように、パック・インデックス値及び予測パック・インデックス値に基づいて、パック・インデックス残差値を決定することができる。あるいは、パック・インデックス残差値にマップされるインデックス値は、インデックス残差値とすることができる。
【０１４３】
エンコーダは、次のサンプル値に継続すべきかどうか確認する（１４３０）。継続する場合、エンコーダは、次のサンプル値を次のインデックス値にマップする（１４１０）。エンコーダは、ブロックのサンプル値を通してラスタスキャンパターン（raster  scan  pattern）で進めることができる。あるいは、第３のアプローチでは、エンコーダは、１つのルマブロックと複数のクロマブロック内の対応する位置のサンプル値をインデックス値にマップすることができ、次いでこれらのインデックス値をパック・インデックス値にマップすることができる。
【０１４４】
図１５は、復号中にベースカラーのインデックス値をマッピングする技術（１５００）を示す。技術（１５００）は、図４又は図６に関連して説明されるようなデコーダにより、あるいは別のデコーダによって実行され得る。
【０１４５】
デコーダは、係数符号化シンタックス構造のパック・インデックス値の少なくとも一部を、ベースカラーのインデックス値にマップする（１５１０）。例えばデコーダは、例えば上述の第１のマッピングアプローチのように、パック・インデックス値に基づいてインデックス値を設定する。あるいは、別の例として、パック・インデックス値がゼロとの所与の関係を有する場合、デコーダは、パック・インデックス値の２倍に基づいてインデックス値を設定するが、そうでない場合、デコーダは、（例えば上述の第２のマッピングアプローチのように）パック・インデックス値の２倍から１を引いた値に基づいて、インデックス値を設定する。あるいは、別の例として、デコーダは、例えば上述の第３のマッピングアプローチのように、パック・インデックス値の一部を使用してインデックス値を設定し、この場合、１つのルマインデックス値と複数のクロマインデックス値がパック・インデックス値に基づいて設定される。
【０１４６】
デコーダは、インデックス値をサンプル値にマップする（１５２０）。例えばデコーダは、上述のようなベースカラーテーブルを使用して、ルマ又はクロマインデックス値をサンプル値にマップする。
【０１４７】
マッピング操作の前に、デコーダは、所与のパック・インデックス値を予測して、次いで、パック・インデックス残差値を予測パック・インデックス値と組み合わせて、パック・インデックス値を再構築することができる。あるいは、再構築されるインデックス値はインデックス残差値とすることができる。
【０１４８】
デコーダは、次のインデックス値に継続すべきかどうか確認する（１５３０）。継続する場合、デコーダは、係数符号化シンタックス構造のパック・インデックス値の少なくとも一部を、ベースカラーの次のインデックス値にマップする（１５１０）。デコーダは、ブロックのインデックス値を通してラスタスキャンパターンで進めることができる。あるいは、第３のアプローチでは、デコーダは、パック・インデックス値を、ルマブロック及びクロマブロック内の対応する位置の複数のインデックス値にマップすることができ、次いでこれらのインデックス値をサンプル値にマップすることができる。
【０１４９】
Ｄ．インデックスマップの要素の予測
エンコーダ及びデコーダは、インデックスマップの要素の予測も使用することができる。予測がうまく機能すると、インデックス残差値（又はパック・インデックス残差値）の多くは、値ゼロを有する。この予測は、少ないビットを使用してゼロに近い値を符号化するため、典型的なエントロピー符号化スキームにおける符号化効率を向上させる。
【０１５０】
図１６は、次元i、j（0≦i≦7、0≦j≦7）のインデックス値nのブロック（１６１０）を示す。あるいは、予測は別のサイズのブロック（例えば4×4、16×16又は32×32）に適用される。符号化中に、エンコーダは、１つ以上の隣接するインデックス値からインデックス値ごとに所与のインデックス値n(i,j)を予測する。予測の方向は、水平方向、垂直方向、右下斜め方向又は何らかの他の方向とすることができる。図１６では、例えば予測の方向は垂直であり、インデックス残差値nresidのブロック（１６３０）を生じる。インデックス値n(i,j)は、同じ列内の先行するインデックス値n(i,j-1)を使用して予測される。インデックス残差値は単に、２つの値の差：nresid(i,j)＝n(i,j)−n(i,j-1)である。同様に、水平予測では、インデックス残差値は、インデックス値と、予測インデックス値としてのその左隣のインデックス値との間の差：nresid(i,j)＝n(i,j)−n(i-1,j)である。45度下向きの角度における斜め方向の予測では、インデックス残差値を、nresid(i,j)＝n(i,j)−(n(i,j-1)＋n(i-1,j))>>1として計算することができ、あるいはnresid(i,j)＝n(i,j)−n(i-1,j-1)として計算することができる。他の斜め方向の予測も同様に、予測の角度に応じて、隣接するインデックス値をブレンドすることができる。ブロックのエッジ（例えばi＜0及び／又はj＜0）における予測では、隣接するインデックス値は、値ゼロを有するか、デフォルト値を与えられ得る（例えば２で割ったインデックス値の数）。復号中に、デコーダは、（予測の方向に応じて）同じ予測インデックス値を決定し、予測インデックス値をインデックス残差値と組み合わせる。垂直予測では、n(i,j)＝nresid(i,j)＋n(i,j-1)である。水平予測では、n(i,j)＝nresid(i,j)＋n(i-1,j)である。45度下向きの角度の斜め方向の予測では、n(i,j)＝nresid(i,j)＋(n(i,j-1)＋n(i-1,j))>>1又はn(i,j)＝nresid(i,j)＋n(i-1,j-1)である。他の斜め方向の予測も同様に、予測の角度に応じて、隣接するインデックス値をブレンドすることができる。
【０１５１】
図１６では、予測は、インデックス値がパック・インデックス値にマップされる前に適用される。あるいは、予測は、インデックス値がパック・インデックス値にマップされた後に適用される。
【０１５２】
図１７は、次元i、j（0≦i≦7、0≦j≦7）のパック・インデックス値npackedのブロック（１７１０）を示す。あるいは、予測は別のサイズのブロック（例えば4×4、16×16又は32×32）に適用される。符号化中に、エンコーダは、１つ以上の隣接するパック・インデックス値からパック・インデックス値ごとに所与のパック・インデックス値npacked(i,j)を予測する。予測の方向は、水平方向、垂直方向、右下斜め方向又は何らかの他の方向とすることができる。図１７では、例えば予測の方向は垂直であり、パック・インデックス残差値npacked,residのブロック（１７３０）を生じる。パック・インデックス値npacked(i,j)は、同じ列内の先行するパック・インデックス値npacked(i,j-1)を使用して予測される。パック・インデックス残差値は単に、２つの値の差：npacked,resid(i,j)＝npacked(i,j)−npacked(i,j-1)である。同様に、水平予測では、パック・インデックス残差値は、パック・インデックス値と、予測インデックス値としてのその左隣のパック・インデックス値との間の差：npacked,resid(i,j)＝npacked(i,j)−npacked(i-1,j)である。45度下向きの角度における斜め方向の予測では、パック・インデックス残差値を、npacked,resid(i,j)＝npacked(i,j)−(npacked(i,j-1)＋npacked(i-1,j))>>1として計算することができ、あるいはnpacked,resid(i,j)＝npacked(i,j)−npacked(i-1,j-1)として計算することができる。他の斜め方向の予測も同様に、予測の角度に応じて、隣接するインデックス値をブレンドすることができる。ブロックのエッジ（例えばi＜0及び／又はj＜0）における予測では、隣接するパック・インデックス値は、値ゼロを有するか、デフォルト値を与えられ得る（例えば２で割ったインデックス値の数）。復号中に、デコーダは、（予測の方向に応じて）同じ予測パック・インデックス値を決定し、予測パック・インデックス値をパック・インデックス残差値と組み合わせる。垂直予測では、npacked(i,j)＝npacked,resid(i,j)＋npacked(i,j-1)である。水平予測では、npacked(i,j)＝npacked,resid(i,j)＋npacked(i-1,j)である。45度下向きの角度の斜め方向の予測では、npacked(i,j)＝nresid(i,j)＋(npacked(i,j-1)＋npacked(i-1,j))>>1又はnpacked(i,j)＝npacked,resid(i,j)＋n(i-1,j-1)である。他の斜め方向の予測も同様に、予測の角度に応じて、隣接するインデックス値をブレンドすることができる。
【０１５３】
予測の以前の例では、符号化中に減算演算が使用され、復号中に加算演算が使用される。代替として、エンコーダは、予測においてビットワイズの排他的OR（XOR）演算を使用することができる。
【０１５４】
パック・インデックス値を予測すると、エンコーダは、パック・インデックス残差値を、パック・インデックス値XORその予測したパック・インデックス値として決定する。インデックス値を予測すると、エンコーダは、インデックス残差値を、インデックス値XORその予測したインデックス値として決定する。残差値はデコーダに伝達される。予測値は、予測の方向（例えば水平、垂直、斜め）に依存し得る。
【０１５５】
パック・インデックス値を予測すると、デコーダは、パック・インデックス値を、そのパック・インデックス残差値XOR予測したパック・インデックス値として決定する。インデックス値を予測すると、デコーダは、インデックス値を、そのインデックス残差値XORその予測したインデックス値として決定する。やはり、予測値は、予測の方向（例えば水平、垂直、斜め）に依存し得る。
【０１５６】
図１８は、符号化及び復号中にXOR演算を使用する予測を例示する。パック・インデックス値は7であり、（１つ以上の隣接するパック・インデックス値に基づく）予測インデックス値は6である。符号化中に、エンコーダはパック・インデックス残差は1であると決定する：00000001＝00000111  XOR  00000110。復号中に、デコーダは、パック・インデックス値７をパック・インデックス残差値と予測パック・インデックス値から再構築する：00000111＝00000001  XOR  00000110。
【０１５７】
値、予測値及び残差値の全てのビット値に適用する代わりに、予測演算（減算、XOR又はその他）を、ビットのサブセットに適用することができる。例えばXOR演算を、インデックス値とその予測値の最下位（lowest）のpビットに適用することができる。pmaskは(1<<p)-1であると仮定する。エンコーダは、インデックス残差値nresid(i,j)＝(n(i,j)>>p<<p)＋(npredicted(i,j)&pmask)XOR(n(i,j)&pmask)を決定し、ここで、npredicted(i,j)は、n(i,j-1)又はn(i-1,j)とするか、あるいは予測の方向に応じて何らかの他の予測値とすることができる。残差値はデコーダに伝えられる。デコーダは、インデックス値n(i,j)＝(nresid(i,j)>>p<<p)＋(nresid(i,j)&pmask)XOR(npredicted(i,j)&pmask)を決定する。同じ演算を予測パック・インデックス値に適用することができる。部分ビットに対する演算を、値の最下位ビット、最上位ビット又は中間ビットに適用することができる。予測演算の対象とされるビットは、連続であっても非連続であってもよい。
【０１５８】
HEVCシンタックスに従う実装では、エンコーダ及びデコーダは、インデックスマップの要素を予測する代わりに、残差値を予測するのに通常使用される符号化ツールを再使用することができる。特に、残差値に変換が適用されないとき（量子化は適用されても適用されなくてもよいが）、エンコーダ及びデコーダは、そのツールを使用して、隣接する残差値から残差値を予測することができる。その使用を伝達するための符号化ツール及びシンタックスを、インデックスマップの要素に適用することもできる。
【０１５９】
図１９は、符号化中のインデックスマップの要素の予測のための技術（１９００）を示している。この技術（１９００）は、図３又は図５ａ及び図５ｂに関連して説明したようなエンコーダ又は別のエンコーダによって実行され得る。
【０１６０】
エンコーダは、データを符号化する（１９１０）。具体的には、予測を使用してブロックについてのインデックスマップの要素を符号化する。例えばインデックスマップがインデックス残差値を含むとき、エンコーダは、ベースカラーを表すインデックス値を予測し、次いで、インデックス値及び予測インデックス値に基づいてインデックス残差値を決定する。あるいは、インデックスマップがパック・インデックス残差値を含むとき、エンコーダは、パック・インデックス値を予測し（この場合、パック・インデックス値は、ベースカラーを表し、係数符号化シンタックス構造にパックされるインデックス値である）、次いでパック・インデックス残差値を、パック・インデックス値及び予測したパック・インデックス値に基づいて決定する。予測を伴う符号化は、値の全てのビット又は値の一部のビットに対する減算演算、XOR演算又は他の演算を含むことができる。
【０１６１】
エンコーダは、符号化データを出力する（１９２０）。エンコーダは、次のブロックに継続するかどうかを確認する（１９３０）。次のブロックに継続する場合、エンコーダは、次のブロックについてのインデックスマップの要素を符号化すること（１９１０）により継続する。
【０１６２】
図２０は、復号中のインデックスマップの要素の予測のための技術（２０００）を示している。この技術（２０００）は、図４又は図６に関連して説明したようなデコーダ又は別のデコーダによって実行され得る。
【０１６３】
デコーダは、符号化データを受け取り（２０１０）、符号化データを復号する（２０２０）。具体的には、デコーダは、予測を使用してブロックについてのインデックスマップの要素を復号する。例えばインデックスマップがインデックス残差値を含むとき、デコーダは、ベースカラーを表すインデックス値を予測し、次いで、インデックス残差値及び予測したインデックス値を組み合わせる。あるいは、インデックスマップがパック・インデックス残差値を含むとき、デコーダは、パック・インデックス値を予測し（この場合、パック・インデックス値は、ベースカラーを表し、係数符号化シンタックス構造にパックされるインデックス値である）、次いでパック・インデックス残差値及び予測したパック・インデックス値を組み合わせる。予測を伴う復号処理は、値の全てのビット又は値の一部のビットに対する加算演算、XOR演算又は他の演算を含むことができる。
【０１６４】
デコーダは、次のブロックに継続するかどうかを確認する（２０３０）。次のブロックに継続する場合、デコーダは、次のブロックについての符号化データを受け取ること（２０１０）により継続する。
【０１６５】
Ｅ．例外値の処理
BCIMモードを使用するとき、ベースカラーテーブルにおいて、エンコーダ及びデコーダは、インデックス値を、ブロック内で使用される全て異なるサンプル値に割り当てることができる。一部の場合において、これは、特にインデックス値があまり頻繁に使用されないときに、伝えることが非効率的なベースカラーテーブルを生じる可能性がある。特定のベースカラーがブロック内でめったに現れない場合、インデックス値をそのベースカラーに割り当てる価値がない可能性がある。
【０１６６】
一部の例示の実装において、エンコーダ及びデコーダは、幾つかのアプローチのうちのいずれかを使用して、ブロック内でめったに生じないベースカラーに対処することができる。これらの珍しいベースカラーのうちの１つを伴う「例外」値は、インデックス値を使用して符号化及び復号されない。
【０１６７】
あるアプローチでは、エンコーダが例外値を識別するとき、エンコーダは、ベースカラーテーブル内のインデックス値で表される最も近いベースカラーを決定する。エンコーダは、最も近いベースカラーのインデックス値を使用して例外値を表す。デコーダは、例外値を、ベースカラーテーブル内のインデックス値に関連付けられるサンプル値として再構築する。このアプローチは、ロスのある圧縮タイプであり、場合によっては、相当なひずみにつながる可能性がある。
【０１６８】
別のアプローチでは、エンコーダは、例外値を、量子化され得るサンプル値として直接的に伝達する。例えばエンコーダは、ベースカラーテーブルについて可能な最も高いパック・インデックス値hを決定し、この最も高いパック・インデックス値は、マッピングに使用されるアプローチに依存する。npacked＝nであるとき、値hはnpackedの最も高い値である。nの奇数値がnpacked＝(n+1)/2に従ってマップされるとき、値hはやはりnpackedの最も高い値である。
【０１６９】
エンコーダは、例外値をe＝s/q+h+1と表し、この場合、qは量子化パラメータであり、「/」は、ゼロへの切捨てを伴う割り算を表す。量子化が適用されない場合、q＝1であり、割り算の演算をスキップすることができる。デコーダ側では、パック・インデックス値npackedがh以下の場合、デコーダは、上述のように、マッピング操作及びベースカラーテーブルを使用して、パック・インデックス値npackedからサンプル値sを復号する。しかしながら、パック化インデックス値がhより大きい場合、パック・インデックス値は、実際に例外値eであり、サンプル値は、s’’＝(e-h-1)*qとして再構築される。
【０１７０】
図２１ａ及び図２１ｂは、それぞれ符号化及び復号中におけるBCIMモードの例外値及びインデックス値の処理（２１００）を図示している。図２１ａでは、サンプル値sのブロック（２１１０）は、ベースカラー：85、41、200、168、127、26についてインデックス値で表される幾つかのサンプル値を含む。これらの値は、図２１ａに示されるベースカラーテーブルを使用して、BCIMモードで符号化される。
【０１７１】
ブロック（２１１０）は、ブロック内に頻繁には生じず、したがってベースカラーのインデックス値で表されない２つの値も含む。これらの２つの例外値、すなわち179と29は、量子化パラメータq（図２１ａ及び図２１ｂでは、q＝4）及び最も高いパック・インデックス値h（図２１ａ及び図２１ｂでは、h＝3）を使用して符号化される。hの値はインデックス値の範囲に依存する。qの値は、ブロックごと、スライスごと、タイルごと、ピクチャごと等で変わり得る。パック・インデックス値及び例外値eのブロック（２１３０）に示されるように、サンプル値179は、例外値49＝（181/4）+3+1として符号化され、サンプル値29は、例外値11＝(29/4)+3+1として符号化される。
【０１７２】
図２１ｂに示されるように、復号中に、3より大きいパック・インデックス値はいずれも例外値として処理される。例外値49は、サンプル値180＝(49-3-1)*4として再構築され、例外値11は、サンプル値28＝(11-3-1)*4として再構築される。ブロック（２１５０）のほとんどの値は、図２１ｂに示されるベースカラーテーブル及びマッピング操作を使用してBCIMモードで復号される。
【０１７３】
図２２は、BCIMモードでインデックス値及び例外値を使用して符号化するための一般化した技術（２２００）を示す。技術（２２００）は、図３又は図５ａ及び図５ｂに関連して説明されるようなエンコーダにより、あるいは別のエンコーダによって実行され得る。
【０１７４】
エンコーダは、各々がベースカラーを表す１つ以上のインデックス値と、いずれのベースカラーも表さない１つ以上の例外値とを使用して、ブロックのデータを符号化する（２２１０）。例えばエンコーダは、上述のように、パック・インデックス値又はパック・インデックス残差値を使用して、ブロックのサンプル値の一部を符号化する。また、エンコーダは、そのサンプル値の一部を例外値として符号化する。例えばエンコーダは、量子化パラメータ及び最も高いパック・インデックス値を使用して、サンプル値を例外値と置換する。
【０１７５】
エンコーダは、符号化データを出力する（２２２０）。エンコーダは、次のブロックに継続すべきかどうかを確認する（２２３０）。次のブロックに継続する場合、エンコーダは次のブロックのデータを符号化すること（２２１０）によって継続する。
【０１７６】
図２３は、BCIMモードでインデックス値及び例外値を使用して復号するための一般化した技術（２３００）を示す。技術（２３００）は、図４又は図６に関連して説明されるようなデコーダにより、あるいは別のデコーダによって実行され得る。
【０１７７】
デコーダは、符号化データを受け取り（２３１０）、符号化データを復号する。特に、デコーダは、各々がベースカラーを表す１つ以上のインデックス値を復号する。１つ以上のインデックス値は、パック・インデックス値又はパック・インデックス残差値とすることができる。デコーダは、いずれのベースカラーも表さない１つ以上の例外値も復号する。例えば例外値のうちの１つについて、デコーダは、例外値、量子化パラメータ及び最も高いパック・インデックス値を使用して、サンプル値を再構築する。
【０１７８】
デコーダは、次のブロックに継続すべきかどうかを確認する（２３３０）。次のブロックに継続する場合、デコーダは次のブロックの復号化データを受け取ること（２３１０）によって継続する。
【０１７９】
図２４は、BCIMモードのブロックの復号中にインデックス値及び例外値を使用する、より具体的な技術（２４００）を示す。技術（２４００）は、図４又は図６に関連して説明されるようなデコーダにより、あるいは別のデコーダによって実行され得る。
【０１８０】
ブロックのパック・インデックス値について、デコーダは、値が閾値を超えているかどうかを確認する（２４２０）。例えば閾値は、パック・インデックス値について最も高い可能性のある値である。パック・インデックス値が閾値を超えている場合、デコーダは、その値を例外値として処理する（２４４０）。そうでなければ、デコーダは、マッピング操作及びベースカラーテーブルを使用して、その値を処理する（２４３０）。デコーダは次いで、ブロック内の別の値を継続すべきかどうかを確認する（２４５０）。継続する場合、デコーダは、次の値をどのように復号すべきかを確認する（２５２０）。
【０１８１】
前述の例において、閾値は、最も高いパック・インデックス残差に基づく。あるいは、パック・インデックス残差値を使用するとき、閾値は、パック・インデックス値とその予測パック・インデックス値との間の最大の可能性のある差異に依存する、最も高い可能性のあるパック・インデックス残差値に基づく。
【０１８２】
開示される発明の原理が適用され得る多くの可能性のある実施形態の観点において、例示される実施形態は、本発明の好適な例に過ぎず、本発明の範囲を限定するものとして解釈されるべきでないことを認識されたい。むしろ、本発明の範囲は、以下の特許請求の範囲により定められる。したがって、特許請求の範囲内及び精神内にあるものを本発明として請求する。
【図１】
0006336058.tif 000002
【図２ａ】
0006336058.tif 000003
【図２ｂ】
0006336058.tif 000004
【図３】
0006336058.tif 000005
【図４】
0006336058.tif 000006
【図５ａ】
0006336058.tif 000007
【図５ｂ】
0006336058.tif 000008
【図６】
0006336058.tif 000009
【図７】
0006336058.tif 000010
【図８】
0006336058.tif 000011
【図９】
0006336058.tif 000012
【図１０】
0006336058.tif 000013
【図１１】
0006336058.tif 000014
【図１２】
0006336058.tif 000015
【図１３】
0006336058.tif 000016
【図１４】
0006336058.tif 000017
【図１５】
0006336058.tif 000018
【図１６】
0006336058.tif 000019
【図１７】
0006336058.tif 000020
【図１８】
0006336058.tif 000021
【図１９】
0006336058.tif 000022
【図２０】
0006336058.tif 000023
【図２１ａ】
0006336058.tif 000024
【図２１ｂ】
0006336058.tif 000025
【図２２】
0006336058.tif 000026
【図２３】
0006336058.tif 000027
【図２４】
0006336058.tif 000028