(57)【特許請求の範囲】
【請求項１】
ビデオエンコーダ又は画像エンコーダを実装するコンピューティング装置において、
ピクチャを符号化して符号化データを生成するステップであって、
ピクチャの現在のブロックのオーバーラップエリア内の再構成サンプル値を推定するステップであって、前記現在のブロックが複数のより小さいブロックを有し、前記オーバーラップエリアが前記複数のより小さいブロックのうち少なくとも１つについての潜在的なイントラ予測領域内である前記現在のブロックの一部をカバーし、前記オーバーラップエリア内の再構成サンプル値を推定するステップは、前記オーバーラップエリア内の推定される再構成サンプル値として前記オーバーラップエリア外からの再構成サンプル値を使わずに、前記オーバーラップエリアからの対応する元のサンプル値を用いて、前記オーバーラップエリア内の前記再構成サンプル値をそれぞれ推定するステップと、
ブロックベクトル（“ＢＶ”）推定を実行して前記現在のブロックのＢＶ値を決定するステップであって、前記ＢＶ値は、前記現在のブロックから予測に使われるサンプル値を含む前記ピクチャの領域までの変位を示し、前記ＢＶ推定は、前記現在のブロックの前記オーバーラップエリア内の前記の推定された再構成サンプル値のうち少なくともいくつかを使用する、ステップとを含むステップと、
ビットストリームの一部として前記符号化データを出力するステップとを含み、
前記オーバーラップエリア内の再構成サンプル値を推定するステップは、
前記オーバーラップエリア内の対応する元のサンプル値を、周波数変換、量子化、逆量子化、及び逆周波数変換を用いて処理することと、
前記の処理されたサンプル値を、それぞれ、前記オーバーラップエリア内の前記再構成サンプル値として使用することと、
を含む方法。
【請求項２】
前記ＢＶ推定は、前記現在のブロックの外側の前記ピクチャ内の元のサンプル値、又は前記現在のブロックの外側の前記ピクチャ内の再構成サンプル値をさらに使用する、請求項１に記載の方法。
【請求項３】
前記オーバーラップエリア内の対応する元のサンプル値を処理することは、
前記オーバーラップエリア内のサンプル値を少なくとも１つのＢＶ予測子を用いて予測することと、
前記の予測されたサンプル値と前記オーバーラップエリア内の前記対応する元のサンプル値とにおける差に基づいて残差値を決定することと、
前記残差値を、周波数変換、量子化、逆量子化、及び逆周波数変換を用いて処理することと、
前記処理の結果を、前記の予測されたサンプル値と組み合わせて、前記の処理されたサンプル値を得ることと、
を含む、請求項１に記載の方法。
【請求項４】
前記少なくとも１つのＢＶ予測子は、前記ピクチャにおける前のブロックのＢＶ値、又はデフォルトＢＶ予測子を含む、請求項３に記載の方法。
【請求項５】
前記ＢＶ推定は、前記現在のブロックの１つ以上の候補ＢＶ値の各々について、
前記候補ＢＶ値に従って前記より小さいブロックそれぞれと候補イントラ予測領域とにおけるブロックマッチング動作を実行すること、
を含む、請求項１に記載の方法。
【請求項６】
前記ＢＶ推定は、
前記複数のより小さいブロックの各々について、前記より小さいブロックのＢＶ値を決定することと、
前記複数のより小さいブロックの前記ＢＶ値を、前記現在のブロックの前記ＢＶ値に合成することと、
を含む、請求項１に記載の方法。
【請求項７】
前記合成することは、
前記複数のより小さいブロックの前記ＢＶ値を平均すること、
前記複数のより小さいブロックの前記ＢＶ値の周りの近隣の中で前記現在のブロックの前記ＢＶ値を識別すること、又は、
前記複数のより小さいブロックの前記ＢＶ値の周りの近隣の中で候補ＢＶ値のレート歪み最適化を用いて前記現在のブロックの前記ＢＶ値を識別すること、
を含む、請求項６に記載の方法。
【請求項８】
前記現在のブロックの前記ＢＶ値を用いて、前記現在のブロックのイントラブロックコピー（“ＢＣ”）予測を実行するステップであって、前記複数のより小さいブロックに対してブロック単位基準でＢＣ動作を実行することを含む、ステップ、
をさらに含む請求項１に記載の方法。
【請求項９】
前記現在のブロックは第１のサイズを有し、前記複数のブロックの各々は前記第１のサイズより小さい第２のサイズを有する、請求項１に記載の方法。
【請求項１０】
前記現在のブロックは符号化ユニットの符号化ブロックであり、前記複数のブロックの各々は変換ユニットの変換ブロックである、請求項１に記載の方法。
【請求項１１】
コンピューティング装置であって、
ピクチャの符号化データを生成する動作を実行するように構成されたエンコーダであって、前記エンコーダはビデオエンコーダ又は画像エンコーダであり、
ピクチャの現在のブロックのオーバーラップエリア内の再構成サンプル値を推定する手段であって、前記現在のブロックが複数のより小さいブロックを有し、前記オーバーラップエリアが前記複数のより小さいブロックのうち少なくとも１つについての潜在的なイントラ予測領域内である前記現在のブロックの一部をカバーし、前記オーバーラップエリア内の再構成サンプル値を推定するステップは、前記オーバーラップエリア内の推定される再構成サンプル値として前記オーバーラップエリア外からの再構成サンプル値を使わずに、前記オーバーラップエリアからの対応する元のサンプル値を用いて、前記オーバーラップエリア内の前記再構成サンプル値をそれぞれ推定する手段と、
ブロックベクトル（“ＢＶ”）推定を実行して前記現在のブロックのＢＶ値を決定する手段であって、前記ＢＶ値は、前記現在のブロックから予測に使われるサンプル値を含む前記ピクチャの領域までの変位を示し、前記ＢＶ推定は、前記現在のブロックの前記オーバーラップエリア内の前記の推定された再構成サンプル値のうち少なくともいくつかを使用する、手段とを有するエンコーダと、
ビットストリームの一部として出力する前記符号化データを記憶するように構成されたバッファとを含み、
前記オーバーラップエリア内の再構成サンプル値を推定する手段は、
前記オーバーラップエリア内の対応する元のサンプル値を、周波数変換、量子化、逆量子化、及び逆周波数変換を用いて処理する手段と、
前記の処理されたサンプル値を、それぞれ、前記オーバーラップエリア内の前記再構成サンプル値として使用する手段と、
を含むコンピューティング装置。
【請求項１２】
コンピューティング装置に、
ピクチャを符号化して符号化データを生成するステップであって、
ピクチャの現在のブロックのオーバーラップエリア内の再構成サンプル値を推定するステップであって、前記現在のブロックが複数のより小さいブロックを有し、前記オーバーラップエリアが前記複数のより小さいブロックのうち少なくとも１つについての潜在的なイントラ予測領域内である前記現在のブロックの一部をカバーし、前記オーバーラップエリア内の再構成サンプル値を推定するステップは、前記オーバーラップエリア内の推定される再構成サンプル値として前記オーバーラップエリア外からの再構成サンプル値を使わずに、前記オーバーラップエリアからの対応する元のサンプル値を用いて、前記オーバーラップエリア内の前記再構成サンプル値をそれぞれ推定するステップと、
ブロックベクトル（“ＢＶ”）推定を実行して前記現在のブロックのＢＶ値を決定するステップであって、前記ＢＶ値は、前記現在のブロックから予測に使われるサンプル値を含む前記ピクチャの領域までの変位を示し、前記ＢＶ推定は、前記現在のブロックの前記オーバーラップエリア内の前記の推定された再構成サンプル値のうち少なくともいくつかを使用する、ステップとを含むステップと、
ビットストリームの一部として前記符号化データを出力するステップとを実行させ、
前記オーバーラップエリア内の再構成サンプル値を推定するステップは、
前記オーバーラップエリア内の対応する元のサンプル値を、周波数変換、量子化、逆量子化、及び逆周波数変換を用いて処理することと、
前記の処理されたサンプル値を、それぞれ、前記オーバーラップエリア内の前記再構成サンプル値として使用することと、
を含む、コンピュータプログラム。
【発明の詳細な説明】
【背景技術】
【０００１】
エンジニアは、圧縮（ソースコーディング又はソースエンコーディングとも呼ばれる）を使用して、デジタルビデオのビットレートを低減させる。圧縮は、ビデオ情報をより低いビットレート形式にコンバートすることによって、該情報を記憶し及び送信することのコストを減らす。伸張（デコーディングとも呼ばれる）は、圧縮された形式から、元の情報のあるバージョンを再構成する。「コーデック」は、エンコーダ／デコーダシステムである。
【０００２】
この２０年を通じて、様々なビデオコーデック標準が採用されてきており、ＩＴＵ‐Ｔ  Ｈ．２６１、Ｈ．２６２（ＭＰＥＧ‐２又はＩＳＯ／ＩＥＣ１３８１８‐２）標準、Ｈ．２６３及びＨ．２６４（ＭＰＥＧ‐４ＡＶＣ又はＩＳＯ／ＩＥＣ１４４９６‐１０）標準、ＭＰＥＧ‐１（ＩＳＯ／ＩＥＣ１１１７２‐２）及びＭＰＥＧ‐４Ｖｉｓｕａｌ（ＩＳＯ／ＩＥＣ１４４９６‐２）標準、ＳＭＰＴＥ４２１Ｍ（ＶＣ‐１）標準が含まれる。最近では、ＨＥＶＣ標準（ＩＴＵ‐Ｔ  Ｈ．２６５又はＩＳＯ／ＩＥＣ２３００８‐２）が承認されている。ＨＥＶＣ標準に対するエクステンション（例えば、スケーラブルビデオコーディング／デコーディングのための、あるいはサンプルビット深度又はクロマサンプリングレートの観点においてより高い忠実度を有するビデオのコーディング／デコーディングのための、あるいはマルチビューコーディング／デコーディングのための）が、現在開発下にある。ビデオコーデック標準は典型的に、エンコードされるビデオビットストリームのシンタックスについてのオプションを定義し、特定の特徴がエンコーディング及びデコーディングにおいて使用されるときにビットストリームの中のパラメータを詳述する。多くの場合において、ビデオコーデック標準は、デコーディングにおいて合致する結果を達成するためにデコーダが実行すべきであるデコーディング動作に関する詳細をさらに提供する。コーデック標準の他に、様々な独自コーデックフォーマットが、エンコードされるビデオビットストリームのシンタックスと対応するデコーディング動作とについての他のオプションを定義している。
【０００３】
イントラブロックコピー（“ＢＣ”）は、ＨＥＶＣエクステンションに関する開発下の予測モードである。イントラＢＣ予測モードについて、ピクチャの現在のブロックのサンプル値は、同じピクチャの中の事前に再構成されたサンプル値を用いて予測される。ブロックベクトル（“ＢＶ”）が、予測に使用される事前に再構成されたサンプル値を含むピクチャの領域に対する、現在ブロックからの変位を示す。ＢＶは、ビットストリーム内で信号伝達される。イントラＢＣ予測は、ピクチャ内予測の一形態であり、ピクチャのブロックのイントラＢＣ予測は、同じピクチャの中のサンプル値以外のいかなるサンプル値も使用しない。
【０００４】
現在、ＨＥＶＣ標準に対するドラフトのエクステンションにおいて規定され、ＨＥＶＣ標準に対するドラフトのエクステンションに対するいくつかの参照ソフトウェアにおいて実装されるとおり、イントラＢＣ予測モードはいくつかの問題を有する。例えば、イントラＢＣ予測を如何にして使用するかに関するエンコーダ側の判断が、効率的に行われない。別の例として、多くのシナリオにおいて、ＢＶ値が効率的に信号伝達されない。
【発明の概要】
【０００５】
要約すると、発明の詳細は、イントラブロックコピー（“ＢＣ”）予測モードのエンコーダ側動作におけるイノベーションを提示する。例えば、イノベーションのいくつかは、ブロックベクトル（“ＢＶ”）推定の間に現在のブロックのオーバーラップエリア内で再構成されたサンプル値を推定する方法に関する。別のイノベーションが、「ピンポン」アプローチを用いたエンコーディング又はデコーディングの間のＢＶ値の予測に関し、これにおいて、エンコーダ又はデコーダは、ブロックのＢＶ値を予測するとき、候補ＢＶ値のペア間で選択する。
【０００６】
本明細書に説明されるイノベーションの一態様に従い、エンコーダ又はデコーダが現在のピクチャの符号化ユニット（“ＣＵ”）を処理し、これにおいて、ＣＵは４つの予測ユニット（“ＰＵ”）を有する。ＣＵは、一般に、エンコーディング及びデコーディングの目的のための１つ以上のブロックのセットであり、ＰＵの各々は、予測情報及び／又は予測処理を信号伝達する目的のための、ＣＵ内の１つ以上のブロックのセットである。４つのＰＵの各々について、エンコーダ又はデコーダは、（１）候補ＢＶ値のペアのうち１つを用いてＢＶ値を予測し、これにおいてフラグ値が候補ＢＶ値のペア間における選択を示し、（２）予測されたＢＶ値を用いてＰＵのＢＶ値を処理する。候補ＢＶ値のペアは、ＣＵの異なるＰＵについて、異なり得る。例えば、第１のＰＵについて、候補ＢＶ値のペアは、第１の初期候補ＢＶ値（ＢＶｉｎｉｔ＿０とラベル付けされる）及び第２の初期候補ＢＶ値（ＢＶｉｎｉｔ＿１とラベル付けられる）を含む。第２のＰＵについて、候補ＢＶ値のペアは、第１のＰＵのためのＢＶ値とＢＶｉｎｉｔ＿０とを含む。第３のＰＵについて、候補ＢＶ値のペアは、現在のＣＵの第１及び第２のＰＵのためのＢＶ値を含む。最後、第４のＰＵについて、候補ＢＶ値のペアは、現在のＣＵの第２及び第３のＰＵのためのＢＶ値を含む。しかしながら、現在のピクチャの後のＣＵについて、候補ＢＶ値のペアは、（現在のＣＵの第１及び第２のＰＵのためのＢＶ値が、現在のＣＵの第３及び第４のＰＵのためのＢＶ値の前に処理されたにもかかわらず、）現在のＣＵの第１及び第２のＰＵのためのＢＶ値を含む。
【０００７】
本明細書に説明されるイノベーションの別の態様に従い、エンコーダ又はデコーダが現在のピクチャの複数のＣＵを処理する。ＣＵのうち少なくとも１つが単一のＰＵを有し、ＣＵのうち少なくとも１つが複数のＰＵを有する。複数のＣＵのうちの所与のＣＵについて、この所与のＣＵが単一のＰＵを有する場合、エンコーダ又はデコーダは、（１）候補ＢＶ値のペア（第１のＢＶバッファに記憶された第１の初期候補ＢＶ値と、第２のＢＶバッファに記憶された第２の初期候補ＢＶ値とを含む）のうち１つを用いてＢＶ値を予測し、これにおいてフラグ値が候補ＢＶ値のペア間における選択を示し、（２）予測されたＢＶ値を用いて単一のＰＵのためのＢＶ値を処理する。こうすることにおいて、エンコーダ又はデコーダは、ＰＵのＢＶ値が第１のＢＶバッファに記憶されたＢＶ値に等しいかどうかに依存して、第１のＢＶバッファ及び第２のＢＶバッファを選択的に更新する。
【０００８】
そうでない場合（所与のＣＵが複数のＰＵを有する）、ＰＵの各々について、エンコーダ又はデコーダは、（１）候補ＢＶ値のペアのうち１つを用いてＢＶ値を予測し、これにおいてフラグ値が候補ＢＶ値のペア間における選択を示し、（２）予測されたＢＶ値を用いてＰＵのＢＶ値を処理する。候補ＢＶ値のペアは、異なるＰＵについて、異なることが可能である。ＰＵが所与のＣＵの第１又は第２のＰＵである場合、エンコーダ又はデコーダは、ＰＵのＢＶ値が第１のＢＶバッファに記憶されたＢＶ値に等しいかどうかに依存して、第１のＢＶバッファ及び第２のＢＶバッファを選択的に更新する。所与のＣＵの第３のＰＵ又は第４のＰＵについて、エンコーダはＢＶバッファを更新することをスキップする。
【０００９】
本明細書に説明されるイノベーションの別の態様に従い、エンコーダが、ピクチャの現在のブロックのオーバーラップエリア内の再構成されたサンプル値を推定する。現在のブロックは、複数のより小さいブロックを有する。オーバーラップエリアは、複数のより小さいブロックのうち少なくとも１つについての潜在的なイントラ予測領域内である、現在のブロックの一部をカバーする。それから、エンコーダは、ＢＶ推定を実行して、現在のブロックのＢＶ値を決定する。ＢＶ推定は、現在のブロックのオーバーラップエリア内の推定された再構成されたサンプル値のうち少なくともいくつかを使用する。
【００１０】
イントラＢＣ予測モードのためのＢＶ予測及びエンコーダ側オプションのイノベーションは、方法の一部として、あるいは方法を実行するように適合されたコンピューティング装置の一部として、あるいはコンピューティング装置に方法を実行させるコンピュータ実行可能命令を記憶した有形コンピュータ可読媒体の一部として実施されることができる。様々なイノベーションが、組み合わせにおいて又は別個に使用されることができる。
【００１１】
本発明に係る前述及び他の目的、特徴、及び利点は、添付図面を参照して進む下記の詳細な説明からより明らかになるであろう。
【図面の簡単な説明】
【００１２】
【図１】いくつかの説明される実施形態が実施されることが可能な一例示的なコンピューティングシステムの図である。
【図２ａ】いくつかの説明される実施形態が実施されることが可能な例示的なネットワーク環境の図である。
【図２ｂ】いくつかの説明される実施形態が実施されることが可能な例示的なネットワーク環境の図である。
【図３】一例示的なエンコーダシステムの図であり、該エンコーダシステムと関連して、いくつかの説明される実施形態が実施されることができる。
【図４】一例示的なデコーダシステムの図であり、該デコーダシステムと関連して、いくつかの説明される実施形態が実施されることができる。
【図５ａ】一例示的なビデオエンコーダを例示する図であり、該ビデオエンコーダと関連して、いくつかの説明される実施形態が実施されることができる。
【図５ｂ】一例示的なビデオエンコーダを例示する図であり、該ビデオエンコーダと関連して、いくつかの説明される実施形態が実施されることができる。
【図６】一例示的なビデオデコーダを例示する図であり、該ビデオデコーダと関連して、いくつかの説明される実施形態が実施されることができる。
【図７】ピクチャのブロックのためのイントラＢＣ予測を例示する図である。
【図８】ＢＶ値の検索範囲に対する例示的な制約を例示する図である。
【図９】ＢＶ値の選択に対する１つ以上の制約にさらされた、イントラＢＣ予測モードでエンコードする一般化された手法を例示するフローチャートである。
【図１０】ピクチャのブロックの例示的なｚスキャンオーダを例示する図である。
【図１１】ＢＶバッファの中の候補ＢＶ値を例示する図である。
【図１２】別のデータ構造の中の候補ＢＶ値を例示する図である。
【図１３】例示的なピンポンアプローチに従う、２Ｎ×２Ｎ  ＣＵの、２Ｎ×２Ｎ  ＰＵのためのＢＶ予測の一例を示す図である。
【図１４】例示的なピンポンアプローチに従う、２Ｎ×２Ｎ  ＣＵの、Ｎ×Ｎ  ＰＵのためのＢＶ予測の例を示す図である。
【図１５】例示的なピンポンアプローチに従う、２Ｎ×２Ｎ  ＣＵの、Ｎ×２Ｎ  ＰＵ又は２Ｎ×Ｎ  ＰＵのためのＢＶ予測の例を示す図である。
【図１６】例示的なピンポンアプローチに従う、複数のＰＵを有するＣＵのためのＢＶ値を予測する一例示的な手法を例示するフローチャートである。
【図１７】例示的なピンポンアプローチに従う、ＣＵのＢＶ値を予測する一例示的な手法を例示するフローチャートである。
【図１８】ＢＶ推定の間に複数のブロックをより大きいブロックに選択的にマージする一般化された手法を例示するフローチャートである。
【図１９】ＢＶ推定の間に複数のブロックをより大きいブロックに選択的にマージすることの利点を例示するフローチャートである。
【図２０】同時的にＢＶ推定を実行し、ブロックのブロック分割判断を行う一般化された手法を例示するフローチャートである。
【図２１】同時的に候補ＢＶ値とブロックのブロック分割判断とを評価する一例示的な手法を例示するフローチャートである。
【図２２ａ】ＢＶ推定の間の現在のブロックのオーバーラップエリアを例示する図である。
【図２２ｂ】ＢＶ推定の間の現在のブロックのオーバーラップエリアを例示する図である。
【図２３】エンコーダがオーバーラップエリア内で再構成されたサンプル値を推定するＢＶ推定の一例示的な手法を例示するフローチャートである。
【図２４】ＢＶ推定の間のＹＵＶ４：２：２フォーマットにおけるビデオの、最小変換サイズを有するブロックのオーバーラップエリアを例示する図である。
【発明を実施するための形態】
【００１３】
本詳細な説明は、エンコーディング及びデコーディングの間のブロックベクトル（“ＢＶ”）予測におけるイノベーション、並びにエンコーディングの間のイントラブロックコピー（“ＢＣ”）予測モードのためのエンコーダ側判断におけるイノベーションを提示する。具体的に、本詳細な説明は、ＢＶ推定の間に現在のブロックのオーバーラップエリア内のサンプル値を推定するイノベーションを提示する。本詳細な説明は、さらに、「ピンポン（ping-pong）」アプローチを用いたエンコーディング及びデコーディングの間のＢＶ予測のイノベーションを提示し、該イノベーションに従い、エンコーダ又はデコーダは、ブロックのＢＶ値を予測するとき、候補ＢＶ値のペア間において選択する。
【００１４】
本明細書に説明される動作は、所々で、ビデオエンコーダ又はビデオデコーダにより実行されるものとして説明されるが、多くの場合において、上記動作は、別のタイプのメディア処理ツール（例えば、画像エンコーダ又は画像デコーダ）により実行されることが可能である。
【００１５】
本明細書に説明されるイノベーションのいくつかは、ＨＥＶＣ標準に固有のシンタックス要素及び動作を参照して例示される。例えば、ＨＥＶＣ標準のドラフトバージョンＪＣＴＶＣ‐Ｏ１００５、“Ｈｉｇｈ  Ｅｆｆｉｃｉｅｎｃｙ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＨＥＶＣ）  Ｒａｎｇｅ  Ｅｘｔｅｎｓｉｏｎｓ  Ｔｅｘｔ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ：Ｄｒａｆｔ  ５”、ＪＣＴＶＣ‐Ｏ１００５‐ｖ３、２０１３年１１月に対して、参照が行われる。本明細書に説明されるイノベーションは、さらに、他の標準又はフォーマットのために実施されることが可能である。
【００１６】
より一般的に、本明細書に説明される例に対する様々な代替物があり得る。例えば、本明細書に説明される方法のいくつかは、特定の方法動作を分割し、繰り返し、又は省略することなどにより、説明される方法動作の順序付けを変更することによって変えられることが可能である。開示されるテクノロジーの様々な態様が、組み合わせにおいて又は別個に使用されることができる。種々の実施形態が、説明されるイノベーションの１つ以上を使用する。本明細書に説明されるイノベーションのいくつかは、背景技術において記された問題のうち１つ以上に対処する。典型的に、所与の手法／ツールは、すべての上記の問題を解決するものではない。
【００１７】
Ｉ．例示的なコンピューティングシステム
図１は、説明されるイノベーションのいくつかが実施され得る適切なコンピューティングシステム（１００）の一般化された一例を例示する。イノベーションは、多様な汎用目的又は特別目的コンピューティングシステムにおいて実施され得るので、コンピューティングシステム（１００）は、使用法又は機能性の範囲に関していかなる限定も示唆するものではない。
【００１８】
図１を参照すると、コンピューティングシステム（１００）は、１つ以上の処理ユニット（１１０、１１５）、及びメモリ（１２０、１２５）を含む。処理ユニット（１１０、１１５）は、コンピュータ実行可能命令を実行する。処理ユニットは、汎用目的中央処理ユニット（“ＣＰＵ”）、特定用途向け集積回路（“ＡＳＩＣ”）におけるプロセッサ、又は任意の他のタイプのプロセッサであり得る。マルチプロセシングシステムにおいて、複数の処理ユニットが、コンピュータ実行可能命令を実行して処理パワーを増大させる。例えば、図１は、中央処理ユニット（１１０）と、グラフィクス処理ユニット又はコプロセシングユニット（１１５）とを示す。有形メモリ（１２０、１２５）は、処理ユニットによりアクセス可能な揮発性メモリ（例えば、レジスタ、キャッシュ、ＲＡＭ）、不揮発性メモリ（例えば、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ等）、又は上記２つの何らかの組み合わせであり得る。メモリ（１２０、１２５）は、ＢＶ予測のための１つ以上のイノベーションを実施し、及び／又はＢＶ推定の間に現在のブロックのオーバーラップエリア内のサンプル値を推定するソフトウェア（１８０）、又はイントラＢＣ予測モードのための他のエンコーダ側オプションを、処理ユニットによる実行に適したコンピュータ実行可能命令の形式において記憶する。
【００１９】
コンピューティングシステムは、さらなる特徴を有し得る。例えば、コンピューティングシステム（１００）は、記憶装置（１４０）、１つ以上の入力装置（１５０）、１つ以上の出力装置（１６０）、及び１つ以上の通信接続（１７０）を含む。相互接続メカニズム（図示されていない）、例えば、バス、コントローラ、又はネットワークなどが、コンピューティングシステム（１００）のコンポーネントを相互接続する。典型的に、オペレーティングシステムソフトウェア（図示されていない）が、コンピューティングシステム（１００）において実行される他のソフトウェアのための動作環境を提供し、コンピューティングシステム（１００）のコンポーネントのアクティビティを調整する。
【００２０】
有形記憶装置（１４０）は、取外し可能又は取外し不能であることが可能であり、磁気ディスク、磁気テープ若しくはカセット、ＣＤ‐ＲＯＭ、ＤＶＤ、又は、情報を記憶することに使用されることが可能でありコンピューティングシステム（１００）内でアクセスされることが可能である任意の他の媒体を含む。記憶装置（１４０）は、ＢＶ予測のための１つ以上のイノベーションを実施し、及び／又はＢＶ推定の間に現在のブロックのオーバーラップエリア内のサンプル値を推定するソフトウェア（１８０）、又はイントラＢＣ予測モードのための他のエンコーダ側オプションの命令を記憶する。
【００２１】
入力装置（１５０）は、キーボード、マウス、ペン、若しくはトラックボールなどのタッチ入力装置、音声入力装置、スキャニング装置、又は、コンピューティングシステム（１００）に対する入力を提供する別の装置であり得る。ビデオについて、入力装置（１５０）は、カメラ、ビデオカード、ＴＶチューナカード、若しくは、アナログ若しくはデジタル形式においてビデオ入力を受け入れる同様の装置、又は、コンピューティングシステム（１００）へのビデオ入力を読み出すＣＤ‐ＲＯＭ若しくはＣＤ‐ＲＷであり得る。出力装置（１６０）は、ディスプレイ、プリンタ、スピーカー、ＣＤライタ、又は、コンピューティングシステム（１００）からの出力を提供する別の装置であり得る。
【００２２】
通信接続（１７０）は、通信媒体を通じて別のコンピューティングエンティティに対する通信を可能にする。通信媒体は、コンピュータ実行可能命令、オーディオ若しくはビデオの入力若しくは出力、又は他のデータなどの情報を、変調されたデータ信号において運ぶ。変調されたデータ信号は、その特性のうち１つ以上を、信号の中に情報をエンコードする仕方において設定させ又は変更させた信号である。限定ではなく例として、通信媒体は、電気、光、ＲＦ、又は他の搬送波を使用することができる。
【００２３】
イノベーションは、コンピュータ可読媒体の一般的文脈において説明されることができる。コンピュータ可読媒体は、コンピューティング環境内でアクセスされることが可能な任意の利用可能な有形媒体である。限定ではなく例として、コンピューティングシステム（１００）において、コンピュータ可読媒体は、メモリ（１２０、１２５）、記憶装置（１４０）、及び上記のうち任意のものの組み合わせを含む。
【００２４】
イノベーションは、コンピューティングシステムにおいてターゲットの実プロセッサ又は仮想プロセッサ上で実行される、プログラムモジュールに含まれるものなどのコンピュータ実行可能命令の一般的文脈において説明されることができる。一般に、プログラムモジュールは、特定のタスクを実行し又は特定の抽象データタイプを実装するルーチン、プログラム、ライブラリ、オブジェクト、クラス、コンポーネント、データ構造等を含む。プログラムモジュールの機能性は、様々な実施形態において所望されるとおりにプログラムモジュール間で組み合わせられ又は分割されてもよい。プログラムモジュールのコンピュータ実行可能命令は、局所的な又は分散されたコンピューティングシステム内で実行されることが可能である。
【００２５】
用語「システム」及び「装置」は、本明細書において、交換可能に使用される。文脈が別段明確に示さない限り、いずれの用語も、コンピューティングシステム又はコンピューティング装置のタイプに対するいかなる限定も暗示しない。一般に、コンピューティングシステム又はコンピューティング装置は、局所的であるか又は分散されることが可能であり、本明細書に説明される機能性を実施するソフトウェアを有する特別目的ハードウェア及び／又は汎用目的ハードウェアの任意の組み合わせを含むことができる。
【００２６】
開示される方法は、さらに、開示される方法のうち任意のものを実行するように構成された専用のコンピューティングハードウェアを用いて実施されてもよい。例えば、開示される方法は、開示される方法のうち任意のものを実施するように特別に設計され又は構成された集積回路（例えば、ＡＳＩＣ（ＡＳＩＣデジタルシグナルプロセッサ（“ＤＳＰ”）、グラフィクス処理ユニット（“ＧＰＵ”）、又は、プログラマブルロジック装置（“ＰＬＤ”）、例えば、フィールドプログラマブルゲートアレイ（“ＦＰＧＡ”）など）によって実施されることが可能である。
【００２７】
提示のために、本詳細な説明は、「決定する」及び「使用する」などの用語を用いて、コンピューティングシステムにおけるコンピュータ動作を説明する。上記用語は、コンピュータによって実行される動作の高レベル抽象化であり、人間によって実行される行為と混同されるべきではない。上記用語に対応する実際のコンピュータ動作は、実装に依存して変動する。本明細書において使用されるとき、用語「最適＊（optimiz*）」（最適化又は最適化することなどのバリエーションを含む）は、所与の判断スコープ下にある選択肢間での選択を参照し、最適化された選択が拡張された判断スコープに対する「最良の」又は「最適な」選択であることを暗示する訳ではない。
【００２８】
ＩＩ．例示的なネットワーク環境
図２ａ及び図２ｂは、ビデオエンコーダ（２２０）及びビデオデコーダ（２７０）を含む例示的なネットワーク環境（２０１、２０２）を示す。エンコーダ（２２０）及びデコーダ（２７０）は、ネットワーク（２５０）を通じて適切な通信プロトコルを用いて接続される。ネットワーク（２５０）は、インターネット又は別のコンピュータネットワークを含み得る。
【００２９】
図２ａに示されるネットワーク環境（２０１）において、各リアルタイム通信（“ＲＴＣ”）ツール（２１０）が、双方向通信のためにエンコーダ（２２０）とデコーダ（２７０）との双方を含む。所与のエンコーダ（２２０）が、ＨＥＶＣ標準（Ｈ．２６５としても知られる）、ＳＭＰＴＥ４２１Ｍ標準、ＩＳＯ‐ＩＥＣ１４４９６‐１０標準（Ｈ．２６４又はＡＶＣとしても知られる）、別の標準、又は独自フォーマットの、バリエーション又はエクステンションに準拠した出力を生成することができ、対応するデコーダ（２７０）は、エンコーダ（２２０）からのエンコードされたデータを受け入れることができる。双方向通信は、ビデオ会議、ビデオ電話呼び出し、又は、他の２つのパーティ若しくはマルチパーティの通信シナリオの一部であり得る。図２ａにおけるネットワーク環境（２０１）は２つのリアルタイム通信ツール（２１０）を含むが、ネットワーク環境（２０１）は、代わって、マルチパーティ通信に参加する３つ又はそれ以上のリアルタイム通信ツール（２１０）を含んでもよい。
【００３０】
リアルタイム通信ツール（２１０）は、エンコーダ（２２０）によるエンコーディングを管理する。図３は、リアルタイム通信ツール（２１０）に含まれることが可能な一例示的なエンコーダシステム（３００）を示す。別法として、リアルタイム通信ツール（２１０）は別のエンコーダシステムを使用する。リアルタイム通信ツール（２１０）は、さらに、デコーダ（２７０）によるデコーディングを管理する。図４は、一例示的なデコーダシステム（４００）を示し、デコーダシステム（４００）は、リアルタイム通信ツール（２１０）に含まれ得る。別法として、リアルタイム通信ツール（２１０）は別のデコーダシステムを使用する。
【００３１】
図２ｂに示されるネットワーク環境（２０２）において、エンコーディングツール（２１２）が、複数の再生ツール（２１４）に対する配信のためにビデオをエンコードするエンコーダ（２２０）を含み、上記再生ツール（２１４）は、デコーダ（２７０）を含む。ビデオ監視システム、ウェブカメラモニタリングシステム、リモートデスクトップ会議プレゼンテーション、又は他のシナリオに対して、単方向通信が提供されることが可能であり、これにおいて、ビデオはエンコードされて、ある場所から１つ以上の他の場所に送られる。図２ｂにおけるネットワーク環境（２０２）は２つの再生ツール（２１４）を含むが、ネットワーク環境（２０２）は、より多くの又はより少ない再生ツール（２１４）を含むことが可能である。一般に、再生ツール（２１４）はエンコーディングツール（２１２）と通信して、再生ツール（２１４）が受信すべきビデオのストリームを決定する。再生ツール（２１４）は、ストリームを受信し、受信されたエンコードデータを適切な期間の間バッファし（buffers）、デコーディング及び再生を始める。
【００３２】
図３は、エンコーディングツール（２１２）に含まれることが可能な一例示的なエンコーダシステム（３００）を示す。別法として、エンコーディングツール（２１２）は別のエンコーダシステムを使用する。エンコーディングツール（２１２）は、１つ以上の再生ツール（２１４）との接続を管理するサーバ側コントローラロジックをさらに含み得る。図４は、一例示的なデコーダシステム（４００）を示し、デコーダシステム４００は、再生ツール（２１４）に含まれ得る。別法として、再生ツール（２１４）は別のデコーダシステムを使用する。再生ツール（２１４）は、エンコーディングツール（２１２）との接続を管理するクライアント側コントローラロジックをさらに含み得る。
【００３３】
ＩＩＩ．例示的なエンコーダシステム
図３は、一例示的なエンコーダシステム（３００）のブロック図であり、エンコーダシステム（３００）と関連して、いくつかの説明される実施形態が実施され得る。エンコーダシステム（３００）は、複数のエンコーディングモードのうち任意のもの、例えば、リアルタイム通信のための低レイテンシエンコーディングモード、トランスコーディングモード、及びファイル又はストリームから再生のためのメディアを生成するより高いレイテンシのエンコーディングモードなどにおいて動作することができる汎用目的エンコーディングツールであることが可能であり、あるいは、エンコーダシステム（３００）は、上記のエンコーディングモードの１つに適合された特別目的エンコーディングツールであってもよい。エンコーダシステム（３００）は、オペレーティングシステムモジュールとして、アプリケーションライブラリの一部として、あるいはスタンドアロンアプリケーションとして実装されることが可能である。全体的に見て、エンコーダシステム（３００）は、ビデオソース（３１０）からソースビデオフレーム（３１１）のシーケンスを受信し、エンコードされたデータをチャネル（３９０）に対する出力として生成する。チャネルに対して出力される、エンコードされたデータは、イントラＢＣ予測モードを用いてエンコードされたコンテンツを含み得る。
【００３４】
ビデオソース（３１０）は、カメラ、チューナカード、記憶媒体、又は他のデジタルビデオソースであり得る。ビデオソース（３１０）は、例えば３０フレーム毎秒のフレームレートにおいて、ビデオフレームのシーケンスを生成する。本明細書において使用されるとき、用語「フレーム」は、ソースの、符号化され又は再構成された画像データを一般に参照する。プログレッシブスキャンビデオについて、フレームは、プログレッシブスキャンビデオフレームである。インターレースされたビデオについて、例示的な実施形態において、インターレースされたビデオフレームは、エンコーディングの前にインターレース解除される。別法として、２つの相補的なインターレースされたビデオフィールドが、単一のビデオフレームとして一緒にエンコードされ、あるいは２つの別個にエンコードされるフィールドとしてエンコードされる。プログレッシブスキャンビデオフレーム又はインターレーススキャンビデオフレームを示すことの他に、用語「フレーム」又は「ピクチャ」は、単一の非ペアのビデオフィールド、相補的なペアのビデオフィールド、所与の時間におけるビデオオブジェクトを表すビデオオブジェクトプレーン、又はより大きい画像における関心のある領域を示し得る。ビデオオブジェクトプレーン又は領域は、あるシーンの複数のオブジェクト又は領域を含むより大きい画像のうちの一部であり得る。
【００３５】
到着するソースフレーム（３１１）はソースフレーム一時メモリ記憶エリア（３２０）に記憶され、ソースフレーム一時メモリ記憶エリア（３２０）は複数のフレームバッファ記憶エリア（３２１、３２２、・・・、３２ｎ）を含む。フレームバッファ（３２１、３２２等）は、ソースフレーム記憶エリア（３２０）の中の１つのソースフレームを保持する。ソースフレーム（３１１）のうち１つ以上がフレームバッファ（３２１、３２２等）に記憶された後、フレーム選択器（３３０）が、ソースフレーム記憶エリア（３２０）から個々のソースフレームを選択する。エンコーダ（３４０）に対する入力のためにフレーム選択器（３３０）によってフレームが選択される順序は、ビデオソース（３１０）によってフレームが生成される順序とは異なってもよい。例えば、いくつかのフレームのエンコーディングが順序において遅らせられて、いくつかの後のフレームが最初にエンコードされることを可能にし、ゆえに時間的に後方の予測を容易にすることができる。エンコーダ（３４０）の前に、エンコーダシステム（３００）はプリプロセッサ（図示されていない）を含んでもよく、プリプロセッサは、エンコーディングの前に選択されたフレーム（３３１）の前処理（例えば、フィルタリング）を実行する。前処理には、一次（例えば、ルマ）及び二次（例えば、赤に向かう及び青に向かうクロマ差分）成分への色空間コンバージョン、及び、エンコーディングのためのリサンプリング処理（例えば、クロマ成分の空間解像度を低減させるため）を含むことができる。典型的に、エンコーディングの前、ビデオはＹＵＶなどの色空間にコンバートされており、これにおいて、ルマ（Ｙ）成分のサンプル値は明るさ又は輝度値を表し、クロマ（Ｕ、Ｖ）成分のサンプル値は色差値を表す。クロマサンプル値は、より低いクロマサンプリングレートへ（例えば、ＹＵＶ４：２：０フォーマット又はＹＵＶ４：２：２のために）サブサンプリングされ（sub-sampled）てもよく、あるいは、クロマサンプル値は、ルマサンプル値と同じ（例えば、ＹＵＶ４：４：４フォーマットのための）解像度を有してもよい。ＹＵＶ４：２：０フォーマットにおいて、クロマ成分は、ファクタの２によって水平に、及びファクタの２によって垂直にダウンサンプリングされる（downsampled）。ＹＵＶ４：２：２フォーマットにおいて、クロマ成分は、ファクタの２によって水平にダウンサンプリングされる。あるいは、ビデオは別のフォーマット（例えば、ＲＧＢ４：４：４フォーマット）においてエンコードされてもよい。
【００３６】
エンコーダ（３４０）は、選択されたフレーム（３３１）をエンコードして、符号化されたフレーム（３４１）を生成し、さらに、メモリ管理制御動作（“ＭＭＣＯ”）信号（３４２）又は参照ピクチャセット（“ＲＰＳ”）情報を生成する。現在のフレームが、エンコードされている最初のフレームでない場合、そのエンコーディング処理を実行するとき、エンコーダ（３４０）は、デコード済みフレーム一時メモリ記憶エリア（３６０）に記憶されている１つ以上の事前にエンコードされた／デコードされたフレーム（３６９）を使用することができる。こうした記憶されているデコードされたフレーム（３６９）が、現在のソースフレーム（３３１）のコンテンツのフレーム間（inter-frame）予測のための参照フレームとして使用される。ＭＭＣＯ／ＲＰＳ情報（３４２）は、デコーダに対して、どの再構成されたフレームが参照フレームとして使用されることが可能であり、したがってフレーム記憶エリアに記憶されるべきであるかを示す。
【００３７】
一般に、エンコーダ（３４０）は、エンコーディングタスク、例えば、タイルへの区分化、イントラ予測推定及び予測、動き推定及び補償、周波数変換、量子化、並びにエントロピー符号化などを実行する、複数のエンコーディングモジュールを含む。エンコーダ（３４０）により実行される正確な動作は、圧縮フォーマットに依存して変動し得る。出力されるエンコードされたデータのフォーマットは、ＨＥＶＣフォーマット（Ｈ．２６５）、Ｗｉｎｄｏｗｓ  Ｍｅｄｉａ  Ｖｉｄｅｏフォーマット、ＶＣ‐１フォーマット、ＭＰＥＧｘフォーマット（例えば、ＭＰＥＧ‐１、ＭＰＥＧ‐２、又はＭＰＥＧ‐４）、Ｈ．２６ｘフォーマット（例えば、Ｈ．２６１、Ｈ．２６２、Ｈ．２６３、Ｈ．２６４）、又は別のフォーマットの、バリエーション又はエクステンションであり得る。
【００３８】
エンコーダ（３４０）は、フレームを、同じサイズ又は異なるサイズの複数のタイルに区分することができる。例えば、エンコーダ（３４０）は、フレームをタイル行及びタイル列に沿って分割する。該タイル行及びタイル列は、フレーム境界を用いて、フレーム内のタイルの水平及び垂直の境界を定義し、各タイルは、長方形の領域である。タイルは、並列処理のオプションを提供するためにしばしば使用される。フレームは、さらに、１つ以上のスライスとして編成されてもよく、スライスは、フレーム全体又はフレームのうちの領域であり得る。スライスは、フレームの中の他のスライスから独立してデコードされることが可能であり、このことは誤り耐性を向上させる。スライス又はタイルのコンテンツは、エンコーディング及びデコーディングの目的で、ブロック又は、サンプルの他のセットにさらに区分される。
【００３９】
ＨＥＶＣ標準に従うシンタックスのために、エンコーダは、フレーム（又は、スライス若しくはタイル）のコンテンツを、符号化ツリーユニット（coding  tree  unit）に分割する。符号化ツリーユニット（“ＣＴＵ”）は、ルマ符号化ツリーブロック（“ＣＴＢ”）として編成されたルマサンプル値と、２つのクロマＣＴＢとして編成された、対応するクロマサンプル値とを含む。ＣＴＵ（及び、そのＣＴＢ）のサイズはエンコーダによって選択され、例えば、６４×６４、３２×３２、又は１６×１６サンプル値であり得る。ＣＴＵは１つ以上の符号化ユニットを含む。符号化ユニット（“ＣＵ”）は、ルマ符号化ブロック（“ＣＢ”）と、２つの対応するクロマＣＢとを有する。例えば、６４×６４ルマＣＴＢ及び２つの６４×６４クロマＣＴＢを有するＣＴＵ（ＹＵＶ４：４：４フォーマット）が４つのＣＵに分割されることが可能であり、これにおいて、各ＣＵは３２×３２ルマＣＢ及び２つの３２×３２クロマＣＢを含み、各ＣＵは可能性として、より小さいＣＵにさらに分割される。あるいは、別の例として、６４×６４ルマＣＴＢ及び２つの３２×３２クロマＣＴＢを有するＣＴＵ（ＹＵＶ４：２：０フォーマット）が４つのＣＵに分割されることが可能であり、これにおいて、各ＣＵは３２×３２ルマＣＢ及び２つの１６×１６クロマＣＢを含み、各ＣＵは可能性として、より小さいＣＵにさらに分割される。ＣＵの最小許容可能サイズ（例えば、８×８、１６×１６）が、ビットストリームの中で信号伝達される（signaled）ことができる。
【００４０】
一般に、ＣＵはインター又はイントラなどの予測モードを有する。ＣＵは、予測情報（例えば、予測モード詳細、変位値等）及び／又は予測処理を信号伝達する目的で、１つ以上の予測ユニットを含む。予測ユニット（“ＰＵ”）は、ルマ予測ブロック（“ＰＢ”）と２つのクロマＰＢとを有する。イントラ予測されるＣＵについて、ＰＵは、ＣＵが最小サイズ（例えば、８×８）を有さない限り、ＣＵと同じサイズを有する。上記の場合、ＣＵのシンタックス要素により示されるとおり、ＣＵが４つのより小さいＰＵに分割されてもよく（例えば、最小ＣＵサイズが８×８である場合、各々４×４）、あるいは、ＰＵが最小ＣＵサイズを有してもよい。ＣＵは、残差符号化／デコーディングの目的で１つ以上の変換ユニットをさらに有し、変換ユニット（“ＴＵ”）は、変換ブロック（“ＴＢ”）と２つのクロマＴＢとを有する。イントラ予測されるＣＵにおけるＰＵは、単一のＴＵ（サイズにおいてＰＵに等しい）又は複数のＴＵを包含し得る。本明細書において使用されるとき、用語「ブロック」は、文脈に依存して、ＣＢ、ＰＢ、ＴＢ、又はサンプル値の他のセットを示すことがある。エンコーダは、ビデオを如何にしてＣＴＵ、ＣＵ、ＰＵ、ＴＵ等に区分するかを決める。
【００４１】
図３に戻ると、エンコーダは、ソースフレーム（３３１）のイントラ符号化されたブロックを、予測の観点において、フレーム（３３１）の中の他の事前に再構成されたサンプル値から表現する。イントラＢＣ予測について、ピクチャ内推定器が、他の事前に再構成されたサンプル値に関して、ブロックの変位を推定する。フレーム内（intra-frame）予測参照領域（又は、短くは、イントラ予測領域）は、ブロックのＢＣ予測値を作り出すために使用されるフレームの中のサンプルの領域である。フレーム内予測領域は、ブロックベクトル（“ＢＶ”）値（ＢＶ推定において決定される）で示されることができる。ブロックのイントラ空間予測について、ピクチャ内推定器は、近隣の再構成されたサンプル値の、ブロックへの補外を推定する。ピクチャ内推定器は、予測情報（例えば、イントラＢＣ予測のためのＢＶ値、又はイントラ空間予測のための予測モード（方向）など）を出力することができ、これがエントロピー符号化される。フレーム内予測予測器が予測情報を適用して、イントラ予測値を決定する。
【００４２】
エンコーダ（３４０）は、ソースフレームのフレーム間符号化された予測されたブロックを、予測の観点において、参照フレームから表現する。動き推定器が、１つ以上の参照フレーム（３６９）に関して、ブロックの動きを推定する。複数の参照フレームが使用されるとき、この複数の参照フレームは、異なる時間方向又は同じ時間方向からであり得る。動き補償された予測参照領域は、現在のフレームのサンプル値のブロックについての動き補償された予測値を作り出すために使用される参照フレームの中のサンプル領域である。動き推定器は動きベクトル（“ＭＶ”）情報などの動き情報を出力し、これがエントロピー符号化される。動き補償器がＭＶを参照フレーム（３６９）に適用して、フレーム間予測のための動き補償された予測値を決定する。
【００４３】
エンコーダは、ブロックの予測値（イントラ又はインター）と対応する元の値とにおける差を（もしあれば）決定することができる。これら予測残差値は、周波数変換、量子化、及びエントロピーエンコーディングを用いて、さらにエンコードされる。例えば、エンコーダ（３４０）は、ピクチャ、タイル、スライス、及び／又はビデオの他の部分のための量子化パラメータ（“ＱＰ”）の値を設定し、これに従って、変換係数を量子化する。エンコーダ（３４０）のエントロピー符号器が、量子化された変換係数値と、特定の付帯情報（例えば、ＭＶ情報、ＢＶ値、ＱＰ値、モード判断、パラメータ選択）とを圧縮する。典型的に、エントロピー符号化手法には、指数ゴロム（Exponential-Golomb）符号化、ゴロム・ライス符号化、算術符号化、差分符号化、ハフマン符号化、ランレングス符号化、可変長対可変長（“Ｖ２Ｖ”；variable-length-to-variable-length）符号化、可変長対固定長（“Ｖ２Ｆ”；variable-length-to-fixed-length）符号化、レンペル・ジブ（“ＬＺ”）符号化、辞書符号化、確率間隔区分エントロピー符号化（“ＰＩＰＥ”；probability  interval  partitioning  entropy  coding）、及び上記の組み合わせが含まれる。エントロピー符号器は、異なる種類の情報に対して異なる符号化手法を使用することができ、複数の手法を組み合わせにおいて適用することができ（例えば、ゴロム・ライス符号化の後に算術符号化を適用することによって）、特定の符号化手法内の複数の符号テーブルの中から選ぶことができる。
【００４４】
適応的デブロッキングフィルタが、エンコーダ（３４０）の中の動き補償ループ内に含まれて、デコードされたフレームの中のブロック境界行及び／又は列にわたる不連続性を滑らかにする。別法として、又はさらに、他のフィルタリング（例えば、デリンギング（de-ringing）フィルタリング、適応ループフィルタリング（“ＡＬＦ”）、又はサンプル適応オフセット（“ＳＡＯ”）フィルタリングなど；図示されていない）がインループフィルタリング動作として適用されてもよい。
【００４５】
符号化されたフレーム（３４１）及びＭＭＣＯ／ＲＰＳ情報（３４２）（又は、ＭＭＣＯ／ＲＰＳ情報（３４２）と同等の情報、なぜならば、フレームの依存性及び順序付け構造がエンコーダ（３４０）においてすでに知られているため）は、デコーディング処理エミュレータ（３５０）によって処理される。デコーディング処理エミュレータ（３５０）は、デコーダの機能性のうちいくつか、例えば、参照フレームを再構成するデコーディングタスクを実施する。ＭＭＣＯ／ＲＰＳ情報（３４２）に準拠する仕方において、デコーディング処理エミュレータ（３５０）は、所与の符号化されたフレーム（３４１）が、エンコードされるべき後のフレームのフレーム間予測における参照フレームとしての使用のために再構成され及び記憶される必要があるかどうかを決定する。符号化されたフレーム（３４１）が記憶される必要がある場合、デコーディング処理エミュレータ（３５０）は、符号化されたフレーム（３４１）を受信して対応するデコードされたフレーム（３５１）を生成するデコーダによって指揮されるであろうデコーディング処理を、モデル化する。そのようにすることにおいて、エンコーダ（３４０）が、デコードされたフレームの記憶領域（３６０）に記憶されているデコードされたフレーム（３６９）を使用しているとき、デコーディング処理エミュレータ（３５０）は、デコーディング処理の一部として、記憶領域（３６０）から、デコードされたフレーム（３６９）をさらに使用する。
【００４６】
デコード済みフレーム一時メモリ記憶エリア（３６０）は、複数のフレームバッファ記憶エリア（３６１、３６２、・・・、３６ｎ）を含む。ＭＭＣＯ／ＲＰＳ情報（３４２）に準拠する仕方において、デコーディング処理エミュレータ（３５０）は、記憶エリア（３６０）のコンテンツを管理して、エンコーダ（３４０）によって参照フレームとしての使用にもはや必要とされないフレームを有する任意のフレームバッファ（３６１、３６２等）を識別する。デコーディング処理をモデル化した後、デコーディング処理エミュレータ（３５０）は、上記の仕方において識別されたフレームバッファ（３６１、３６２等）に、新たにデコードされたフレーム（３５１）を記憶する。
【００４７】
符号化されたフレーム（３４１）及びＭＭＣＯ／ＲＰＳ情報（３４２）は、一時符号化済みデータエリア（３７０）にバッファされる。符号化済みデータエリア（３７０）に集められる符号化されたデータは、要素的な符号化されたビデオビットストリームのシンタックスの一部として、１つ以上のピクチャについてのエンコードされたデータを含む。符号化済みデータエリア（３７０）に集められる符号化されたデータは、符号化されたビデオデータに関するメディアメタデータを（例えば、１つ以上のサプリメンタルエンハンスメント情報（“ＳＥＩ”；supplemental  enhancement  information）メッセージ又はビデオユーザビリティ情報（“ＶＵＩ”；video  usability  information）メッセージの中の１つ以上のパラメータとして）さらに含み得る。
【００４８】
一時符号化済みデータエリア（３７０）からの集められたデータ（３７１）は、チャネルエンコーダ（３８０）によって処理される。チャネルエンコーダ（３８０）は、集められたデータを送信又は記憶のためにメディアストリームとして（例えば、ＩＴＵ‐Ｔ  Ｈ．２２２．０  ｜  ＩＳＯ／ＩＥＣ１３８１８‐１などのメディアプログラムストリーム若しくはトランスポートストリームフォーマット、又はＩＥＴＦ  ＲＦＣ３５５０などのインターネットリアルタイムトランスポートプロトコルフォーマットに従って）パケット化し、かつ／あるいは多重化することができる。上記の場合、チャネルエンコーダ（３８０）は、シンタックス要素をメディア送信ストリームのシンタックスの一部として追加することができる。あるいは、チャネルエンコーダ（３８０）は、集められたデータを記憶のためにファイルとして（例えば、ＩＳＯ／ＩＥＣ１４４９６‐１２などのメディアコンテナフォーマットに従って）編成することができ、この場合、チャネルエンコーダ（３８０）は、シンタックス要素をメディア記憶ファイルのシンタックスの一部として追加することができる。あるいは、より一般的に、チャネルエンコーダ（３８０）は、１つ以上のメディアシステム多重化プロトコル又はトランスポートプロトコルを実装することができ、この場合、チャネルエンコーダ（３８０）は、シンタックス要素をプロトコルのシンタックスの一部として追加することができる。チャネルエンコーダ（３８０）は、チャネルに対する出力を提供し、該チャネルは、記憶装置、通信接続、又は出力のための別のチャネルを表す。チャネルエンコーダ（３８０）又はチャネル（３９０）は、例えば、前方誤り訂正（“ＦＥＣ”）エンコーディング及びアナログ信号変調のために、他の要素（図示されていない）をさらに含んでもよい。
【００４９】
ＩＶ．例示的なデコーダシステム
図４は、一例示的なデコーダシステム（４００）のブロック図であり、デコーダシステム４００と関連して、いくつかの説明される実施形態が実施されることができる。デコーダシステム（４００）は、複数のデコーディングモードのうち任意のもの、例えば、リアルタイム通信のための低レイテンシデコーディングモード、及びファイル又はストリームからのメディア再生のためのより高いレイテンシのデコーディングモードなどにおいて動作することができる汎用目的デコーディングツールであることが可能であり、あるいは、デコーダシステム（４００）は、上記のデコーディングモードの１つに適合された特別目的デコーディングツールであってもよい。デコーダシステム（４００）は、オペレーティングシステムモジュールとして、アプリケーションライブラリの一部として、あるいはスタンドアロンアプリケーションとして実装されることが可能である。全体的に見て、デコーダシステム（４００）は、符号化されたデータをチャネル（４１０）から受信し、再構成されたフレームを出力として出力あて先（４９０）のために生成する。符号化されたデータは、イントラＢＣ予測モードを用いてエンコードされたコンテンツを含み得る。
【００５０】
デコーダシステム（４００）はチャネル（４１０）を含み、チャネル４１０は、記憶装置、通信接続、又は入力としての符号化されたデータのための別のチャネルを表し得る。チャネル（４１０）は、チャネル符号化されている符号化されたデータを生成する。チャネルデコーダ（４２０）は、符号化されたデータを処理することができる。例えば、チャネルデコーダ（４２０）は、（例えば、ＩＴＵ‐Ｔ  Ｈ．２２２．０  ｜  ＩＳＯ／ＩＥＣ１３８１８‐１などのメディアプログラムストリーム若しくはトランスポートストリームフォーマット、又はＩＥＴＦ  ＲＦＣ３５５０などのインターネットリアルタイムトランスポートプロトコルフォーマットに従って）メディアストリームとして送信又は記憶のために集められたデータをパケット化解除し（de-packetizes）、かつ／あるいは多重分離する（demultiplexes）。上記の場合、チャネルデコーダ（４２０）は、メディア送信ストリームのシンタックスの一部として追加されたシンタックス要素をパースする（parse）ことができる。あるいは、チャネルデコーダ（４２０）は、（例えば、ＩＳＯ／ＩＥＣ１４４９６‐１２などのメディアコンテナフォーマットに従って）ファイルとして記憶のために集められている符号化されたビデオデータを分離し、この場合、チャネルデコーダ（４２０）は、メディア記憶ファイルのシンタックスの一部として追加されたシンタックス要素をパースすることができる。あるいは、より一般的に、チャネルデコーダ（４２０）は、１つ以上のメディアシステム多重分離プロトコル又はトランスポートプロトコルを実装することができ、この場合、チャネルデコーダ（４２０）は、プロトコルのシンタックスの一部として追加されたシンタックス要素をパースすることができる。チャネル（４１０）又はチャネルデコーダ（４２０）は、例えば、ＦＥＣデコーディング及びアナログ信号復調のために、他の要素（図示されていない）をさらに含んでもよい。
【００５１】
チャネルデコーダ（４２０）から出力される符号化されたデータ（４２１）は、十分な量のこうしたデータが受信されるまで、一時符号化済みデータエリア（４３０）に記憶される。符号化されたデータ（４２１）は、符号化されたフレーム（４３１）及びＭＭＣＯ／ＲＰＳ情報（４３２）を含む。符号化済みデータエリア（４３０）の中の符号化されたデータ（４２１）は、要素的な符号化されたビデオビットストリームのシンタックスの一部として、１つ以上のピクチャのための符号化されたデータを含む。符号化済みデータエリア（４３０）の中の符号化されたデータは、エンコードされたビデオデータに関するメディアメタデータを（例えば、１つ以上のＳＥＩメッセージ又はＶＵＩメッセージの中の１つ以上のパラメータとして）さらに含み得る。
【００５２】
一般に、符号化済みデータエリア（４３０）は、符号化されたデータ（４２１）を、こうした符号化されたデータ（４２１）がデコーダ（４５０）によって使用されるまで、一時的に記憶する。このポイントにおいて、符号化されたフレーム（４３１）及びＭＭＣＯ／ＲＰＳ情報（４３２）のための符号化されたデータ（４２１）は、符号化済みデータエリア（４３０）からデコーダ（４５０）に転送される。デコーディングが継続するとき、新しい符号化されたデータが、符号化済みデータエリア（４３０）に対して追加され、符号化済みデータエリア（４３０）に残っている最も古い符号化されたデータが、デコーダ（４５０）に転送される。
【００５３】
デコーダ（４５０）は、符号化されたフレーム（４３１）をデコードして、対応するデコードされたフレーム（４５１）を生成する。必要に応じて、デコーダ（４５０）は、そのデコーディング処理を実行するとき、１つ以上の事前にデコードされたフレーム（４６９）を参照フレームとしてフレーム間予測に使用してもよい。デコーダ（４５０）は、こうした事前にデコードされたフレーム（４６９）を、デコード済みフレーム一時メモリ記憶エリア（４６０）から読み出す。一般に、デコーダ（４５０）は、デコーディングタスク、例えば、エントロピーデコーディング、フレーム内予測、動き補償されたフレーム間予測、逆量子化、逆周波数変換、及びタイルをマージすることなどを実行する、複数のデコーディングモジュールを含む。デコーダ（４５０）により実行される正確な動作は、圧縮フォーマットに依存して変動し得る。
【００５４】
例えば、デコーダ（４５０）は、圧縮されたフレーム又はフレームのシーケンスのエンコードされたデータを受信し、デコードされたフレーム（４５１）を含む出力を生成する。デコーダ（４５０）において、バッファが、圧縮されたフレームのエンコードされたデータを受信し、適切な時間に、受信したエンコードされたデータをエントロピーデコーダに対して利用可能にする。エントロピーデコーダは、エントロピー符号化された量子化されたデータとエントロピー符号化された付帯情報とを、典型的にはエンコーダにおいて実行されたエントロピーエンコーディングの逆のことを適用することによって、エントロピーデコードする。動き補償器が、動き情報を１つ以上の参照フレームに適用して、再構成されるフレームの任意のインター符号化されたブロックについて、動き補償された予測値を形成する。フレーム内予測モジュールが、現在のブロックのサンプル値を、近隣の事前に再構成されたサンプル値から空間的に予測し、あるいは、イントラＢＣ予測について、現在のブロックのサンプル値を、フレームの中のフレーム内予測領域の事前に再構成されたサンプル値を用いて予測することができる。フレーム内予測領域は、ＢＶ値を用いて示されることができる。デコーダ（４５０）は、予測残差値をさらに再構成する。逆量子化器が、エントロピーデコードされたデータを逆量子化する。例えば、デコーダ（４５０）は、ビットストリームの中のシンタックス要素に基づいて、ピクチャ、タイル、スライス、及び／又はビデオの他の部分についてのＱＰの値を設定し、これに従って、変換係数を逆量子化する。逆周波数変換器が、量子化された周波数ドメインデータを空間ドメインデータにコンバートする。フレーム間予測されたブロックについて、デコーダ（４５０）は、再構成された予測残差値を、動き補償された予測値と組み合わせる。デコーダ（４５０）は、同様に、予測残差値を、フレーム内予測からの予測値と組み合わせてもよい。適応的デブロッキングフィルタがビデオデコーダ（４５０）の中の動き補償ループ内に含まれて、デコードされたフレーム（４５１）の中のブロック境界行及び／又は列にわたる不連続性を滑らかにする。別法として、又はさらに、他のフィルタリング（例えば、デリンギング（de-ringing）フィルタリング、ＡＬＦ、又はＳＡＯフィルタリングなど；図示されていない）がインループフィルタリング動作として適用されてもよい。
【００５５】
デコード済みフレーム一時メモリ記憶エリア（４６０）は、複数のフレームバッファ記憶エリア（４６１、４６２、・・・、４６ｎ）を含む。デコードされたフレームの記憶エリア（４６０）は、デコード済みピクチャバッファの一例である。デコーダ（４５０）は、ＭＭＣＯ／ＲＰＳ情報（４３２）を使用して、デコードされたフレーム（４５１）をデコーダ（４５０）が記憶することができるフレームバッファ（４６１、４６２等）を識別する。デコーダ（４５０）は、上記フレームバッファの中にデコードされたフレーム（４５１）を記憶する。
【００５６】
出力シーケンサ（４８０）は、出力順序において生成される次のフレームがデコード済みフレーム記憶エリア（４６０）の中でいつ利用可能であるかを識別する。出力順序において生成される次のフレーム（４８１）が、デコード済みフレーム記憶エリア（４６０）において利用可能であるとき、該フレームは出力シーケンサ（４８０）によって読み出され、出力あて先（４９０）（例えば、ディスプレイ）に対して出力される。一般に、出力シーケンサ（４８０）によってデコード済みフレーム記憶エリア（４６０）からフレームが出力される順序は、デコーダ（４５０）によってフレームがデコードされる順序とは異なってもよい。
【００５７】
Ｖ．例示的なビデオエンコーダ
図５ａ及び図５ｂは、一般化されたビデオエンコーダ（５００）のブロック図であり、ビデオエンコーダ（５００）と関連して、いくつかの説明される実施形態が実施され得る。エンコーダ（５００）は、入力ビデオ信号（５０５）として現在のピクチャを含むビデオピクチャのシーケンスを受信し、出力として符号化されたビデオビットストリーム（５９５）におけるエンコードされたデータを生成する。
【００５８】
エンコーダ（５００）はブロックベースであり、実装に依存するブロックフォーマットを使用する。ブロックは、異なる段階において、例えば、予測、周波数変換、及び／又はエントロピーエンコーディング段階において、さらに細分されてもよい。例えば、ピクチャが、６４×６４ブロック、３２×３２ブロック、又は１６×１６ブロックに分けられることが可能であり、次に上記ブロックが、符号化及びデコーディングのためにサンプル値のより小さいブロックに分けられることが可能である。ＨＥＶＣ標準のエンコーディングの実施において、エンコーダは、ピクチャをＣＴＵ（ＣＴＢ）、ＣＵ（ＣＢ）、ＰＵ（ＰＢ）、及びＴＵ（ＴＢ）に区分する。
【００５９】
エンコーダ（５００）は、ピクチャ内（intra-picture）符号化及び／又はピクチャ間（inter-picture）符号化を用いて、ピクチャを圧縮する。エンコーダ（５００）のコンポーネントの多くは、ピクチャ内符号化及びピクチャ間符号化の双方に使用される。上記コンポーネントによって実行される正確な動作は、圧縮される情報のタイプに依存して変動し得る。
【００６０】
タイル化モジュール（tiling  module）（５１０）が、場合により、ピクチャを、同じサイズ又は異なるサイズの複数のタイルに区分する。例えば、タイル化モジュール（５１０）は、ピクチャをタイル行及びタイル列に沿って分割する。該タイル行及びタイル列は、ピクチャ境界を用いて、ピクチャ内のタイルの水平及び垂直の境界を定義し、各タイルは、長方形の領域である。
【００６１】
一般エンコーディング制御（５２０）が、入力ビデオ信号（５０５）のピクチャと、エンコーダ（５００）の様々なモジュールからのフィードバック（図示されていない）とを受信する。全体的に見て、一般エンコーディング制御（５２０）は、制御信号（図示されていない）を他のモジュール（例えば、タイル化モジュール（５１０）、変換器／スケーラ（scaler）／量子化器（５３０）、スケーラ／逆変換器（５３５）、ピクチャ内推定器（５４０）、動き推定器（５５０）、及びイントラ／インタースイッチなど）に提供して、エンコーディングの間の符号化パラメータを設定し及び変更する。具体的に、一般エンコーディング制御（５２０）は、エンコーディングの間にイントラＢＣ予測を使用するかどうかと如何にして使用するかとを決めることができる。一般エンコーディング制御（５２０）はさらに、エンコーディング、例えば、レート歪み分析を実行する間、中間結果を評価することができる。一般エンコーディング制御（５２０）は、エンコーディングの間に行われた判断を示す一般制御データ（５２２）を生成し、したがって、対応するデコーダが、一貫性のある判断を行うことができる。一般制御データ（５２２）は、ヘッダフォーマッタ（formatter）／エントロピー符号器（５９０）に提供される。
【００６２】
現在のピクチャがピクチャ間予測を用いて予測される場合、動き推定器（５５０）が、１つ以上の参照ピクチャに関して、入力ビデオ信号（５０５）の現在のピクチャのサンプル値のブロックの動きを推定する。デコード済みピクチャバッファ（５７０）が、１つ以上の再構成された事前に符号化されたピクチャを、参照ピクチャとしての使用のためにバッファする。複数の参照ピクチャが使用されるとき、この複数の参照ピクチャは、異なる時間方向又は同じ時間方向からであり得る。動き推定器（５５０）は、付帯情報として、動きデータ（５５２）、例えば、ＭＶデータ、マージモードインデックス値、及び参照ピクチャ選択データなどを生成する。動きデータ（５５２）は、ヘッダフォーマッタ／エントロピー符号器（５９０）と動き補償器（５５５）とに対して提供される。
【００６３】
動き補償器（５５５）は、ＭＶを、デコード済みピクチャバッファ（５７０）からの再構成された参照ピクチャに適用する。動き補償器（５５５）は、現在のピクチャの動き補償された予測を生成する。
【００６４】
エンコーダ（５００）内の別個の経路において、ピクチャ内推定器（５４０）が、入力ビデオ信号（５０５）の現在のピクチャのサンプル値のブロックについて、ピクチャ内予測を如何にして実行するかを決定する。現在のピクチャは、ピクチャ内符号化を用いて、全体的に又は部分的に符号化されることが可能である。現在のピクチャの再構成（５３８）の値を用いて、イントラ空間予測について、ピクチャ内推定器（５４０）は、現在のピクチャの現在のブロックのサンプル値を、現在のピクチャについての近隣の事前に再構成されたサンプル値から如何にして空間的に予測するかを決定する。あるいは、ＢＶ値を用いるイントラＢＣ予測について、ピクチャ内推定器（５４０）は、現在のピクチャ内の異なる候補領域に対する、現在のブロックのサンプル値の変位を推定する。ＢＶ値は、以下に説明されるとおり、ＢＶ予測に対するピンポンアプローチを用いて予測されることができる。イントラＢＣ予測について、イントラ予測推定器（５４０）は、以下に説明される１つ以上の制約を用いてＢＶ選択処理を含むことができ、イントラ予測推定器（５４０）は、ＢＶ推定の目的で、現在のブロックのオーバーラップエリアの中の再構成されたサンプル値を推定することができる。
【００６５】
ピクチャ内推定器（５４０）は、付帯情報として、イントラ予測データ（５４２）、例えば、イントラ予測が空間予測又はイントラＢＣ予測を使用するか（例えば、イントラブロックごとのフラグ値）、予測モード方向（イントラ空間予測のための）、及びＢＶ値（イントラＢＣ予測のための）を示す情報などを生成する。イントラ予測データ（５４２）は、ヘッダフォーマッタ／エントロピー符号器（５９０）とピクチャ内予測器（５４５）とに対して提供される。
【００６６】
イントラ予測データ（５４２）に従い、ピクチャ内予測器（５４５）は、現在のピクチャの現在のブロックのサンプル値を、現在のピクチャについての近隣の事前に再構成されたサンプル値から空間的に予測する。あるいは、イントラＢＣ予測について、ピクチャ内予測器（５４５）は、現在のブロックのサンプル値を、イントラ予測領域の事前に再構成されたサンプル値を用いて予測し、該イントラ予測領域は、現在のブロックのＢＶ値によって示される。ピクチャのクロマデータが、ルマデータと同じ解像度を有するとき（例えば、フォーマットが、ＹＵＶ４：４：４フォーマット又はＲＧＢ４：４：４フォーマットであるとき）、クロマブロックに適用されるＢＶ値は、ルマブロックに適用されるＢＶ値と同じであり得る。一方、ピクチャのクロマデータが、ルマデータに対して低減された解像度を有するとき（例えば、フォーマットが、ＹＵＶ４：２：０フォーマット又はＹＵＶ４：２：２フォーマットであるとき）、クロマブロックに適用されるＢＶ値は、下方にスケール変更され（scaled）、可能性として丸められて、クロマ解像度における差に関して調整される（例えば、ＹＵＶ４：２：０フォーマットについては、ＢＶ値の垂直及び水平の成分を２で除算することと、これらを整数値へと切り捨て又は丸めることとによって；ＹＵＢ４：２：２フォーマットについては、ＢＶ値の水平成分を２で除算することと、これを整数値へと切り捨て又は丸めることとによって）。
【００６７】
イントラ／インタースイッチは、所与のブロックのための予測（５５８）としての使用のために、動き補償された予測又はピクチャ内予測の値を選択する。予測（５５８）のブロックと入力ビデオ信号（５０５）の元の現在のピクチャの対応する部分とにおける差が（もしあれば）、残差（５１８）の値を提供する。現在のピクチャの再構成の間、再構成された残差値は、予測（５５８）と組み合わせられて、ビデオ信号（５０５）からの元のコンテンツの再構成（５３８）が生成される。しかしながら、不可逆圧縮において、いくつかの情報は、ビデオ信号（５０５）から依然として失われる。
【００６８】
変換器／スケーラ／量子化器（５３０）において、周波数変換器は、空間ドメインビデオデータを周波数ドメイン（すなわち、スペクトルの、変換）データにコンバートする。ブロックベースのビデオ符号化について、周波数変換器は、離散コサイン変換（“ＤＣＴ”）、その整数近似、又は別のタイプの前方ブロック変換（例えば、離散サイン変換又はその整数近似）を、予測残差データのブロック（又は、予測（５５８）がヌルである場合はサンプル値データ）に対して適用し、周波数変換係数のブロックを生成する。エンコーダ（５００）はさらに、こうした変換ステップがスキップされることを示すことが可能であり得る。スケーラ／量子化器は、変換係数をスケール変更し、量子化する。例えば、量子化器は、デッドゾーンスケーラ量子化を、周波数ドメインデータに対して、フレーム単位基準、タイル単位基準、スライス単位基準、ブロック単位基準、周波数固有基準、又は他の基準で変動する量子化ステップサイズを用いて適用する。量子化された変換係数データ（５３２）は、ヘッダフォーマッタ／エントロピー符号器（５９０）に提供される。
【００６９】
スケーラ／逆変換器（５３５）において、スケーラ／逆量子化器は、量子化された変換係数に対して逆スケール変更及び逆量子化を実行する。逆周波数変換器が逆周波数変換を実行し、再構成された予測残差値又はサンプル値のブロックを生成する。エンコーダ（５００）は、再構成された残差値を予測（５５８）の値（例えば、動き補償された予測値、ピクチャ内予測値）と組み合わせて、再構成（５３８）を形成する。
【００７０】
ピクチャ内予測について、再構成（５３８）の値は、ピクチャ内推定器（５４０）及びピクチャ内予測器（５４５）にフィードバックされることができる。さらに、再構成（５３８）の値は、後のピクチャの動き補償された予測に使用されてもよい。再構成（５３８）の値は、さらにフィルタされてもよい。フィルタリング制御（５６０）が、ビデオ信号（５０５）の所与のピクチャについて、再構成（５３８）の値に対してデブロックフィルタリング及びＳＡＯフィルタリングを如何にして実行するかを決定する。フィルタリング制御（５６０）はフィルタ制御データ（５６２）を生成し、これがヘッダフォーマッタ／エントロピー符号器（５９０）とマージ器／フィルタ（５６５）とに対して提供される。
【００７１】
マージ器／フィルタ（５６５）において、エンコーダ（５００）は、異なるタイルからのコンテンツをピクチャの再構成されたバージョンにマージする。エンコーダ（５００）は、デブロックフィルタリング及びＳＡＯフィルタリングをフィルタ制御データ（５６２）に従って選択的に実行して、フレームの中の境界をわたる不連続性を適応的に滑らかにする。別法として、又はさらに、他のフィルタリング（例えば、デリンギングフィルタリング又はＡＬＦなど；図示されていない）が適用されてもよい。タイル境界は、エンコーダ（５００）の設定に依存して、選択的にフィルタされ、あるいはまったくフィルタされないことが可能であり、エンコーダ（５００）は、符号化されたビットストリーム内でシンタックスを提供して、上記のフィルタリングが適用されたか否かを示してもよい。デコード済みピクチャバッファ（５７０）は、再構成された現在のピクチャを、後の動き補償された予測における使用のためにバッファする。
【００７２】
ヘッダフォーマッタ／エントロピー符号器（５９０）は、一般制御データ（５２２）、量子化された変換係数データ（５３２）、イントラ予測データ（５４２）、動きデータ（５２２）、及びフィルタ制御データ（５６２）をフォーマットし、かつ／あるいはエントロピー符号化する。例えば、ヘッダフォーマッタ／エントロピー符号器（５９０）は、様々なシンタックス要素、例えば、ＢＶ値のシンタックス要素などのエントロピー符号化のために、コンテキスト適応バイナリ算術符号化を使用する。ヘッダフォーマッタ／エントロピー符号器（５９０）は、ＢＶ値をエンコードするとき、以下に説明されるとおり、ＢＶ予測に対してピンポンアプローチを使用する。
【００７３】
ヘッダフォーマッタ／エントロピー符号器（５９０）は、符号化されたビデオビットストリーム（５９５）におけるエンコードされたデータを提供する。符号化されたビデオビットストリーム（５９５）のフォーマットは、ＨＥＶＣフォーマット、Ｗｉｎｄｏｗｓ  Ｍｅｄｉａ  Ｖｉｄｅｏフォーマット、ＶＣ‐１フォーマット、ＭＰＥＧ‐ｘフォーマット（例えば、ＭＰＥＧ‐１、ＭＰＥＧ‐２、又はＭＰＥＧ‐４）、Ｈ．２６ｘフォーマット（例えば、Ｈ．２６１、Ｈ．２６２、Ｈ．２６３、Ｈ．２６４）、又は別のフォーマットの、バリエーション又はエクステンションであり得る。
【００７４】
所望される実装及び圧縮のタイプに依存して、エンコーダのモジュールは、追加され、省略され、複数のモジュールに分割され、他のモジュールと組み合わせられ、かつ／あるいは同様のモジュールと置換されることができる。別の実施形態において、異なるモジュール及び／又はモジュールの他の構成を有するエンコーダが、所望される手法のうち１つ以上を実行する。エンコーダの具体的な実施形態は、典型的に、エンコーダ（５００）のバリエーション又は補足されたバージョンを使用する。エンコーダ（５００）内のモジュール間に示される関係はエンコーダにおける情報の一般的フローを示し、他の関係は簡潔さのために示されていない。
【００７５】
ＶＩ．例示的なビデオデコーダ
図６は、一般化されたデコーダ（６００）のブロック図であり、デコーダ（６００）と関連して、いくつかの説明される実施形態が実施されることができる。デコーダ（６００）は、符号化されたビットストリーム（６０５）におけるエンコードされたデータを受信し、再構成されたビデオ（６９５）のピクチャを含む出力を生成する。符号化されたビデオビットストリーム（６０５）のフォーマットは、ＨＥＶＣフォーマット、Ｗｉｎｄｏｗｓ  Ｍｅｄｉａ  Ｖｉｄｅｏフォーマット、ＶＣ‐１フォーマット、ＭＰＥＧ‐ｘフォーマット（例えば、ＭＰＥＧ‐１、ＭＰＥＧ‐２、又はＭＰＥＧ‐４）、Ｈ．２６ｘフォーマット（例えば、Ｈ．２６１、Ｈ．２６２、Ｈ．２６３、Ｈ．２６４）、又は別のフォーマットの、バリエーション又はエクステンションであり得る。
【００７６】
デコーダ（６００）はブロックベースであり、実装に依存するブロックフォーマットを使用する。ブロックは、異なる段階においてさらに細分されてもよい。例えば、ピクチャが、６４×６４ブロック、３２×３２ブロック、又は１６×１６ブロックに分けられることが可能であり、次に上記ブロックが、サンプル値のより小さいブロックに分けられることが可能である。ＨＥＶＣ標準のデコーディングの実施において、ピクチャは、ＣＴＵ（ＣＴＢ）、ＣＵ（ＣＢ）、ＰＵ（ＰＢ）、及びＴＵ（ＴＢ）に区分される。
【００７７】
デコーダ（６００）は、ピクチャ内デコーディング及び／又はピクチャ間デコーディングを用いて、ピクチャを伸張する。デコーダ（６００）のコンポーネントの多くは、ピクチャ内デコーディング及びピクチャ間デコーディングの双方に使用される。上記コンポーネントによって実行される正確な動作は、伸張される情報のタイプに依存して変動し得る。
【００７８】
バッファが、符号化されたビデオビットストリーム（６０５）におけるエンコードされたデータを受信し、受信したエンコードされたデータをパーサ／エントロピーデコーダ（６１０）に対して利用可能にする。パーサ／エントロピーデコーダ（６１０）は、典型的にはエンコーダ（５００）において実行されたエントロピー符号化の逆のことを適用することによって（例えば、コンテキスト適応バイナリ算術デコーディング）、エントロピー符号化されたデータをエントロピーデコードする。パース及びエントロピーデコードの結果として、パーサ／エントロピーデコーダ（６１０）は、一般制御データ（６２２）、量子化された変換係数データ（６３２）、イントラ予測データ（６４２）、動きデータ（６５２）、及びフィルタ制御データ（６６２）を生成する。具体的に、イントラ予測データ（６４２）について、パーサ／エントロピーデコーダ（６１０）は、ＢＶ値のシンタックス要素を、例えば、コンテキスト適応バイナリ算術デコーディングを用いて、エントロピーデコードする。パーサ／エントロピーデコーダ（６１０）は、ＢＶ値をデコーディングするとき、以下に説明されるとおり、ＢＶ予測に対してピンポンアプローチを使用することができる。
【００７９】
一般デコーディング制御（６２０）は一般制御データ（６２２）を受信し、制御信号（図示されていない）を他のモジュール（例えば、スケーラ／逆変換器（６３５）、ピクチャ内予測器（６４５）、動き補償器（６５５）、及びイントラ／インタースイッチ）に対して提供して、デコーディングの間のデコーディングパラメータを設定し及び変更する。
【００８０】
現在のピクチャがピクチャ間予測を用いて予測される場合、動き補償器（６５５）は、動きデータ（６５２）、例えば、ＭＶデータ、参照ピクチャ選択データ、マージモードインデックス値などを受信する。動き補償器（６５５）は、ＭＶを、デコード済みピクチャバッファ（６７０）からの再構成された参照ピクチャに適用する。動き補償器（６５５）は、現在のピクチャのインター符号化されたブロックについての動き補償された予測を生成する。デコード済みピクチャバッファ（６７０）は、１つ以上の事前に再構成されたピクチャを参照ピクチャとしての使用のために記憶する。
【００８１】
デコーダ（６００）内の別の経路において、フレーム内予測予測器（６４５）が、イントラ予測データ（６４２）、例えば、イントラ予測が空間予測又はイントラＢＣ予測を使用するか（例えば、イントラブロックごとのフラグ値）、予測モード方向（イントラ空間予測のための）、及びＢＶ値（イントラＢＣ予測のための）を示す情報などを受信する。イントラ空間予測について、現在のピクチャの再構成（６３８）の値を用いて、予測モードデータに従って、ピクチャ内予測器（６４５）は、現在のピクチャの現在のブロックのサンプル値を、現在のピクチャについての近隣の事前に再構成されたサンプル値から空間的に予測する。あるいは、ＢＶ値を用いるイントラＢＣ予測について、ピクチャ内予測器（６４５）は、現在のブロックのサンプル値を、イントラ予測領域の事前に再構成されたサンプル値を用いて予測し、該イントラ予測領域は、現在のブロックのＢＶ値によって示される。
【００８２】
イントラ／インタースイッチは、所与のブロックのための予測（６５８）としての使用のために、動き補償された予測又はピクチャ内予測の値を選択する。例えば、ＨＥＶＣシンタックスが守られるとき、イントラ／インタースイッチは、イントラ予測されたＣＵ及びインター予測されたＣＵを含み得るピクチャのＣＵのためにエンコードされたシンタックス要素に基づいて制御されることができる。デコーダ（６００）は、予測（６５８）を再構成された残差値と組み合わせて、ビデオ信号からのコンテンツの再構成（６３８）を生成する。
【００８３】
残差を再構成するために、スケーラ／逆変換器（６３５）は、量子化された変換係数データ（６３２）を受信し、処理する。スケーラ／逆変換器（６３５）において、スケーラ／逆量子化器は、量子化された変換係数に対して逆スケール変更及び逆量子化を実行する。逆周波数変換器が逆周波数変換を実行し、再構成された予測残差値又はサンプル値のブロックを生成する。例えば、逆周波数変換器は逆ブロック変換を周波数変換係数に適用し、サンプル値データ又は予測残差データを生成する。逆周波数変換は、逆ＤＣＴ、その整数近似、又は別のタイプの逆周波数変換（例えば、逆離散サイン変換又はその整数近似）であり得る。
【００８４】
ピクチャ内予測について、再構成（６３８）の値は、ピクチャ内予測器（６４５）に対してフィードバックされることができる。ピクチャ間予測について、再構成（６３８）の値はさらにフィルタされることができる。マージ器／フィルタ（６６５）において、デコーダ（６００）は、異なるタイルからのコンテンツをピクチャの再構成されたバージョンにマージする。デコーダ（６００）は、デブロックフィルタリング及びＳＡＯフィルタリングを、フィルタ制御データ（６６２）及びフィルタ適応の規則に従って選択的に実行して、フレームの中の境界をわたる不連続性を適応的に滑らかにする。別法として、又はさらに、他のフィルタリング（例えば、デリンギングフィルタリング又はＡＬＦなど；図示されていない）が適用されてもよい。タイル境界は、デコーダ（６００）の設定又はエンコードされたビットストリームデータ内のシンタックス指標に依存して、選択的にフィルタされ、あるいはまったくフィルタされないことが可能である。デコード済みピクチャバッファ（６７０）は、再構成された現在のピクチャを、後の動き補償された予測における使用のためにバッファする。
【００８５】
デコーダ（６００）は、後処理（post-processing）フィルタをさらに含んでもよい。後処理フィルタは、デリンギングフィルタリング、適応ウィナー（Wiener）フィルタリング、フィルム粒子再現（film-grain  reproduction）フィルタリング、ＳＡＯフィルタリング、又は別の種類のフィルタリングを含み得る。
【００８６】
所望される実装及び伸張のタイプに依存して、デコーダのモジュールは、追加され、省略され、複数のモジュールに分割され、他のモジュールと組み合わせられ、かつ／あるいは同様のモジュールと置換されることができる。別の実施形態において、異なるモジュール及び／又はモジュールの他の構成を有するデコーダが、所望される手法のうち１つ以上を実行する。デコーダの具体的な実施形態は、典型的に、デコーダ（６００）のバリエーション又は補足されたバージョンを使用する。デコーダ（６００）内のモジュール間に示される関係はデコーダにおける情報の一般的フローを示し、他の関係は簡潔さのために示されていない。
【００８７】
ＶＩＩ．イントラブロックコピー予測モード
本セクションは、イントラブロックコピー（“ＢＣ”）予測モードの様々な特徴を提示する。特徴のうちいくつかはブロックベクトル（“ＢＶ”）値の選択に関し、特徴のうち別のものはＢＶ値のエンコーディング／デコーディングに関する。こうした特徴が、エンコーディング及びデコーディングのレート歪み性能及び／又は計算効率の観点においてより効率的であるイントラＢＣ予測を容易にすることができる。具体的に、イントラＢＣ予測は、特定の「人工的に」作成されたビデオコンテンツ、例えば、スクリーンキャプチャコンテンツなどをエンコードするとき、レート歪み性能を向上させることができる。スクリーンキャプチャコンテンツは、繰り返される構造（例えば、グラフィクス、テキスト文字）を典型的に含み、このことは、イントラＢＣ予測に関して性能を向上させる機会を提供する。スクリーンキャプチャコンテンツは、大抵、高いクロマサンプリング解像度を有するフォーマット（例えば、ＹＵＶ４：４：４又はＲＧＢ４：４：４）においてエンコードされるが、さらに、より低いクロマサンプリング解像度（例えば、ＹＵＶ４：２：０、ＹＵＶ４：２：２）を有するフォーマットにおいてエンコードされることもある。
【００８８】
Ａ．イントラＢＣ予測モード  ‐  導入
イントラＢＣ予測モードについて、ピクチャの現在のブロックのサンプル値は、同じピクチャの中のサンプル値を用いて予測される。ＢＶは、予測に使用されるサンプル値を含むピクチャの領域に対する、現在のブロックからの変位を示す。典型的には、予測に使用されるサンプル値は、事前に再構成されたサンプル値である。ＢＶは、ビットストリームの中で信号伝達される。イントラＢＣ予測は、ピクチャ内予測（intra-picture  prediction）の一形式であり、ピクチャのブロックのためのイントラＢＣ予測は、同じピクチャの中のサンプル値以外のいかなるサンプル値も使用しない。
【００８９】
図７は、現在のフレーム（７１０）の現在のブロック（７３０）についてのイントラＢＣ予測を例示する。現在のブロックは、符号化ユニット（“ＣＵ”）の符号化ブロック（“ＣＢ”）、予測ユニット（“ＰＵ”）の予測ブロック（“ＰＢ”）、変換ユニット（“ＴＵ”）の変換ブロック（“ＴＢ”）、又は他のブロックであり得る。現在のブロックのサイズは、６４×６４、３２×３２、１６×１６、８×８、又は何らかの他のサイズであり得る。より一般的に、現在のブロックのサイズはｍ×ｎであり、これにおいて、ｍ及びｎの各々は自然数であり、ｍ及びｎは互いに等しくてもよく、あるいは異なる値を有してもよい。別法として、現在のブロックは、何らかの他の形状（例えば、非長方形の形状を有する符号化されたビデオオブジェクトのエリア）を有してもよい。
【００９０】
ＢＶ（７４０）は、現在のブロック（７３０）からの、予測に使用されるサンプル値を含むピクチャの領域（７５０）に対する変位（又は、オフセット）を示す。現在のブロックの左上位置が現在のフレームにおける位置（ｘ０，ｙ０）にあると仮定し、イントラ予測領域の左上位置が現在のフレームにおける位置（ｘ１，ｙ１）にあると仮定する。ＢＶは、変位（ｘ１−ｘ０，ｙ１−ｙ０）を示す。例えば、現在のブロックの左上位置が位置（３２０，２５６）にあり、イントラ予測領域の左上位置が位置（２９５，２７０）にある場合、ＢＶ値は（−２５，１４）である。上記の例において、負の水平の変位は現在のブロックの左に対する位置を示し、負の垂直の変位は現在のブロックの上の位置を示す。
【００９１】
いくつかの例示的な実施において、イントラ予測された領域（７５０）は、現在のブロック（７３０）と同じスライス及びタイル内であるように制約される。こうしたイントラＢＣ予測は、他のスライス又はタイルの中のサンプル値を使用しない。イントラ予測された領域（７５０）の場所は、１つ以上の他の制約にさらされることがある（例えば、検索範囲について、インター符号化されたブロックの再構成されたサンプル値の使用に関して）。
【００９２】
イントラＢＣ予測の予測モードを有するブロックは、ＣＢ、ＰＢ、又は他のブロックであり得る。ブロックがＣＢであるとき、ブロックのＢＶはＣＵレベルにおいて信号伝達されることができる（及び、ＣＵの中の他のＣＢは、同じＢＶ又はそのスケール変更されたバージョンを使用する）。あるいは、ブロックがＰＢであるとき、ブロックのＢＶはＰＵレベルにおいて信号伝達されることができる（及び、ＰＵの中の他のＰＢは、同じＢＶ又はそのスケール変更されたバージョンを使用する）。より一般的に、イントラＢＣ予測ブロックのためのＢＶは、ブロックのための適切なシンタックスレベルにおいて信号伝達される。
【００９３】
イントラＢＣ予測モードに従った予測のブロックコピー動作は、ＣＢのレベル（ＢＶがＣＢごとに信号伝達されるとき）、又はＰＢのレベル（ＢＶがＰＢごとに信号伝達されるとき）において実行されることができる。例えば、１６×１６ＣＢが単一の１６×１６ＰＢを有すると仮定する。（ＰＢのための）ＢＶは、１６×１６領域をブロックコピーするように適用される。イントラ予測領域が、予測される１６×１６ブロックにオーバーラップしないように制約されるとき、ＢＶは、水平に又は垂直に、少なくとも１６の大きさ（絶対値）を有する。
【００９４】
別法として、ブロックコピー動作は、ＢＶがＰＢ又はＣＢに対して信号伝達されるときでも、ＰＢ又はＣＢ内のＴＢのレベルにおいて実行されることができる。こうして、ＢＶは、ＴＢに適用されるとき、同じＰＢ又はＣＢにおける他のＴＢの位置を参照することができる。例えば、１６×１６ＣＢが単一の１６×１６ＰＢを有し、しかし残差符号化／デコーディングの目的で１６個の４×４ＴＢに分割されると仮定する。（ＰＢのための）ＢＶは、ラスタースキャン順序において第１のＴＢのための４×４領域をブロックコピーするように適用され、それから、同じＢＶが、ラスタースキャン順序において第２のＴＢのための４×４領域をブロックコピーするように適用される、などする。ＴＢのためのＢＣ動作に使用される４×４領域は、残差値を上記の事前に再構成されたＴＢの予測された値と組み合わせた後、同じＣＢにおける事前に再構成されたＴＢの中の位置を含み得る。（ＢＶは、予測されている同じＴＢの中の位置を依然として参照しない。）ＢＣ動作をＴＢレベルにおいて適用することは、比較的小さい大きさを有するＢＶの使用を容易にする。
【００９５】
ＣＵのクロマブロックのためのイントラＢＣ予測動作は、一般に、ＣＵのルマブロックのためのイントラＢＣ予測動作に対応する。通常、クロマＰＢ及びクロマＴＢのセグメンテーションは、ＣＵにおけるルマＰＢ及びルマＴＢのセグメンテーションに直接対応する。ビデオのフォーマットがＹＵＶ４：４：４であるとき、クロマＰＢ及びＴＢのサイズは、対応するルマＰＢ及びＴＢのサイズにマッチする。ビデオのフォーマットがＹＵＶ４：２：０であるとき、クロマＰＢ及びＴＢは、対応するルマＰＢ及びＴＢの半分の幅及び半分の高さである。しかしながら、ルマＴＢが最小変換サイズを有する場合、最小変換サイズを有する単一のクロマＴＢが使用される。ビデオのフォーマットがＹＵＶ４：２：２であるとき、クロマＰＢ及びＴＢは、対応するルマＰＢ及びＴＢの半分の幅である。
【００９６】
いくつかの実施において、イントラＢＣ予測されたＣＵについて、ＰＵの中のクロマブロックのためのイントラＢＣ予測は、可能性として、クロマデータがルマデータに対して低減された解像度を有するとき（例えば、フォーマットがＹＵＶ４：２：０フォーマット又はＹＵＶ４：２：２フォーマットであるとき）はスケール変更及び丸めの後、ＰＵの中のルマブロックのためのイントラＢＣ予測と同じＢＶ値を使用する。別法として、ＰＵのルマブロック及びクロマブロックについて、異なるＢＶ値が信号伝達されてもよい。
【００９７】
いくつかの実施において、ＰＵのルマブロックの予測モードがイントラＢＣ予測である場合、ＰＵのクロマブロックのための予測モードがさらにイントラＢＣ予測される。例えば、予測モードがＰＵのために信号伝達される。別法として、予測モードは、ＰＵのルマブロック又はクロマブロックのためのイントラＢＣ予測であり、しかし双方でないことが可能である。
【００９８】
Ｂ．イントラＢＣ予測モードのＢＶ検索の制約
いくつかの例示的な実施において、エンコーダは、１つ以上の制約に従ってＢＶ範囲を制限する。ＢＶ範囲を制限することによって、エンコーディング及びデコーディングの間にイントラＢＣ予測のために高速メモリアクセスにより参照される再構成されたサンプル値のエリアが低減されることが可能であり、このことは実装コストを下げる傾向がある。
【００９９】
図８は、ＢＶ値のための検索範囲に対する例示的な制約を例示する。現在のフレーム（８１０）の現在のブロック（８３０）に加えて、図８は、２つのＣＴＢ（８２０、８２２）によって定義された検索範囲を示す。現在のＣＴＢ（８２０）は現在のＣＴＵの一部であり、現在のブロック（８３０）を含む。現在のＣＴＢ（８２０）は、その左にＣＴＢ（８２２）を有して、現在のブロック（８３０）に対して許容可能なＢＶが見つけられることが可能な検索範囲を定義する。ＢＶ（８４２、８４４）は検索範囲の外側の領域を参照しており、ゆえにこれらＢＶ値（８４２、８４４）は許容されない。
【０１００】
いくつかの例示的な実施において、現在のブロックのＢＶ値のための検索範囲は、現在のＣＴＢ及びその左に対するＣＴＢである。例えば、ＣＴＢは６４×６４、３２×３２、又は１６×１６サンプル値のサイズを有することが可能であり、このことは、１２８×６４、６４×３２、又は３２×１６サンプル値の検索範囲を生じる。現在のＣＴＢ及び左のＣＴＢの中のサンプル値だけが、現在のブロックのためのイントラＢＣ予測に使用される。このことは、検索処理を制約することによってエンコーダ実装を簡素化する。上記のことはさらに、イントラ予測のためにデコーダが高速メモリにバッファするサンプル値の数を制限することによって、デコーダ実装を簡素化する。別の制約は、イントラ予測が別のスライス又はタイルからサンプル値を参照できないことである。（ｘ０，ｙ０）における左上位置を有する現在のｍ×ｎブロックと、次元ＣＴＢｓｉｚｅＹ×ＣＴＢｓｉｚｅＹを各々が有する（１つ以上の）ＣＴＢとについて、エンコーダは、水平成分ＢＶ［０］及び垂直成分ＢＶ［１］を有する２次元ＢＶに関する上記制約を、下記の、
・ＢＶ［０］≧−（（ｘ０％ＣＴＢｓｉｚｅＹ）＋ＣＴＢｓｉｚｅＹ）
・ＢＶ［１］≧−（ｙ０％ＣＴＢｓｉｚｅＹ）
・位置（ｘ０，ｙ０）、（ｘ０＋ＢＶ［０］，ｙ０＋ＢＶ［１］）、及び（ｘ０＋ＢＶ［０］＋ｍ−１，ｙ０＋ＢＶ［１］＋ｎ−１）におけるサンプル値は、同じスライス内であるべきである
・位置（ｘ０，ｙ０）、（ｘ０＋ＢＶ［０］，ｙ０＋ＢＶ［１］）、及び（ｘ０＋ＢＶ［０］＋ｍ−１，ｙ０＋ＢＶ［１］＋ｎ−１）におけるサンプル値は、同じタイル内であるべきである
としてチェックすることができる。
【０１０１】
図９は、ＢＶ値の選択に対する１つ以上の制約にさらされた、イントラＢＣ予測モードを用いたエンコーディングの手法（９００）を示す。エンコーダ、例えば、図３又は図５ａ〜図５ｂを参照して説明されたものなどが、手法（９００）を実行することができる。
【０１０２】
始めに、エンコーダは、ピクチャの現在のブロックのためのＢＶを決定する（９１０）。現在のブロックは、ＣＢ、ＰＢ、又は他のブロックであり得る。ＢＶは、ピクチャ内の領域に対する変位を示す。ＢＶを決定することにおいて、エンコーダは、１つ以上の制約をチェックする。
【０１０３】
１つのあり得る制約に従い、エンコーダは、イントラＢＣ予測に使用されるサンプル値の範囲をチェックする。エンコーダは、候補イントラ予測領域が現在のＣＴＢと１つ以上の他のＣＴＢ（例えば、現在のＣＴＢの左に対するＣＴＢ）とによって定義される範囲内であることをチェックすることができる。例えば、ＢＶが第１の成分ＢＶ［０］及び第２の成分ＢＶ［１］を有するとき、現在のブロックは位置（ｘ０，ｙ０）における左上位置を有し、ＣＴＢの各々は幅ＣＴＢｗｉｄｔｈ及び高さＣＴＢｈｅｉｇｈｔを有し、制約は、ＢＶ［０］≧−（（ｘ０％ＣＴＢｗｉｄｔｈ）＋ＣＴＢｗｉｄｔｈ）及びＢＶ［１］≧−（ｙ０％ＣＴＢｈｅｉｇｈｔ）の場合に満足される。エンコーダは、同様に、検索範囲、すなわち、ＢＶ［０］＜（ＣＴＢｗｉｄｔｈ−ｍ−（ｘ０％ＣＴＢｗｉｄｔｈ））及びＢＶ［１］＜（ＣＴＢｈｅｉｇｈｔ−ｎ−（ｙ０％ＣＴＢｈｅｉｇｈｔ））内で、ＢＶ［０］及びＢＶ［１］の値に対する上限をチェックすることができる。別法として、検索範囲はより多くの又はより少ないＣＴＢを含み、あるいは、検索範囲は何らかの他の方法において定義される。
【０１０４】
別のあり得る制約に従い、エンコーダは、検索を、現在のスライス及びタイルに制限する（すなわち、現在のブロック及び領域は、ピクチャのわずか１つのスライス及びピクチャのわずか１つのタイルの一部である）。エンコーダは、現在のブロックの左上位置と候補イントラ予測領域の左上位置と候補イントラ予測領域の右下位置とが単一のスライス及び単一のタイルの一部であることをチェックすることができる。例えば、この制約は、（ｘ０，ｙ０）と（ｘ０＋ＢＶ［０］，ｙ０＋ＢＶ［１］）と（ｘ０＋ＢＶ［０］＋ｍ−１，ｙ０＋ＢＶ［１］＋ｎ−１）とが単一のスライス及び単一のタイルの一部である場合、満足される。
【０１０５】
別法として、エンコーダは、他の及び／又はさらなる制約をチェックする。
【０１０６】
エンコーダは、ＢＶ値を用いて現在のブロックのためのイントラＢＣ予測を実行する（９２０）。例えば、エンコーダは、現在のブロック全体に対してイントラＢＣ予測を実行する。あるいは、エンコーダは、現在のブロックに関連付けられた複数のブロックに対してイントラＢＣ予測を実行する（例えば、ＴＢ単位基準において、ＢＶを有する現在のＰＢに複数のＴＢが関連付けられる場合に、複数のＴＢに対して）。
【０１０７】
エンコーダは、ＢＶをエンコードする（９３０）。例えば、エンコーダは、以下に説明されるとおり、ＢＶをエンコードする（９３０）。エンコーダは、別のイントラＢＣ予測モードブロックについて、手法（９００）を繰り返すことができる。
【０１０８】
イントラＢＣ予測について、エンコーダ及びデコーダは、再構成されたサンプル値を使用する。まだエンコード及び再構成されていないピクチャの一部として、再構成されていないサンプル値が存在する可能性がある。イントラＢＣ予測に関して、再構成されていないサンプル値の使用を回避するために、エンコーダは、実際の事前に再構成されたサンプル値だけがＢＣに従ってイントラＢＣ予測に使用されるように、ＢＶの許容可能値に対する制約を設定することができる。
【０１０９】
いくつかの例示的な実施において、エンコーダは、現在のブロックと候補イントラ予測領域の右下位置を含むブロックとのｚスキャン順序を考慮することによって、ＢＶ値をチェックする。より具体的に、エンコーダは、位置（ｘ０＋ＢＶ［０］＋ｍ−１，ｙ０＋ＢＶ［１］＋ｎ−１）を含むブロックのｚスキャン順序が、（ｘ０，ｙ０）を含むｚスキャン順序より小さいことをチェックする。そうである場合、イントラ予測領域の右下位置を含むブロックは、事前に再構成されている（したがって、イントラ予測領域の残り部分も同様にされている）。ＢＶはさらに、条件ＢＶ［０］＋ｍ≦０及びＢＶ［１］＋ｎ≦０のうち少なくとも１つを満足し、イントラ予測領域が現在のブロックにオーバーラップしないことを確保する。
【０１１０】
ｚスキャン順序は、ピクチャを区分するブロックのシーケンシャルに規定された順序付けに従う。図１０は、現在のブロック（１０３０）のための例示的なｚスキャン順序（１０００）と、候補ＢＶのイントラ予測領域の右下位置を含み得る複数のブロックを示す。現在のブロック（１０３０）は、ＣＢ、ＰＢ、又は他のブロックであり得る。ｚスキャン順序は、一般に、行において左から右にシーケンシャルにブロックに割り当てられ、連続的な行において上から下に繰り返す。ブロックが分割されるとき、ｚスキャン順序は、再帰的に、分割されたブロック内に割り当てられる。ＨＥＶＣ標準のためのエンコーディング／デコーディングの実施について、ｚスキャン順序は、ＣＴＢラスタスキャンパターンによって、ＣＴＢ対ＣＴＢで（CTB-to-CTB）進む（１つのＣＴＢ行において左から右であり、連続するＣＴＢ行において上から下に繰り返す）。ＣＴＢが分割される場合、ｚスキャン順序は、分割されたＣＴＢ内の四分木のＣＢのためのラスタスキャンパターンに従う。そして、ＣＢが分割される場合（例えば、複数ＣＢに、あるいは複数のＰＢに）、ｚスキャン順序は、分割されたＣＢ内のブロックのためのラスタスキャンパターンに従う。
【０１１１】
別法として、イントラＢＣ予測がＴＢ単位基準で実行されることが可能な場合、エンコーダ及びデコーダは、イントラ予測領域と現在のブロック（ＴＢ）との間のあり得るオーバーラップについてチェックし、それから、チェックの結果を使用して、イントラＢＣ予測動作の適用のために現在のＴＢがより小さいＴＢに分割されるべきであるかどうかを決めることができる。現在のＴＢがｍ×ｎのサイズを有し、ｍ及びｎは互いに等しくてもよく、あるいは異なる値を有してもよいと仮定する。ＢＶ［０］＞−ｍ及びＢＶ［１］＞−ｎの場合、イントラ予測領域は、現在のｍ×ｎのＴＢにオーバーラップし、このことは、イントラＢＣ予測動作の適用に関して、現在のｍ×ｎのＴＢがより小さいＴＢに分割されない限り、問題である。ゆえに、ＢＶ［０］＞−ｍ及びＢＶ［１］＞−ｎの場合、エンコーダ及びデコーダは、現在のＴＢをより小さいＴＢに分割する。より小さいＴＢについて、同じ条件がチェックされ（例えば、再帰的にチェックされ）、該より小さいＴＢは、分割の後のより小さい値のｍ及びｎについてもなおＢＶ［０］＞−ｍ及びＢＶ［１］＞−ｎの場合、さらに分割され得る。
【０１１２】
例えば、ＰＢのためのＢＶが（−９，−５）であり、現在のＴＢが３２×３２ブロックであると仮定する。エンコーダ及びデコーダは、−９＞−３２及び−５＞−３２と決定し、イントラ予測領域（その左上角は変位させた−９，−５である）が現在の３２×３２ＴＢにオーバーラップすることになると示す。エンコーダ及びデコーダは、３２×３２ＴＢを４つの１６×１６ＴＢに分割する。１６×１６ＴＢの各々について、エンコーダ及びデコーダは、−９＞−１６及び−５＞−１６と決定し、イントラ予測領域（その左上角は変位させた−９，−５である）が現在の１６×１６ＴＢにオーバーラップすることになると示す。エンコーダ及びデコーダは、各々の１６×１６ＴＢを、連続して、４つの８×８ＴＢに分割する。８×８ＴＢについて、（−９，−５）のＢＶは問題でなく、ゆえに８×８ＴＢは、さらに分割されるように強制されない。
【０１１３】
上記のシナリオにおいて、ＴＢが、ＢＶ値とＴＢのサイズとに起因して分割されるとき、エンコーダは、さもなければ現在のＴＢをより小さいＴＢに分割するべきかどうかを信号伝達することになるフラグ値について、信号伝達することをスキップすることができる。エンコードされたデータのビットストリームは、現在のＴＢをより小さいＴＢに分割するようにデコーダに向けるフラグ値を欠く。代わって、デコーダは、ＢＶ値とＴＢのサイズとに起因して、ＴＢが分割されるべきであると推論することができる。このことは、さもなければＴＢを分割することに関する情報を信号伝達するのに費やされることになるビットを、節約することができる。
【０１１４】
Ｃ．ＢＶ値のエンコーディング及びデコーディング
集合的に、イントラＢＣ予測を用いてエンコードされるブロックのＢＶ値は、相当数のビットを消費する可能性がある。ＢＶ値は、ビットレートを低減させるようにエントロピーエンコードされることができる。ＢＶ値のためのビットレートをさらに低減させるために、エンコーダは、ＢＶ値の予測を使用することができる。ＢＶ値は、冗長性をしばしば見せる。所与のブロックのためのＢＶ値は、ピクチャの中の前のブロックのＢＶ値としばしば類似し、あるいは同じでありさえする。ＢＶ予測について、所与のブロックのためのＢＶ値は、ＢＶ予測子を用いて予測される。それから、所与のブロックのためのＢＶ値とＢＶ予測子とにおける差（又は、ＢＶ差分）がエントロピー符号化される。典型的には、ＢＶ差分は、ＢＶ値の水平及び垂直の成分とＢＶ予測子とについて計算される。ＢＶ予測がうまく働くとき、ＢＶ差分は、効率的なエントロピー符号化をサポートする確率分布を有する。エンコーダ及びデコーダは、ＢＶ値をエンコードする／デコードするとき、基本的なＢＶ予測及び／又はマージモード／ＢＶ競合を使用することができる。
【０１１５】
エンコーディング及びデコーディングの間の基本的なＢＶ予測について、現在のブロックのためのＢＶ値は、１つ以上の前のブロックのＢＶ値に基づいて予測されることができる。例えば、近隣のブロック（例えば、現在のブロックの左のブロック）のＢＶ値が使用されて、現在のブロックのＢＶ値のためのＢＶ予測子を決定することができる。現在のブロックのＢＶ値が（−８０，−２４）であり、ＢＶ予測子が（−８０，−３２）である場合、（０，８）のＢＶ差分がエントロピーエンコードされる。あるいは、現在のブロックのＢＶ値のためのＢＶ予測子は、複数の近隣のブロック（例えば、現在のブロックの左、上、及び左上に対するブロック）のＢＶ値の、成分観点での中央値又は平均であってもよい。
【０１１６】
デコーディングの間、デコーダは、ＢＶ値のためのエントロピー符号化されたＢＶ差分を、もしあれば、受信し、エントロピーデコードする。デコーダは、さらに、ＢＶ値のためのＢＶ予測子を決定する。（デコーダによって決定されるＢＶ予測子は、エンコーダによって決定されるＢＶ予測子と同じである。）それから、再構成されるＢＶ差が、もしあれば、ＢＶ予測子と組み合わせられる。
【０１１７】
エンコーダ及びデコーダは、前のブロックからの実際のＢＶ値が利用可能でないとき（例えば、所与のＣＴＵの中の最初のイントラＢＣ予測されたブロックのためのＢＶ値を決定するとき）、デフォルトのＢＶ予測子を使用することができる。例えば、デフォルトＢＶ予測子は、（０，０）であり得る。あるいは、デフォルトＢＶ予測子は（−Ｗ，０）又は（−２＊Ｗ，０）であってもよく、ここで、Ｗは現在のブロックの幅である。あるいは、デフォルトＢＶ予測子は、（０，−Ｈ）又は（０，−２＊Ｈ）であってもよく、ここで、Ｈは現在のブロックの高さである。ゼロ値のデフォルトＢＶ予測子と比べて、非ゼロ成分を有するデフォルトＢＶ予測子は、現在のブロックのＢＶ値により近くなる傾向があり、このことは、ＢＶ差分についてのより効率的なエントロピー符号化を結果としてもたらす。あるいは、デフォルトＢＶ予測子の成分は、固定された非ゼロ値（例えば、８又は１６）を有してもよい。
【０１１８】
いずれの場合も、現在のブロックに関してあり得るＢＶ値が特定の検索範囲（例えば、前のセクションにおいて説明されたとおり、現在のＣＴＢ及び、現在のＣＴＢの左に対するＣＴＢ）内に入るように制約され、ＢＶ値が現在のブロックとそのイントラ予測領域とにおけるオーバーラップを結果としてもたらし得ない場合、いくつかの場合において、現在のブロックのためのＢＶ値は、１つのとり得る値だけを有し得る。例えば、（１）現在のＣＴＢが現在のブロックとして単一のＣＢを有し、（２）ＢＶ値の検索範囲が現在のＣＴＢ及びその左に対するＣＴＢであり、（３）現在のブロックとそのイントラ予測領域との間でオーバーラップすることが許容されない、という場合、単一のＣＢのためのＢＶ値は（−Ｗ，０）のＢＶ値を有さなければならない。他のＢＶ値は、検索範囲の外側の場所を参照するか、あるいは現在のブロック内の場所を参照するかのいずれかである。この状況において、エンコーダは、現在のブロックのためのＢＶ値（又は、ＢＶ差分）を信号伝達することをスキップすることができる。デコーダは、現在のブロックのためのいかなるＢＶ値（又は、ＢＶ差分）もパース及びデコードすることなく、条件をチェックして状況を識別し、（−Ｗ，０）のＢＶ値を推論することができる。
【０１１９】
あるいは、エンコーダ又はデコーダは、現在のブロックのための１つ以上の候補ＢＶ値を、空間的に現在のブロックの近くにある再構成されたブロック（例えば、現在のブロックの左に対するブロック、現在のブロックの上のブロック、など）に使用されたＢＶ値の中から決定する。候補ＢＶ値は、時間的に現在のブロックの近くにある再構成されたブロックに使用された１つ以上のＢＶ値をさらに含んでもよく、これにおいて、時間的に近隣のブロックは、別のピクチャの中で現在のブロックと対応する位置（例えば、同じ位置又はオーバーラップする位置）にある。候補ＢＶ値のリストが、エンコーディング及びデコーディングの間に規則によって決定されて、冗長なＢＶ値を消去することができる。エンコーディングの間、エンコーダは、候補ＢＶ値のうちいずれを現在のブロックのためのＢＶ予測子として使用すべきかを示す１つ以上のシンタックス要素を信号伝達することができる。いくつかのモードにおいて、そのＢＶ予測子が現在のブロックのためのＢＶ値として使用されることが可能であり、このことは、現在のブロックのＢＶ値を、候補ＢＶ値を提供する近隣のＢＶ値と効率的に「マージする」。あるいは、エンコーダは、ＢＶ値とＢＶ予測子とに基づいてＢＶ差を決定し、エンコードしてもよい。デコーディングの間、デコーダは、候補ＢＶ値のうちいずれを現在のブロックのためのＢＶ予測子として使用すべきかを示す１つ以上のシンタックス要素を受信することができる。いくつかのモードにおいて、そのＢＶ予測子が現在のブロックのためのＢＶ値として使用されることが可能であり、このことは、現在のブロックのＢＶ値を、候補ＢＶ値を提供する近隣のＢＶ値と効率的に「マージする」。あるいは、デコーダはＢＶ差を受信し、デコードしてもよく、該ＢＶ差をデコーダがＢＶ予測子と組み合わせて、ＢＶ値が再構成される。ＢＶ「スキップ」又はＢＶ「直接」モードが提供されることが可能であり、これにおいて、ＢＶ予測子（規則により選択される）が現在のブロックのＢＶ値として使用され、残差値は現在のブロックに関して信号伝達されない。ピンポンアプローチを用いたＢＶ予測の例が以下に説明され、これにおいて、エンコーダ及びデコーダは、ブロックのためのＢＶ値を予測するとき、候補ＢＶ値のペア間で選択する。
【０１２０】
Ｄ．イントラＢＣ予測の特徴を組み合わせた例示的な実施
述べられたとおり、イントラＢＣ予測についての前述の特徴は、別個に及び個々に使用されることができる。あるいは、イントラＢＣ予測についての前述の特徴は、組み合わせにおいて使用されてもよい。
【０１２１】
例えば、ＨＥＶＣシンタックスに一般的に従う１つの組み合わせられた実施において、ＢＶ値がＰＵのために信号伝達される（ＰＵは、ＣＵ又はＣＵの一部であり得る）。ＰＵは、１つ以上のＴＵを含み得る。イントラＢＣ予測処理は、ＰＵのために信号伝達されたＢＶ値を用いて、ＴＢ単位基準で、ＴＢのレベルにおいて動作する。（すべてのＴＢが同じＢＶ値を使用し、現在のＴＢのためのイントラＢＣ予測は、同じＣＵにおける他のより早いＴＢについての、再構成された値を使用することができる。）ＢＶ値は、１つ以上の近隣のＰＵのＢＶ値を用いて（例えば、ＢＶ予測に対してピンポンアプローチを用いて）予測されることができる。ＢＶ値の選択は、（ａ）まだエンコード／再構成されていないエリア内にある任意のサンプル値が参照されることを引き起こすことになるＢＶ値を選択することをエンコーダが禁止される（すなわち、現在のＴＢのためのイントラ予測領域のサンプル値が、デコーディング／ビットストリーム順序において現在のＴＢの前にくる他のＴＢによってカバーされたエリアの中であるべきであり；すなわち、所与のＴＢについて、ＢＶ値は、該ＴＢの外側にある領域を参照するように制約される）ように、（ｂ）デコーダにおける必要なメモリ容量を（例えば、参照をＢＶ値に従って現在のＣＴＢと現在のＣＴＢの左に対する１つ又は２つのＣＴＢとの中にあるように制約することによって）低減させるように、及び（Ｃ）参照がＢＶ値に従って現在のスライスの外側、現在のタイルの外側、又はピクチャの外側からであることを禁止するように、制約される。
【０１２２】
ＶＩＩＩ．ブロックベクトル予測におけるイノベーション
本明細書に説明されるイノベーションの一態様に従い、エンコーダ及びデコーダは、「ピンポン」アプローチに従ってブロックベクトル（“ＢＶ”）予測を使用する。具体的に、ＢＶ予測に対する例示的なピンポンアプローチは、いくつかのシナリオにおいてスクリーンコンテンツビデオをエンコードするとき、符号化効率を向上させる。
【０１２３】
例示的なピンポンアプローチにおいて、エンコーダ及びデコーダは、候補ＢＶ値のペアを状態情報として維持する。図１１は、例示的なピンポンアプローチにおいて使用されることが可能なＢＶバッファ（１１００）における候補ＢＶ値のペアを示す。ＢＶバッファ（１１００）において、ＢＶバッファ０は第１の初期候補ＢＶ値を記憶し、これはＢＶｉｎｉｔ＿０とラベル付けされる。ＢＶバッファ１は第２の初期候補ＢＶ値を記憶し、これはＢＶｉｎｉｔ＿１とラベル付けされる。一般に、ＢＶバッファ０のためのＢＶ値変数はＰＢＶ０とラベル付けされることが可能であり、ＢＶバッファ１のためのＢＶ値変数はＰＢＶ１とラベル付けされることが可能である。
【０１２４】
図１２は、例示的なピンポンアプローチに従って候補ＢＶ値のペアを記憶することが可能な別のデータ構造（１２００）を示す。データ構造（１２００）は第１の初期候補ＢＶ値を記憶し、これはＢＶｉｎｉｔ＿０とラベル付けされ、インデックス値ｉｄｘ０に関連付けられる。第２の初期候補ＢＶ値（ＢＶｉｎｉｔ＿１）は、データ構造（１２００）においてインデックス値ｉｄｘ１に関連付けられる。一般に、ｉｄｘ０に関連付けられるＢＶ値変数はＰＢＶ０とラベル付けされることが可能であり、ｉｄｘ１に関連付けられるＢＶ値変数はＰＢＶ１とラベル付けされることが可能である。
【０１２５】
別法として、エンコーダ及びデコーダは、別のデータ構造を使用して、ピンポンアプローチに従ってＢＶ予測のための候補ＢＶ値のペアを追跡する。
【０１２６】
例示的なピンポンアプローチに従い、候補ＢＶ値のペアから、エンコーダは、ＰＵのＢＶ値に使用するＢＶ予測子を選択する。例えば、ＰＵが、選択された候補ＢＶ値でイントラＢＣ予測を用いてエンコードされることになるとき、エンコーダは、参照されるイントラ予測領域が何らかのメトリック（例えば、絶対差の和、平均二乗誤差）によってＰＵに最も近くマッチするための候補ＢＶ値を選択する。あるいは、ＰＵが、イントラＢＣ予測に使用されることになる（ＢＶ推定を通して識別された）ＢＶ値を有するとき、エンコーダは、ＰＵのためのＢＶ値に最も近くマッチする候補ＢＶ値を選択する。上記選択は、最小のＢＶ差分を結果としてもたらし、このことは、エントロピー符号化の効率を向上させる傾向がある。
【０１２７】
ＢＶ値について、エンコーダは、候補ＢＶ値のペアのうち選択された１つを示すフラグ値を信号伝達して、デコーダに、候補ＢＶ値のペアのうちいずれがＢＶ予測子として使用されるべきであるかを示す。フラグ値は、固定長値としてエントロピー符号化され、あるいは信号伝達されることができる。フラグ値は、ビットストリームの中で別個のシンタックス要素として（条件付きで）信号伝達されてもよく、あるいは、フラグ値は、ビットストリームの中で別のシンタックス要素と共同で信号伝達されてもよい。
【０１２８】
候補ＢＶ値のペアの中の各候補ＢＶ値が、等しくＢＶ予測子である可能性があるとき、フラグ値は、固定長値（例えば、１ビット）として、あるいはバイパスモードにおいてバイナリ算術符号化を用いて（２つのとり得る値が等しく見込みがあると仮定して）効率的に信号伝達されることができる。第１の値（例えば、０）が第１の候補ＢＶ値の選択を示し、第２の値（例えば、１）が第２の候補ＢＶ値の選択を示す。フラグ値は、さらに、候補ＢＶ値のペアのうち一方が他方よりさらに可能性があるとき、固定長値として信号伝達されてもよく、しかし、符号化効率は低減される可能性がある。
【０１２９】
ペアの中の候補ＢＶ値のうち１つが、ＢＶ予測子として選択される可能性がより大きいとき、コンテキストベースの算術符号化を使用してフラグ値を信号伝達することが、より効率的である可能性がある。例えば、フラグ値の確率内容が、スライスについて符号化又はデコーディングが始まるときに、２つのとり得るフラグ値の確率を等しくするように初期化され、それから、符号化／デコーディングの間に、異なるフラグ値の発生について説明をするように更新されることが可能である。ＢＶ予測子フラグ値のための別個のコンテキストを有することは、符号化効率を向上させる可能性があり、しかし、コンテキストモデル化等に起因して、エンコーディング及びデコーディングの複雑さを追加する。典型的に、より頻繁に選択されるように予期される候補ＢＶ値は、第１のＢＶバッファ（例えば、ＢＶバッファ０）に記憶され、第１のフラグ値を用いて示され、あまり頻繁に選択されないように予期される候補ＢＶ値は、他のＢＶバッファ（例えば、ＢＶバッファ１）に記憶され、他のフラグ値を用いて示される。ゆえに、第１のＢＶバッファを示すフラグ値が、平均で、算術符号化において、より小さい数の小数ビット（fractional  bits）を用いてエンコードされることができる。しかしながら、いくつかのコンテンツについて、より一般的な候補ＢＶ値が、他のＢＶバッファ（例えば、ＢＶバッファ１）に記憶され、コンテキストモデル化が、ＢＶ予測子分布における変更について説明をしてもよい。
【０１３０】
デコーダは、ＢＶ値のためのフラグ値をパースし／デコードし、フラグ値を使用して、候補ＢＶ値のペアのうちいずれがＢＶ値のためのＢＶ予測子であるかを決定する。デコーダは、選択された候補ＢＶ値をＢＶ予測子として使用する。
【０１３１】
エンコーダ及びデコーダは、いずれのＢＶ値が候補ＢＶ値のペアの中にあるかを追跡し、更新する。前のピンポンアプローチにおいて、新しいＢＶ値が生成される（又は、再構成される）とき、ペアの中のより古い候補ＢＶ値（ＰＢＶ１）は、ペアの中のより新しいＢＶ値（ＰＢＶ０）で置換され、ペアの中のより新しいＢＶ値（ＰＢＶ０）は、ちょうど生成された／再構成されたＢＶ値（ＢＶｎｅｗ）で置換される。（すなわち、ＰＢＶ１＝ＰＢＶ０、及び、ＰＢＶ０＝ＢＶｎｅｗである。）候補ＢＶ値のペアは、各ＢＶ値が生成され又は再構成されるとき、更新される。
【０１３２】
本明細書に説明される例示的なピンポンアプローチにおいて、エンコーダ及びデコーダは、ＢＶ値が生成され又は再構成された後、該ＢＶ値を含むように、候補ＢＶ値のペアを自動的に更新することができる。しかしながら、このことは、候補ＢＶ値のペアが２つの同一の候補ＢＶ値を有することを結果としてもたらす可能性がある。上記の状況において、エンコーダ（双方の候補ＢＶ値が同一であると認識する）は、候補ＢＶ値のペア間における選択を示すフラグ値を信号伝達することをスキップすることができ、デコーダ（双方の候補ＢＶ値が同一であると認識する）は、同一の候補ＢＶ値のうちいずれかをＢＶ予測子として単に使用することに代わって、フラグ値をパースすることをスキップすることができる。
【０１３３】
あるいは、本明細書に説明される例示的なピンポンアプローチにおいて、エンコーダ及びデコーダは、候補ＢＶ値のペア（及び、ＢＶバッファ）を選択的に更新して、同一の候補ＢＶ値を有することを回避することができる。エンコーダ又はデコーダは、新しいＢＶ値が、ペアの中に残ることになる候補ＢＶ値に等しくないときのみ、候補ＢＶ値のペアを更新する。新しいＢＶ値が、ペアの中に残ることになる候補ＢＶ値に等しい場合、エンコーダ又はデコーダは、更新動作をスキップする。例えば、エンコーダ又はデコーダは、候補ＢＶ値のペア（ＰＢＶ０及びＰＢＶ１）を選択的に更新して、新しいＢＶ値ＢＶｎｅｗを下記の、
ｉｆ（ＢＶｎｅｗ！＝ＰＢＶ０）｛
ＰＢＶ１＝ＰＢＶ０；
ＰＢＶ０＝ＢＶｎｅｗ；
｝ｅｌｓｅ｛
ｄｏ  ｎｏｔｈｉｎｇ；
｝
として含む。条件ＢＶｎｅｗ！＝ＰＢＶ０をテストすることによって、エンコーダ及びデコーダは、ＰＢＶ０がＰＢＶ１に等しい状況を回避し、この場合、ＢＶ予測子を示すフラグ値は無駄にされる。一方、条件をチェックすることはＢＶ予測に対する複雑さを追加し、このことは、リソース要件を所与として許容可能でなく、あるいは符号化効率におけるゲインによって正当化される可能性がある。
【０１３４】
例えば、ＰＢＶ０が（−１２，０）であり、ＰＢＶ１が（−１６，０）であると仮定する。ＢＶｎｅｗが（−１７，０）である場合、（−１２，０）はＰＢＶ１の（−１６，０）に取って代わり、（−１７，０）はＰＢＶ０の（−１２，０）に取って代わる。ＰＢＶ１からの前のＢＶ値（−１６，０）は破棄される。一方、ＢＶｎｅｗが（−１２，０）である場合、ＢＶｎｅｗがＰＢＶ０にマッチするので、ＰＢＶ０及びＰＢＶ１は変更されない。ＢＶｎｅｗがＰＢＶ１にマッチする場合（この例において、双方（−１６，０））、ＰＢＶ０及びＰＢＶ１の順序が効率的に切り替えられる。（−１２，０）がＰＢＶ１の（−１６，０）に取って代わり、（−１６，０）（ＢＶｎｅｗのための）がＰＢＶ０の（−１２，０）に取って代わる。
【０１３５】
本明細書に説明される例示的なピンポンアプローチにおいて、４つのＰＵを有するＣＵについて、エンコーダ及びデコーダは、ＢＶ予測に使用される候補ＢＶ値のペアを更新するとき、異なるパターンを使用する。概念的に、上記異なるパターンは、ＰＵレベル更新とは対照的に、候補ＢＶ値のペアのＣＵレベル更新を使用する。ＢＶ予測がＣＵについて終了された後、候補ＢＶ値のペアは、ＣＵについての最初の２つのＰＵのＢＶ値、ＢＶバッファ０におけるＰＵ１のためのＢＶ値とＢＶバッファ１におけるＰＵ０のためのＢＶ値とを含む。対照的に、前のピンポンアプローチに従って、ＢＶ予測がＣＵについて終了された後、候補ＢＶ値のペアは、ＣＵについての最後の２つのＰＵのＢＶ値を含み、該２つのＰＵは、ＰＵ３及びＰＵ２であり得る。
【０１３６】
別法として、エンコーダ及びデコーダは、ＢＶ予測に使用される候補ＢＶ値のペアを更新するとき、異なるパターンを使用することができる。フラグ値が、固定長値を用いて符号化される場合、例えば、エンコーダ及びデコーダは、ちょうど生成され又は再構成されたＢＶ値で２つのバッファを更新することの間で「トグルする（toggle）」（交互にする）ことができる。こうして、エンコーダ及びデコーダは、（より新しい候補ＢＶ値を、より古い候補ＢＶ値の箇所にシフトし、それから、新しいＢＶ値を、より新しい候補ＢＶ値の前の箇所に追加することに代わって）単一の動作を使用して、より古い候補ＢＶ値を置換することができ、しかし、エンコーダ及びデコーダは、どのＢＶバッファが次に更新されるべきであるかを追跡する必要がある。さらに、トグルすることは、コンテキスト適応バイナリ算術符号化と干渉することによって、フラグ値の符号化効率を損ねる可能性がある。
【０１３７】
実際のＢＶ値が、候補ＢＶ値としての使用に利用可能でないとき（例えば、ＣＴＵの最初のＣＵを符号化又はデコードする前）、候補ＢＶ値のペアは、デフォルト値に初期化されることができる。例えば、候補ＢＶ値の双方が（−２Ｗ，０）に初期化され、ここでＷはＣＵの幅である。あるいは、候補ＢＶ値のうち一方が（−２Ｗ，０）に初期化されることが可能であり、他方の候補ＢＶ値が（０，−２Ｈ）に初期化されることが可能であり、ここでＨはＣＵの高さである（及び、Ｗと同じであり得る）。あるいは、候補ＢＶ値は、別の値、例えば、（−Ｗ，０）又は（０，−Ｈ）などに初期化されることが可能である。あるいは、簡潔さのために、実際のＣＵサイズに依存するデフォルト値を使用することに代わって、候補ＢＶ値は、固定値、例えば、（−８，０）、（−１６，０）、（０，−８）、（０，−１６）など、又は、ビットストリームの中で信号伝達される値に初期化されることが可能である。このことは、例えば、サイズ８又は１６のＣＵがイントラＢＣ予測について最も一般的であるとき、適切であり得る。いずれの場合も、ＢＶ予測の開始の後、実際のＢＶ値が、候補ＢＶ値のペアの中のデフォルトＢＶ値を置換する。
【０１３８】
下記の例のすべてにおいて、別段示されない限り、ＢＶバッファ０は「好まれた」候補ＢＶ値を記憶し、この値は、ＢＶバッファ１に記憶された他の候補ＢＶ値よりも選択される可能性が大きい。コンテキスト適応バイナリ算術符号化が、より一般的なＢＶ予測子フラグ値のより高い確率を活用して、フラグ値の符号化効率を向上させることができる。
【０１３９】
Ａ．２Ｎ×２Ｎ  ＣＵの、２Ｎ×２Ｎ  ＰＵのための例示的なＢＶ予測
図１３は、例示的なピンポンアプローチに従う、２Ｎ×２Ｎ  ＣＵの、２Ｎ×２Ｎ  ＰＵのためのＢＶ予測の一例を示す。２Ｎ×２ＮのＣＵは単一の２Ｎ×２ＮのＰＵ（ＰＵ０）を含み、そのＢＶは候補ＢＶ値のペアを用いて予測される。
【０１４０】
図１３において、ＢＶバッファ０は、第１の初期候補ＢＶ値ＢＶｉｎｉｔ＿０（ＰＢＶ０）を最初記憶し、ＢＶバッファ１は、第２の初期候補ＢＶ値ＢＶｉｎｉｔ＿１（ＰＢＶ１）を最初記憶する。単一の２Ｎ×２ＮのＰＵ（ＰＵ０）のためのＢＶ値は、２Ｎ×２ＮのＰＵのためのフラグ値によって示されるとおり、ＰＢＶ０又はＰＢＶ１のいずれかを用いて予測される。ＰＵ０のためのＢＶ値は、選択されたＢＶ予測子を用いて（例えば、エンコーディング又はデコーディングの間に）処理される。
【０１４１】
それから、候補ＢＶ値のペアは、下記のとおり更新される。ＰＢＶ１が、ＰＢＶ０で置換され、ＰＢＶ０が、ＰＵ０のためのＢＶ値で置換される。すなわち、ＰＢＶ１＝ＰＢＶ０、及び、ＰＢＶ０＝ＢＶ  ＰＵ０である。図１３において、ＢＶバッファ１は、ＢＶｉｎｉｔ＿０を記憶するように更新され、ＢＶバッファ０は、ＰＵ０のためのＢＶ値（ＢＶＰＵ０）を記憶するように更新される。別法として、上記で説明されたとおり、エンコーダ又はデコーダは、新しいＢＶ値ＢＶｎｅｗ（ここでは、ＢＶＰＵ０）がＰＢＶ０に等しいかどうかに依存して、候補ＢＶ値のペア（及び、ＢＶバッファ）を選択的に更新する。
【０１４２】
Ｂ．２Ｎ×２Ｎ  ＣＵの、Ｎ×Ｎ  ＰＵのための例示的なＢＶ予測
図１４は、例示的なピンポンアプローチに従う、２Ｎ×２Ｎ  ＣＵの、４つのＮ×Ｎ  ＰＵのためのＢＶ予測の一例を示す。２Ｎ×２ＮのＣＵは４つのＮ×ＮのＰＵ（ＰＵ０、ＰＵ１、ＰＵ２、及びＰＵ３）を含み、それらのＢＶ値は候補ＢＶ値のペアを用いて予測され、該ペアはＣＵのためのＢＶ予測処理の間に更新される。
【０１４３】
図１４において、ＢＶバッファ０は、第１の初期候補ＢＶ値ＢＶｉｎｉｔ＿０（ＰＢＶ０）を最初記憶し、ＢＶバッファ１は、第２の初期候補ＢＶ値ＢＶｉｎｉｔ＿１（ＰＢＶ１）を最初記憶する。第１のＮ×ＮのＰＵ（ＰＵ０）のためのＢＶ値は、ＰＵ０のためのフラグ値によって示されるとおり、ＰＢＶ０又はＰＢＶ１のいずれかを用いて予測される。ＰＵ０のためのＢＶ値（ＢＶＰＵ０）は、選択されたＢＶ予測子を用いて（例えば、エンコーディング又はデコーディングの間に）処理される。
【０１４４】
それから、候補ＢＶ値のペアは、ＰＢＶ１をＰＢＶ０で置換することによって、及び、ＰＢＶ０をＰＵ０のためのＢＶ値で置換することによって、更新される。すなわち、ＰＢＶ１＝ＰＢＶ０、及び、ＰＢＶ０＝ＢＶＰＵ０である。図１４において、ＢＶバッファ１は、ＢＶｉｎｉｔ＿０を記憶するように更新され、ＢＶバッファ０は、ＢＶＰＵ０を記憶するように更新される。別法として、上記で説明されたとおり、エンコーダ又はデコーダは、新しいＢＶ値ＢＶｎｅｗ（ここでは、ＢＶＰＵ０）がＰＢＶ０に等しいかどうかに依存して、候補ＢＶ値のペア（及び、ＢＶバッファ）を選択的に更新する。
【０１４５】
次いで、第２のＮ×ＮのＰＵ（ＰＵ１）のためのＢＶ値が、ＰＵ１のためのフラグ値によって示されるとおり、ＰＢＶ０（図１４において、その左の近隣のＢＶＰＵ０）又はＰＢＶ１（図１４において、ＢＶｉｎｉｔ＿０）のいずれかを用いて予測される。ＰＵ１のためのＢＶ値（ＢＶＰＵ１）は、選択されたＢＶ予測子を用いて（例えば、エンコーディング又はデコーディングの間に）処理される。
【０１４６】
それから、候補ＢＶ値のペアは、ＰＢＶ１をＰＢＶ０置換することによって、及び、ＰＢＶ０をＰＵ１のためのＢＶ値で置換することによって、更新される。すなわち、ＰＢＶ１＝ＰＢＶ０、及び、ＰＢＶ０＝ＢＶＰＵ１である。図１４において、ＢＶバッファ１は、ＢＶＰＵ０を記憶するように更新され、ＢＶバッファ０は、ＢＶＰＵ１を記憶するように更新される。別法として、上記で説明されたとおり、エンコーダ又はデコーダは、新しいＢＶ値ＢＶｎｅｗ（ここでは、ＢＶＰＵ１）がＰＢＶ０に等しいかどうかに依存して、候補ＢＶ値のペア（及び、ＢＶバッファ）を選択的に更新する。
【０１４７】
次いで、第３のＮ×ＮのＰＵ（ＰＵ２）のためのＢＶ値が、ＰＵ２のためのフラグ値によって示されるとおり、ＰＢＶ０（図１４において、その右上の近隣のＢＶＰＵ１）又はＰＢＶ１（図１４において、その上の近隣のＢＶＰＵ０）のいずれかを用いて予測される。このフラグ値について、ＢＶバッファ１は、ＢＶバッファ０でなく、好まれる候補ＢＶ値を記憶する。上記調整は、ＢＶＰＵ０（上の近隣）がＢＶＰＵ１（右上の近隣）よりも可能性の大きい候補であることについて説明をする。ＰＵ２のためのＢＶ値（ＢＶＰＵ２）は、選択されたＢＶ予測子を用いて（例えば、エンコーディング又はデコーディングの間に）処理される。その後、ＢＶバッファ０の中の候補ＢＶ値（図１４において、ＢＶＰＵ１）とＢＶバッファ１の中の候補ＢＶ値（図１４において、ＢＶＰＵ０）は、変更されない。
【０１４８】
最後、第４のＮ×ＮのＰＵ（ＰＵ３）のためのＢＶ値が、ＰＵ３のためのフラグ値によって示されるとおり、別の場所にバッファされるＰＵ２のためのＢＶ値（ＢＶＰＵ２）、又はＰＢＶ１（図１４において、その上の近隣のＢＶＰＵ１）のいずれかを用いて予測される。このフラグ値について、ＢＶバッファ０は、再度、好まれる候補ＢＶ値を記憶し、しかしながら、他方の候補ＢＶ値は、ＢＶバッファ１に記憶されていない。ＰＵ３のためのＢＶ値（ＢＶＰＵ３）は、選択されたＢＶ予測子を用いて（例えば、エンコーディング又はデコーディングの間に）処理される。その後、ＢＶバッファ０及びＢＶバッファ１の中の候補ＢＶ値は、変更されない。図１４において、ＣＵについての４つのＮ×ＮのＰＵのためのＢＶ予測の終わりにおいて、候補ＢＶ値のペアは、ＢＶＰＵ１（ＢＶバッファ０の中）とＢＶＰＵ０（ＢＶバッファ１の中）である。
【０１４９】
対照的に、前のピンポンアプローチに従い、２Ｎ×２Ｎ  ＣＵの、Ｎ×Ｎ  ＰＵのためのＢＶ予測について、ＢＶ値が生成され又は再構成されるとき、ＢＶバッファ０の中の候補ＢＶ値はＢＶバッファ１に移動され、ちょうど生成された／再構成されたＢＶ値はＢＶバッファ０に記憶される。２Ｎ×２ＮのＣＵの、４つのＮ×ＮのＰＵのためのＢＶ予測の終わりにおいて、候補ＢＶ値のペアは、ＢＶＰＵ３（ＢＶバッファ０の中）とＢＶＰＵ２（ＢＶバッファ１の中）であることになる。実施において、前のピンポンアプローチに対していくつかの欠点が存在する。次のＣＵが単一の２Ｎ×２ＮのＰＵを有する場合、大抵、現在のＣＵのＢＶＰＵ０が最良のＢＶ予測子であることになり、しかし、現在のＣＵのＢＶＰＵ０は候補ＢＶ値のうちの１つとして保有されない。あるいは、次のＣＵが２つのＮ×２ＮのＰＵを有する場合、大抵、現在のＣＵのＢＶＰＵ０及びＢＶＰＵ１が、それぞれ、次のＣＵのＰＵ０及びＰＵ１のための最良のＢＶ予測子であることにあり、しかし、現在のＣＵのＢＶＰＵ０及びＢＶＰＵ１は候補ＢＶ値として保有されない。
【０１５０】
しかしながら、本明細書に説明される例示的なピンポンアプローチに従い、（図１４に示されるとおり）２Ｎ×２ＮのＣＵについてのＮ×ＮのＰＵのためのＢＶ予測の後、候補ＢＶ値のペアは、ＢＶＰＵ１（ＢＶバッファ０の中）とＢＶＰＵ０（ＢＶバッファ１の中）である。これは、次のＣＵのＢＶ予測に最も有用である可能性のある候補ＢＶ値を保有する。
【０１５１】
Ｃ．２Ｎ×２Ｎ  ＣＵの、Ｎ×２Ｎ  ＰＵ又は２Ｎ×Ｎ  ＰＵのための例示的なＢＶ予測
図１５は、例示的なピンポンアプローチに従う、２Ｎ×２Ｎ  ＣＵの、２つのＮ×２Ｎ  ＰＵ又は２つの２Ｎ×Ｎ  ＰＵのためのＢＶ予測の一例を示す。２Ｎ×２ＮのＣＵは２つのＮ×２ＮのＰＵ（左のＰＵ０及び右のＰＵ１）又は２つの２Ｎ×ＮのＰＵ（上のＰＵ０及び下のＰＵ１）を含み、そのＢＶ値は候補ＢＶ値のペアを用いて予測され、該ペアはＣＵのためのＢＶ予測処理の間に更新される。
【０１５２】
図１５において、ＢＶバッファ０は、第１の初期候補ＢＶ値ＢＶｉｎｉｔ＿０（ＰＢＶ０）を最初記憶し、ＢＶバッファ１は、第２の初期候補ＢＶ値ＢＶｉｎｉｔ＿１（ＰＢＶ１）を最初記憶する。第１のＰＵ（ＰＵ０）のためのＢＶ値は、ＰＵ０のためのフラグ値によって示されるとおり、ＰＢＶ０又はＰＢＶ１のいずれかを用いて予測される。ＰＵ０のためのＢＶ値（ＢＶＰＵ０）は、選択されたＢＶ予測子を用いて（例えば、エンコーディング又はデコーディングの間に）処理される。
【０１５３】
それから、候補ＢＶ値のペアは、ＰＢＶ１をＰＢＶ０で置換することによって、及び、ＰＢＶ０をＰＵ０のためのＢＶ値で置換することによって、更新される。すなわち、ＰＢＶ１＝ＰＢＶ０、及び、ＰＢＶ０＝ＢＶＰＵ０である。図１５において、ＢＶバッファ１は、ＢＶｉｎｉｔ＿０を記憶するように更新され、ＢＶバッファ０は、ＢＶＰＵ０を記憶するように更新される。別法として、上記で説明されたとおり、エンコーダ又はデコーダは、新しいＢＶ値ＢＶｎｅｗ（ここでは、ＢＶＰＵ０）がＰＢＶ０に等しいかどうかに依存して、候補ＢＶ値のペア（及び、ＢＶバッファ）を選択的に更新する。
【０１５４】
次いで、第２のＰＵ（ＰＵ１）のためのＢＶ値が、ＰＵ１のためのフラグ値によって示されるとおり、ＰＢＶ０（図１５において、その近隣のＢＶＰＵ０）又はＰＢＶ１（図１５において、ＢＶｉｎｉｔ＿０）のいずれかを用いて予測される。ＰＵ１のためのＢＶ値（ＢＶＰＵ１）は、選択されたＢＶ予測子を用いて（例えば、エンコーディング又はデコーディングの間に）処理される。
【０１５５】
それから、候補ＢＶ値のペアは、ＰＢＶ１をＰＢＶ０置換することによって、及び、ＰＢＶ０をＰＵ１のためのＢＶ値で置換することによって、更新される。すなわち、ＰＢＶ１＝ＰＢＶ０、及び、ＰＢＶ０＝ＢＶＰＵ１である。図１５において、ＢＶバッファ１は、ＢＶＰＵ０を記憶するように更新され、ＢＶバッファ０は、ＢＶＰＵ１を記憶するように更新される。別法として、上記で説明されたとおり、エンコーダ又はデコーダは、新しいＢＶ値ＢＶｎｅｗ（ここでは、ＢＶＰＵ１）がＰＢＶ０に等しいかどうかに依存して、候補ＢＶ値のペア（及び、ＢＶバッファ）を選択的に更新する。
【０１５６】
Ｄ．ピンポンアプローチに従う例示的なＢＶ予測手法
図１６は、例示的なピンポンアプローチに従う、複数のＰＵを有するＣＵのためのＢＶ値を予測する一例示的な手法を示す。ＣＵは、一般に、エンコーディング及びデコーディングの目的の１つ以上のブロックのセットであり、ＰＵの各々は、予測情報及び／又は予測処理を信号伝達する目的の、ＣＵ内の１つ以上のブロックのセットである。画像エンコーダ若しくはビデオエンコーダ、例えば、図３若しくは図５ａ〜図５ｂを参照して説明されるものなど、又は他のエンコーダが、手法（１６００）を実行することができる。あるいは、画像デコーダ若しくはビデオデコーダ、例えば、図４若しくは図６を参照して説明されるものなど、又は他のデコーダが、手法（１６００）を実行することができる。
【０１５７】
始め、候補ＢＶ値のペアは、第１の初期候補ＢＶ値ＢＶｉｎｉｔ＿０（ＰＢＶ０）と第２の初期候補ＢＶ値ＢＶｉｎｉｔ＿１（ＰＢＶ１）であり、これらはそれぞれ、ＢＶバッファ０及び１に記憶される。
【０１５８】
現在のピクチャの現在のＣＵの複数のＰＵの各々について、エンコーダ又はデコーダは、候補ＢＶ値のペアのうち１つを用いて、ＰＵのＢＶ値を予測する（１６１０）。フラグ値が、候補ＢＶ値のペア間における選択を示す。候補ＢＶ値のペアは、ＣＵの異なるＰＵについて、異なることが可能である。例えば、現在のＣＵが４つのＰＵを含むとき、第１のＰＵについて、候補ＢＶ値ＰＢＶ０及びＰＢＶ１のペアは、それぞれ、ＢＶｉｎｉｔ＿０及びＢＶｉｎｉｔ＿１であり得る。第２のＰＵについて、候補ＢＶ値ＰＢＶ０及びＰＢＶ１のペアは、それぞれ、第１のＰＵのＢＶ値（ＢＶＰＵ０）及びＢＶｉｎｉｔ＿０であり得る。第３のＰＵについて、候補ＢＶ値ＰＢＶ０及びＰＢＶ１のペアは、それぞれ、第２のＰＵのＢＶ値（ＢＶＰＵ１）及びＢＶＰＵ０であり得る。最後、第４のＰＵについて、候補ＢＶ値のペアは、ＢＶＰＵ１及び第３のＰＵのＢＶ値（ＢＶＰＵ２）であり得る。
【０１５９】
それから、エンコーダ又はデコーダは、ＰＵの予測された値を用いて、ＰＵのＢＶ値を処理する（１６２０）。例えば、エンコードしている間、エンコーダは、ＰＵのＢＶ値と予測されたＢＶ値とを用いて、ＢＶ差分値を決定する。あるいは、デコードしている間、デコーダは、予測されたＢＶ値に少なくとも部分的に基づいて、ＰＵのＢＶ値を再構成する。
【０１６０】
ＢＶバッファは、（新しいＢＶ値ＢＶｎｅｗがＰＢＶ０に等しいかどうかに依存して）自動的に又は選択的に更新されることができる。例えば、（図１４に示されるとおり、）現在のＣＵが４つのＰＵを含むとき、第１のＰＵ（ＰＵ０）のＢＶ予測の前、ＢＶバッファ０がＢＶｉｎｉｔ＿０を記憶し、ＢＶバッファ１がＢＶｉｎｉｔ＿１を記憶する。第２のＰＵ（ＰＵ１）のＢＶ予測の前、ＢＶバッファ０はＢＶＰＵ０を記憶し、ＢＶバッファ１はＢＶｉｎｉｔ＿１を記憶する。第３のＰＵ（ＰＵ２）のＢＶ予測の前、ＢＶバッファ０はＢＶＰＵ１を記憶し、ＢＶバッファ１はＢＶＰＵ０を記憶する。ＰＵ２の処理の後、ＢＶバッファ０はＢＶＰＵ１を保有し、ＢＶバッファ１はＢＶＰＵ０を保有する。
【０１６１】
現在のＣＵのＢＶ予測の後、ＢＶバッファに対する更新が発生したとき、候補ＢＶ値のペアは現在のＣＵのＢＶＰＵ１及びＢＶＰＵ０である。これらは、現在のピクチャの後のＣＵのＢＶ予測のための、初期候補ＢＶ値であることになる。ゆえに、現在のＣＵが４つのＰＵを含むとき、候補ＢＶ値の最終的なペアは、現在のＣＵの第１及び第２のＰＵのＢＶ値が現在のＣＵの第３及び第４のＰＵのＢＶ値の前に処理されたとしても、現在のＣＵの第１及び第２のＰＵのＢＶ値を含むことができる。
【０１６２】
図１７は、例示的なピンポンアプローチに従う、ＢＶバッファの選択的な更新を用いた、ＣＵのためのＢＶ値を予測する別の例示的な手法を示す。画像エンコーダ若しくはビデオエンコーダ、例えば、図３若しくは図５ａ〜図５ｂを参照して説明されるものなど、又は他のエンコーダが、手法（１７００）を実行することができる。あるいは、画像デコーダ若しくはビデオデコーダ、例えば、図４若しくは図６を参照して説明されるものなど、又は他のデコーダが、手法（１７００）を実行することができる。
【０１６３】
エンコーダ又はデコーダは、現在のピクチャの複数のＣＵを処理する。例えば、エンコーダは、複数のＣＵをエンコーディングの一部として処理し、エンコードされたデータをビットストリームの一部として出力する。あるいは、デコーダは、複数のＣＵをデコーディングの一部として処理し、再構成されたサンプル値を出力する。複数のＣＵのうちのいずれの所与のＣＵも、単一のＰＵ又は複数のＰＵを含むことができる。
【０１６４】
始め、候補ＢＶ値のペアは、第１の初期候補ＢＶ値ＢＶｉｎｉｔ＿０（ＰＢＶ０）と第２の初期候補ＢＶ値ＢＶｉｎｉｔ＿１（ＰＢＶ１）であり、これらはそれぞれ、ＢＶバッファ０及び１に記憶される。
【０１６５】
複数のＣＵのうちの所与のＣＵについて、エンコーダ又はデコーダは、所与のＣＵが単一のＰＵ又は複数のＰＵを有するかどうかをチェックする（１７１０）。所与のＣＵが単一のＰＵを有する場合、エンコーダ又はデコーダは、候補ＢＶ値のＰＢＶ０及びＰＢＶ１（図１７において、ＢＶｉｎｉｔ＿０及びＢＶｉｎｉｔ＿１）のうち１つを用いて単一のＰＵのためのＢＶ値を予測し（１７２０）、これにおいて、フラグ値が候補ＢＶ値のペア間における選択を示す。エンコーダ又はデコーダは、予測されたＢＶ値を用いて単一のＰＵのためのＢＶ値を処理する（１７３０）。エンコーダ又はデコーダは、ＰＵのＢＶ値（ＢＶＰＵ０）がＢＶバッファ０に記憶されたＢＶ値（ＢＶｉｎｉｔ＿０）に等しいかどうかに依存して、ＢＶバッファ０及び１を選択的に更新する。例えば、エンコーダ又はデコーダは、ＢＶＰＵ０とＢＶバッファ０に記憶されたＢＶ値（ＢＶｉｎｉｔ＿０）とを比較する。ＢＶＰＵ０がＢＶバッファ０に記憶されたＢＶ値（ＢＶｉｎｉｔ＿０）と異なる場合、エンコーダ又はデコーダは、ＢＶバッファ１にＢＶバッファ０からのＢＶ値（ＢＶｉｎｉｔ＿０）を記憶し、ＢＶバッファ０にＢＶＰＵ０を記憶する。
【０１６６】
上記処理（１７３０）の後、ＢＶバッファに対する更新が発生したとき、ＢＶバッファ０は単一のＰＵのためのＢＶ値（ＢＶＰＵ０）を記憶し、ＢＶバッファ１はＢＶｉｎｉｔ＿０を記憶する。エンコーダ又はデコーダは、ピクチャの次のＣＵで継続すべきかどうかをチェックする（１７４０）。そうである場合、バッファされたＢＶ値のペアは、次のＣＵのための初期候補ＢＶ値ＢＶｉｎｉｔ＿０及びＢＶｉｎｉｔ＿１として扱われる。
【０１６７】
そうでない場合、所与のＣＵが複数のＰＵを有するとき、エンコーダ又はデコーダは、所与のＣＵのＰＵのためのＢＶ予測及び処理を実行する。所与のＣＵの複数のＰＵの各々について、エンコーダ又はデコーダは、候補ＢＶ値ＰＢＶ０及びＰＢＶ１のペア（当初ＢＶｉｎｉｔ＿０及びＢＶｉｎｉｔ＿１であり、しかし後に更新される）のうち１つを用いて、ＰＵのＢＶ値を予測する（１７５０）。ＰＵのためのフラグ値が、候補ＢＶ値のペア間における選択を示す。エンコーダ又はデコーダは、予測されたＢＶ値を用いてＰＵのＢＶ値を処理する（１７６０）。ＰＵが所与のＣＵの第１又は第２のＰＵである場合、エンコーダ又はデコーダは、ＰＵのＢＶ値（ＢＶＰＵｘ）がＢＶバッファ０に記憶されたＢＶ値（ＰＢＶ０）に等しいかどうかに依存して、バッファ０及び１を選択的に更新する。例えば、エンコーダ又はデコーダは、ＢＶＰＵｘとＰＢＶ０とを比較する。ＢＶＰＵｘがＰＢＶ０と異なる場合、エンコーダ又はデコーダは、ＢＶバッファ１にＰＢＶ０を記憶し、ＢＶバッファ０にＢＶＰＵｘを記憶する。
【０１６８】
エンコーダ又はデコーダは、ＰＵが所与のＣＵにおける最後のＰＵであるかどうかをチェックする（１７７０）。そうでない場合、エンコーダ又はデコーダは、所与のＣＵの次のＰＵのためのＢＶ予測で継続する（１７５０）。例えば、ＰＵは、２Ｎ×２ＮのＣＵについての、４つのＮ×Ｎブロック、２つのＮ×２Ｎブロック、又は２つの２Ｎ×Ｎブロックである。
【０１６９】
所与のＣＵの最後のＰＵの処理（１７６０）の後、ＢＶバッファに対する双方の更新が発生したとき、ＢＶバッファ０は所与のＣＵの第２のＰＵのためのＢＶ値（ＢＶＰＵ１）を記憶し、ＢＶバッファ１は所与のＣＵの第１のＰＵのためのＢＶ値（ＢＶＰＵ０）を記憶する。エンコーダ又はデコーダは、ピクチャの次のＣＵで継続すべきかどうかをチェックする（１７４０）。そうである場合、バッファされたＢＶ値のペアＢＶＰＵ１及びＢＶＰＵ０は、次のＣＵのための初期候補ＢＶ値ＢＶｉｎｉｔ＿０及びＢＶｉｎｉｔ＿１として扱われる。
【０１７０】
ＩＸ．イントラブロックコピー予測モードのエンコーダ側オプション
本セクションは、イントラブロックコピー（“ＢＣ”）予測のエンコーダ側オプションのための様々なイノベーションを提示する。イノベーションのいくつかは、ブロックについて同時的にブロックベクトル（“ＢＶ”）推定を実行すること及びブロック分割判断を行うことに関する。別のイノベーションが、ＢＶ推定の間に複数のブロックをより大きいブロックに選択的にマージすることに関する。さらに別のイノベーションが、ＢＶ推定の間に現在のブロックのオーバーラップエリア内のサンプル値を推定することに関する。一般に、上記イノベーションは、イントラＢＣ予測の符号化効率を向上させる。
【０１７１】
ＢＶ推定の一部として、エンコーダは、いくつかのアプローチのうち任意のものを使用することができる。エンコーダはフル検索を使用し、検索範囲の中で許容されるあらゆる候補ＢＶ値を評価することができる。あるいは、エンコーダは部分検索を使用し、検索範囲の中で許容される候補ＢＶ値のいくつかのみを評価することができる。例えば、エンコーダは、（例えば、１つ以上の近隣のブロックについてのＢＶ値に基づいて予測された）現在のブロックのための予測されたＢＶ値において部分検索を開始することができる。部分検索の開始位置において候補ＢＶ値を評価した後、エンコーダは、（例えば、らせん状検索パターン又は何らかの他のパターンに従って）開始位置から増加する距離における１つ以上の他の候補ＢＶ値を評価することができる。所与の候補ＢＶ値を評価するとき、エンコーダは、イントラ予測領域と現在のブロックとの中のすべてのサンプル値を比較することができる。あるいは、エンコーダは、サンプル値のサブセット（すなわち、値が評価されるサブサンプル）を評価することができる。イントラ予測領域と現在のブロックとにおけるサンプル値を比較して歪みコストを決定するとき、エンコーダは、平均二乗誤差、二乗された差の和、絶対差の和、又は歪みについての何らかの他の測定を計算することができる。エンコーダは、候補ＢＶ値のエンコーディングに関連付けられたレートコストをさらに決定することができる。
【０１７２】
エンコーディングの間、様々な段階において、エンコーダはレート歪み最適化（“ＲＤＯ”）を使用することができ、これにおいて、様々なオプションのレートコスト及び歪みコストが評価される。一般に、オプションのレート歪みコストは、Ｄ＋λＲ（又は、Ｒ＋λＤ）によって与えられ、ここで、Ｒは、エンコードされたデータのビットの観点におけるレートコストを表し、Ｄは、平均二乗誤差又は知覚的歪み測定などのメトリックを用いた歪みコストを表し、λは、歪みコストＤと比較してレートコストＲを重み付けするラグランジュの乗数（Lagrangian  multiplier）（重み付けパラメータの例）である。エンコーダは、典型的に、最も低いレート歪みコストを与えるオプションを選択する。
【０１７３】
Ａ．ＢＶ推定の間における複数ブロックのより大きいブロックへの選択的マージ
ＢＶ推定の間、エンコーダは、複数のブロックをより大きいブロックにマージすることができる。こうして、エンコーダは、ＢＶ情報を信号伝達するために使用されるビットの数を低減することができる。具体的に、イントラＢＣ予測がＴＢ単位基準（TB-by-TB  basis）で実行されるとき、エンコーダは、ＴＢとそのイントラ予測領域とにおけるオーバーラップを回避するようにイントラＢＣ予測の間にＣＢをより小さいＴＢに分割することに依存して、ＣＢ単位基準（CB-by-CB  basis）でＢＶ推定を実行し、それから、小さい複数のＣＢをより大きいＣＢにマージすることができる。
【０１７４】
図１８は、ＢＶ推定の間に複数のブロックをより大きいブロックに選択的にマージする手法（１８００）を示す。手法（１８００）は、画像エンコーダ若しくはビデオエンコーダ、例えば、図３若しくは図５ａ〜図５ｂを参照して説明されるものなどによって、又は別のエンコーダによって実行されることができる。
【０１７５】
この手法に従い、エンコーダがイントラＢＣ予測を用いてピクチャのデータをエンコードするとき、第１のサイズを有する複数のブロックの各々について、エンコーダは、ＢＶ推定を用いてＢＶ値を識別する（１８１０）。第１のサイズは、８×８、１６×１６、３２×３２、又は何らかの他のサイズであり得る。一般に、第１のサイズを有するブロックの各々について、ＢＶ推定は、候補ＢＶ値のコストを決定することを含む。コストは、レートコスト及び／又は歪みコストを含むことができる。識別されたＢＶ値は、第１のサイズを有するブロックにオーバーラップしないイントラ予測領域を参照する。
【０１７６】
エンコーダは、複数のブロックのうち２つ又はそれ以上を、第１のサイズより大きい第２のサイズを有するブロックに選択的にマージする（１８２０）。第２のサイズは、１６×１６、３２×３２、６４×６４、又は何らかの他のサイズであり得る。例えば、エンコーダは、第１のサイズを有する複数のブロックの中の２つ以上の隣接ブロックについてのＢＶ値を比較し、比較されたＢＶ値が同一である場合、該２つ以上の隣接ブロックを第２のサイズを有するブロックにマージする。第２のサイズを有するブロックは、同一のＢＶ値を割り当てられる。第１のサイズを有するブロックとは違って、ＢＶ値は、第２のサイズを有するブロックにオーバーラップするイントラ予測領域を参照する可能性がある。
【０１７７】
エンコーダは、別のブロックについて、手法（１８００）を繰り返すことができる。最終的に、エンコーダは、ピクチャのためのエンコードされたデータを出力する。
【０１７８】
いくつかの例示的な実施において、第１のサイズを有する複数のブロックの各々がＣＢであり、第２のサイズを有するブロックもまたＣＢである。しかしながら、イントラＢＣ予測は、ＴＢ単位基準で実行される。ＢＶ推定は、第１のサイズを有する複数のブロックの各々について、検索範囲のフル検索を使用することができる。あるいは、ＢＶ推定は、第１のサイズを有する複数のブロックの各々について、検索範囲の部分検索を使用し、例えば、ブロックのための予測されたＢＶ値で始まり、可能性として、評価された候補ＢＶ値のコストに少なくとも部分的に依存して部分検索を終了することができる。
【０１７９】
図１９は、ＢＶ推定の間に複数のブロックをより大きいブロックに選択的にマージすること（１９００）の利点を例示する。図１９において、０、１、２、及び３と番号付けされた（薄い実線で示された）４つのブロックが、それぞれ、対応するイントラ予測領域０’、１’、２’、及び３’を参照するＢＶ値を有する。すなわち、ＢＶ値は、ブロック０についてイントラ予測領域０’を参照し、ブロック１’についてイントラ予測領域１を参照する、などする。イントラ予測領域は、点線で示される。ブロック０、１、２、又は３のいずれも、その対応するイントラ予測領域にオーバーラップしない。しかしながら、ブロック０、１、２、及び３を含む（濃い実線で示された）より大きいブロックは、その対応するイントラ予測領域にオーバーラップする。エンコーダが、より大きいブロックのＢＶ推定を実行することになる場合、イントラ予測領域とブロックとの間におけるオーバーラップが禁止されているとき、エンコーダは、図１９に示されるＢＶ値を許容可能なＢＶ値として識別することができないことになる。対照的に、エンコーダが、より小さいブロック０、１、２、及び３のＢＶ推定を実行するとき、エンコーダは、すべての４つのブロックについて同じＢＶ値を識別し、エンコーダは、４つのブロックを、同じＢＶ値を有するより大きいブロックにマージすることができる。エンコーディング又はデコーディングの間、より大きいブロックは、実際のイントラＢＶ予測オプションのために、より小さいブロックに分割されることになる。例えば、所与のサイズを有するＣＢが、ＴＢとそのイントラ予測領域とにおけるオーバーラップなしの、ＴＢ単位基準でのイントラＢＣ予測動作の実行のために、より小さいＴＢに分割される。
【０１８０】
Ｂ．同時的なブロックベクトル推定及びブロック分割判断
エンコーダは、現在のブロックについて同時的にＢＶ推定及びブロック分割判断を実行することができる。具体的に、イントラＢＣ予測動作がＴＢ単位基準で実行されるとき、エンコーダは、現在のブロックのための候補ＢＶ値ととり得るブロック分割判断とを同時的に評価することができる。
【０１８１】
図２０は、ブロックについて同時的にＢＶ推定を実行すること及びブロック分割判断を行うことのための一般化された手法を例示するフローチャートである。この手法（２０００）は、画像エンコーダ若しくはビデオエンコーダ、例えば、図３若しくは図５ａ〜図５ｂを参照して説明されるものなどによって、又は別のエンコーダによって実行されることができる。
【０１８２】
エンコーダが、イントラＢＣ予測を用いてピクチャのデータをエンコードするとき、エンコーダは、現在のブロックのデータをエンコードする（２０１０）。エンコーディング（２０１０）の一部として、エンコーダは、ＢＶ推定動作及びブロック分割判断動作を同時的に実行する。いくつかの例示的な実施において、現在のブロックは、サイズにおいてＴＢに対応するＣＢであり、イントラＢＣ予測はＴＢ単位基準で実行される。例えば、エンコーディング（２０１０）の一部として、エンコーダは、図２１に示される手法（２１００）を実行して、現在のブロックのための候補ＢＶ値ととり得るブロック分割判断とを同時的に評価する。
【０１８３】
図２１は、ブロックについての候補ＢＶ値及びブロック分割判断を同時的に評価する一例示的な手法を示すフローチャートである。この手法（２１００）は、画像エンコーダ若しくはビデオエンコーダ、例えば、図３若しくは図５ａ〜図５ｂを参照して説明されるものなどによって、又は別のエンコーダによって実行されることができる。
【０１８４】
エンコーダは、ＢＶ推定動作を用いて現在のブロックの候補ＢＶ値を識別する（２１１０）。現在のブロックは第１のサイズを有する。例えば、第１のサイズは、８×８、１６×１６、３２×３２、６４×６４、又は何らかの他のサイズである。
【０１８５】
エンコーダは、現在のブロックを分割すべきかどうかをチェックする（２１２０）。例えば、エンコーダは、現在のブロックのための候補ＢＶ値を有するイントラＢＣ予測が、現在のブロックと候補ＢＶ値により参照されるイントラ予測領域とにおけるオーバーラップをもたらすかどうかを評価する。
【０１８６】
チェック（２１２０）の結果に依存して、エンコーダは、現在のブロックを、各々が第１のサイズより小さい第２のサイズを有する複数のブロックに選択的に分割する（２１３０）。例えば、第２のサイズは、４×４、８×８、１６×１６、３２×３２、又は何らかの他のサイズである。それから（現在のブロックが分割されて）、エンコーダは、より小さいブロックの各々について、この手法（２１００）を繰り返す（２１４０）。すなわち、第２のサイズを有するブロックの各々について、エンコーダは、第２のサイズを有するブロックが現在のブロックとして扱われる状態で、識別すること、評価すること、選択的に分割すること等を繰り返す。
【０１８７】
一方、現在のブロックが分割されない場合、エンコーダは現在のブロックをエンコードし（２１５０）、現在のブロックをエンコードすることのコストを測定する（２１６０）。例えば、エンコーダが現在のブロックをエンコードするとき、エンコーダは、（ａ）現在のブロックのサンプル値をイントラＢＣ予測を用いて予測し、（ｂ）予測されたサンプル値と現在のブロックのサンプル値とを用いて、現在のブロックのための残差値を決定し、（ｃ）場合により、残差値に周波数変換を適用して、変換係数を生成し、変換係数を量子化し、（ｄ）場合により、変換係数を逆量子化し、逆周波数変換を適用して、残差値を再構成し、（ｅ）残差値と予測されたサンプル値とを組み合わせる。測定されるコストは、レート歪みコスト、レートコスト、又は歪みコストであり得る。レートコストは、ＢＶ値を信号伝達することのコストとブロック分割判断情報を信号伝達することのコストとの双方について説明をすることができる。
【０１８８】
別法として、エンコーダは、何らかの他の方法において、現在のブロックのための候補ＢＶ値ととり得るブロック分割判断とを評価する。例えば、イントラ予測領域とブロックとにおけるオーバーラップを考慮することに加えて、エンコーダは、ブロックが最小の許容可能サイズをすでに有するかどうかをさらに考慮する。そうである場合、ブロックは分割されず、しかし、候補ＢＶ値は許容されない。
【０１８９】
図２０に戻ると、エンコーディング（２０１０）の一部として、エンコーダは、候補ＢＶ値のコストを記録することができる。それから、エンコーダは、１つ以上の他の候補ＢＶ値を評価することができる。例えば、エンコーダは、別の候補ＢＶ値について、上記手法（２１００）を繰り返す。最終的に、エンコーダは、現在のブロック（及び現在のブロック内のブロック）について、１つ以上のＢＶを選択し、ブロック分割判断を行い、このことは、最も低いコスト（例えば、レート歪みコスト、レートコスト、又は歪みコスト）を結果としてもたらす。
【０１９０】
エンコーダは、ブロックのエンコードされたデータを出力する（２０２０）。エンコーダは、別のブロックについて、上記手法（２０００）を繰り返すことができる。
【０１９１】
Ｃ．オーバーラップエリア内の再構成されたサンプル値の推定
本明細書に説明されるいくつかの例において、ＢＶは、ＣＵのレベルにおいて信号伝達され、ＣＢレベルにおいてブロックに適用される。ＣＢと対応するイントラ予測領域とにおけるオーバーラップは、許容されない。本明細書に説明される別の例において、エンコーダは、ＢＶ値がより高いシンタックスレベルおいて（例えば、ＣＵに対して）信号伝達されるとしても、ＢＶ値をより小さいブロックに対してＴＢ単位基準で適用する。例えば、ＢＶ値は、３２×３２ＣＢを有するＣＵについて信号伝達され、しかしＢＶ値は、４×４ＴＢ又は８×８ＴＢのレベルにおいてブロックに適用される。このことは、ＴＢレベルにおけるブロックとコピーされるイントラブロック領域とにおけるオーバーラップを依然として有さないと同時に、ＢＶ値がより小さい大きさを有することを許可する。
【０１９２】
所与のブロックが、イントラＢＣ予測動作の目的でより小さいブロックに分割されるとき、所与のブロックは、該所与のブロックのサンプル値がより小さいブロックのうち１つ以上のためのイントラ予測領域の一部であり得るオーバーラップエリアを含む。本セクションは、オーバーラップエリア内の再構成されたサンプル値を推定することに対するアプローチを説明する。具体的に、本セクションは、ブロックのＢＶ値がＴＢ単位基準でより小さいブロックに適用されるとき、ブロックのオーバーラップエリア内の再構成されたサンプル値を推定することに対するアプローチを説明する。
【０１９３】
図２２ａは、サイズ２ｍ×２ｎを有する現在のブロック（２２１０）を例示する。現在のブロック（２２１０）は、イントラＢＣ動作の目的で、４つのｍ×ｎブロック（２２２１、２２２２、２２２３、２２２４）を含む。例えば、現在のブロック（２２１０）はＣＵの８×８ブロックであり、４つのより小さいブロック（２２２１、２２２２、２２２３、２２２４）は、４×４ＴＢを有する４×４ブロックである。あるいは、現在のブロック（２２１０）はＣＵの１６×１６ブロックであり、４つのより小さいブロック（２２２１、２２２２、２２２３、２２２４）は、８×８ＴＢを有する８×８ブロックである。イントラＢＣ予測動作が、ジグザグスキャン順序（図２２ａにおいて、ブロック０、ブロック１、ブロック２、それからブロック３）においてｍ×ｎブロックに適用されるとき、第１のｍ×ｎブロック（２２２１）のためのイントラ予測領域は、現在の２ｍ×２ｎブロック（２２１０）の外側である。しかしながら、第２のｍ×ｎブロック（２２２２）について、イントラ予測領域は、部分的に又は完全に、第１のｍ×ｎブロック（２２２１）にオーバーラップする可能性がある。第３のｍ×ｎブロック（２２２３）について、イントラ予測領域は、部分的に又は完全に、第１のｍ×ｎブロック（２２２１）又は第２のｍ×ｎブロック（２２２２）にオーバーラップする可能性がある。そして第４のｍ×ｎブロック（２２２４）について、イントラ予測領域は、部分的に又は完全に、現在のブロック（２２１０）についての最初の３つのｍ×ｎブロック（２２２１、２２２２、２２２３）のいずれかにオーバーラップする可能性がある。
【０１９４】
図２２ｂは、現在のブロック（２２１０）のオーバーラップエリア（２２３０）を示す。オーバーラップエリア（２２３０）は、ジグザグスキャン順序における最初の３つのｍ×ｎブロック（２２２１、２２２２、２２２３）をカバーする。なぜならば、これら３つのｍ×ｎブロックの中のサンプル値が、現在のブロック（２２１０）の少なくとも１つのｍ×ｎブロックのためのイントラ予測領域の一部である可能性があるからである。別のサイズのより小さいブロック（１６×１６ブロック又は３２×３２ブロックの、４×４ブロック）について、オーバーラップエリアは、現在のブロックのさらに多くをカバーし得る。
【０１９５】
ＢＶ推定の間、エンコーダが、イントラＢＣ予測動作の目的でより小さいブロックに分割される現在のブロックのための候補ＢＶ値を評価するとき、エンコーダは、該エンコーダがジグザグ順序においてそれぞれのより小さいブロックにわたって候補ＢＶ値を適用するので、オーバーラップエリア内における実際の再構成されたサンプル値を算出することができる。このことは、より小さいブロックごとに候補ＢＶ値ごとに適用されるエンコーディング動作及び再構成動作を伴うので、計算的に集中的であり得る。代わって、エンコーダは、オーバーラップエリア内の再構成されたサンプル値を推定することができる。具体的に、イントラＢＣ予測動作がより小さいブロックについてＴＢ単位基準で実行されるとき、エンコーダは、複数のより小さいブロックを含む現在のブロックのオーバーラップエリア内の再構成されたサンプル値を推定することができる。
【０１９６】
図２３は、エンコーダがオーバーラップエリア内の再構成されたサンプル値を推定する、ＢＶ推定の一例示的な手法を示すフローチャートである。この手法（２３００）は、画像エンコーダ若しくはビデオエンコーダ、例えば、図３若しくは図５ａ〜図５ｂを参照して説明されるものなどによって、又は別のエンコーダによって実行されることができる。
【０１９７】
ピクチャの現在のブロックについて、エンコーダは、現在のブロックのオーバーラップエリア内の再構成されたサンプル値を推定する（２３１０）。現在のブロックは、複数のより小さいブロックを有する。例えば、現在のブロックは、第１のサイズ（例えば、３２×３２、１６×１６、又は８×８）を有し、複数のブロックの各々は、第１のサイズより小さい第２のサイズ（例えば、１６×１６、８×８、又は４×４）を有する。現在のブロックはＣＵのブロックであることが可能であり、この場合、複数のより小さいブロックの各々は、ＴＵのＴＢのレベルにあり得る。オーバーラップエリアは、複数のより小さいブロックのうち少なくとも１つについての潜在的なイントラ予測領域内である、現在のブロックの一部をカバーする（covers）。
【０１９８】
オーバーラップエリア内の再構成されたサンプル値を推定することに対する第１のアプローチに従い、エンコーダは、オーバーラップエリア内の対応する元のサンプル値を、それぞれ、再構成されたサンプル値として使用する。現在のブロックの外側で、ＢＶ推定は、ピクチャ内の元のサンプル値を使用することができる。別法として、現在のブロックの外側で、ＢＶ推定は、ピクチャ内の再構成されたサンプル値を使用することができる（すなわち、現在のブロックの外側の再構成されたサンプル値；現在のブロックのオーバーラップエリア内の元のサンプル値）。この場合、元のサンプル値は、実際の再構成されたサンプル値がＢＶ推定の間に利用可能でないときに、イントラ予測領域に使用されることができ、しかし、その他の場合は、実際の再構成されたサンプル値が使用される。
【０１９９】
オーバーラップエリア内の再構成されたサンプル値を推定することに対する第２のアプローチに従い、エンコーダは、オーバーラップエリア内の元のサンプル値を処理する。具体的に、エンコーダは、オーバーラップエリア内の元のサンプル値に周波数変換、量子化、逆量子化、及び逆周波数変換を適用し、オーバーラップエリア内の再構成されたサンプル値の近似を生じさせる。量子化及び逆量子化は、現在のブロックの周りの近隣において適用された（又は、適用されると予期される）量子化パラメータを使用することができる。
【０２００】
オーバーラップエリア内の再構成されたサンプル値を推定することに対する第３のアプローチに従い、エンコーダは、オーバーラップエリア内の再構成されたサンプル値を推定するとき、イントラＢＣ予測動作を使用する。エンコーダは、少なくとも１つのＢＶ予測子（例えば、ピクチャにおける前のブロック、例えば、近隣のブロックのＢＶ値、又は、デフォルトＢＶ予測子など）を用いて、オーバーラップエリア内のサンプル値を予測する。エンコーダは、予測されたサンプル値とオーバーラップエリア内の対応する元のサンプル値とにおける差に基づいて、残差値を決定する。残差値に対して、エンコーダは、周波数変換、量子化、逆量子化、及び逆周波数変換を適用する。量子化及び逆量子化は、現在のブロックの周りの近隣において適用された（又は、適用されると予期される）量子化パラメータを使用することができる。エンコーダは、処理の結果（すなわち、再構成された残差値）を予測されたサンプル値と組み合わせ、このことが、オーバーラップエリア内の再構成されたサンプル値の近似を生じさせる。
【０２０１】
第３のアプローチの１つのバリエーションにおいて、エンコーダは、少なくとも１つのＢＶ予測子（例えば、ピクチャにおける前のブロック、例えば、近隣のブロックのＢＶ値、又はデフォルトＢＶ予測子など）を用いて、オーバーラップエリア内のサンプル値を予測し、しかし、残差値の処理をスキップする。オーバーラップエリアにおける推定された再構成されたサンプル値は、予測されたサンプル値である。
【０２０２】
第３のアプローチの別のバリエーションにおいて、エンコーダは、オーバーラップエリアの残差が有意である（significant）（例えば、変換、量子化等の後、非ゼロの変換係数値を有する）ことになるかどうかを推定することができる。例えば、エンコーダは、残差値が小さい大きさを有するかどうかを個々に又は集合的に評価し、あるいは、残差値の何らかの他の条件をチェックすることができる。残差値が有意でない場合、エンコーダは、残差処理をスキップし、予測されたサンプル値をオーバーラップエリアにおける推定された再構成されたサンプル値として単に使用することができる。そうでない場合（残差値が有意である）、エンコーダは、上記で説明されたとおり、残差値を再構成し、それから、これらを予測されたサンプル値と組み合わせて、オーバーラップエリアにおける推定された再構成されたサンプル値を生成することができる。
【０２０３】
エンコーダは、ＢＶ推定を実行して（２３２０）、現在のブロックのＢＶ値を決定する。ＢＶ推定は、現在のブロックのオーバーラップエリア内の推定された再構成されたサンプル値のうち少なくともいくつかを使用する。ＢＶ推定は、現在のブロックの外側のピクチャ内の再構成されたサンプル値（又は、１つのアプローチにおいて、元のサンプル値）をさらに使用する。
【０２０４】
ＢＶ推定は、現在のブロックのための１つ以上の候補ＢＶ値の各々について、候補ＢＶ値に従ってより小さいブロックそれぞれと候補イントラ予測領域とにおけるブロックマッチング動作を実行することを含むことができる。例えば、４つのより小さいブロックを有する現在のブロックの所与の候補ＢＶ値について、エンコーダは、この所与の候補ＢＶ値に従って、４つのより小さいブロックとその対応する候補イントラ予測領域とにおけるブロックマッチング動作を実行する。
【０２０５】
別法として、ＢＶ推定は、（１）複数のより小さいブロックの各々について、より小さいブロックのためのＢＶ値を決定することと、（２）複数のより小さいブロックのためのＢＶ値を、現在のブロックのためのＢＶ値へ合成することと、を含むことができる。例えば、４つのより小さいブロックを有する現在のブロックについて、エンコーダは、連続して、第１のより小さいブロックのためのＢＶ値、第２のより小さいブロックのためのＢＶ値、第３のより小さいブロックのためのＢＶ値、及び第４のより小さいブロックのためのＢＶ値を決定する。第１のより小さいブロックの後、ＢＶ推定は、現在のブロックのオーバーラップエリアの中のイントラ予測領域の評価を含んでもよい。それから、エンコーダは、４つのより小さいブロックのためのＢＶ値を、現在のブロックのためのＢＶ値に合成する。例えば、エンコーダは、（ａ）複数のより小さいブロックのためのＢＶ値を平均し、（ｂ）複数のより小さいブロックのためのＢＶ値の中央値を算出し、（ｃ）複数のより小さいブロックのためのＢＶ値の周りの近隣（neighborhood）の中で、現在のブロックのためのＢＶ値を識別し、（ｄ）複数のより小さいブロックのためのＢＶ値の周りの近隣の中で、候補ＢＶ値に対してＲＤＯを用いて、現在のブロックのためのＢＶ値を識別し、あるいは、（ｅ）何らかの他の方法において複数のより小さいブロックのためのＢＶ値を現在のブロックのＢＶ値に合成することができる。
【０２０６】
現在のブロックのためのＢＶ値がＢＶ推定によって識別された後、エンコーダは、現在のブロックのためのＢＶ値を用いて、現在のブロックのためのイントラＢＣ予測を実行することができる。そうすることにおいて、エンコーダは、複数のより小さいブロックについて、ブロック単位基準（block-by-block  basis）でＢＣ動作を実行する。ゆえに、エンコーダは、現在のブロックのレベルにおいてＢＶ推定を実行し、しかし、より小さいブロックのレベルにおいてＢＶ補償を実行することができる。例えば、エンコーダは、８×８ＣＵの８×８ブロックのためのＢＶ推定を実行し、しかし、４つの４×４ブロックについてジグザグスキャン順序においてＴＢ単位基準でイントラＢＣ動作（及び、再構成動作）を実行することができる。４×４ブロックは、（８×８ＣＵの）同じＢＶ値を共有し、エンコーダは、残差値の連続した４×４ブロックに対して、４×４変換、量子化、逆量子化、４×４逆変換等を実行する。第１の４×４ブロック（ＴＢ０のための）が再構成され、それから、第２の４×４ブロック（ＴＢ１のための）のイントラ予測領域に使用されることができる。第２の４×４ブロックが再構成され、それから、第３の４×４ブロック（ＴＢ２のための）のイントラ予測領域に使用されることができる。第４の４×４ブロック（ＴＢ３のための）について、最初の３つの４×４ブロックのうち任意のものがイントラ予測領域に使用されることができる。
【０２０７】
デコーダ側において、上記で説明されたとおり、デコーダは、ＢＶ値がイントラ予測領域と現在のブロックとにおけるオーバーラップを結果的にもたらすかどうかをチェックすることができる。そうである場合、（ＴＢレベルにおける）ブロックは、（より小さいＴＢのレベルにおける）４つのより小さいブロック分割され、それから、４つのより小さいブロックは、ジグザグ順序において（イントラＢＣ予測及び再構成動作を用いて）連続的にデコードされる。ゆえに、より小さいブロックのうち１つについての再構成されたサンプル値は、ジグザグ順序における次のより小さいブロックのためのイントラ予測領域での使用に利用可能である。ＴＵの変換ブロックフラグがゼロである場合、イントラＢＣ予測はＣＵレベルにおいてのみ適用され、クロマ非相関が無効にされる。
【０２０８】
Ｄ．代替物及びバリエーション
前述の例の多くが、ルマブロックのためのイントラＢＣ予測動作及びＢＶ値に対処する。ＹＵＶ４：４：４フォーマットにおけるビデオについて、クロマ成分は、ルマ成分と同じ解像度を有する。現在のルマブロックに使用されるＢＶ値は、対応するクロマブロックに使用されることができる。現在のルマブロックが、イントラＢＣ予測動作のためにより小さいルマブロックに分割されるとき、対応するクロマブロックがさらに、イントラＢＣ予測動作のために同じ仕方において、より小さいクロマブロックに分割される。
【０２０９】
ＹＵＶ４：２：０フォーマットにおけるビデオについて、クロマ成分が、２のファクタによって水平に、及び２のファクタによって垂直にダウンサンプリングされる。例えば、現在のルマブロックが１６×１６のサイズを有する場合、対応するクロマブロックは８×８のサイズを有する。現在のルマブロックに使用されるＢＶ値は、適切なスケール変更及び丸め（及び／又は切り捨て）演算の後、対応するクロマブロックに使用されることができる。一般に、現在のルマブロックがイントラＢＣ予測動作のためにより小さいルマブロックに分割されるとき、対応するクロマブロックもまた、イントラＢＣ予測動作のために同じ仕方において、より小さいクロマブロックに分割される。
【０２１０】
しかしながら、いくつかの実施において、上記のことは常には当てはまらない。いくつかの実施において、ＹＵＶ４：２：０フォーマットにおけるビデオのルマＴＢが最小変換サイズを有する場合、この最小変換サイズを有するクロマＴＢが、上記ルマＴＢと同じＣＢのためのその３つの近隣のルマＴＢとのためのクロマ相当物（counterparts）に使用される。例えば、現在のルマＴＢが４×４の最小サイズを有する（及び、８×８ルマＣＢに関連付けられる）場合、対応するクロマＣＢは、４×４のサイズを有する。各々の４×４クロマＣＢは、単一の４×４クロマＴＢを有する。サイズ２×２を有するクロマＴＢは、ＹＵＶ４：２：０フォーマットのダウンサンプリングで予期されるであろうとおり、サポートされない。こうした実施において、イントラＢＣ予測のために現在のルマブロックをより小さいルマブロックに分割することは、より小さいルマブロックが最小変換サイズを有することになる場合、サポートされない。なぜならば、対応するクロマブロックに適用されるとき、上記分割が、最小変換サイズより小さいクロマブロックを結果としてもたらすことになるからである。こうした実施において、イントラＢＣ予測動作のために現在のルマブロック（及び、対応するクロマブロック）をより小さいブロックに分割することは、より大きいサイズについて、依然として許可される。
【０２１１】
ＹＵＶ４：２：２フォーマットにおけるビデオについて、クロマ成分は、２のファクタによって水平にダウンサンプリングされる。例えば、現在のルマブロックが１６×１６のサイズを有する場合、対応するクロマブロックは８×１６のサイズを有する。現在のルマブロックに使用されるＢＶ値は、適切なスケール変更及び丸め（及び／又は切り捨て）演算の後、対応するクロマブロックに使用されることができる。一般に、現在のルマブロックがイントラＢＣ予測動作のためにより小さいルマブロックに分割されるとき、対応するクロマブロックがさらに、イントラＢＣ予測動作のために同じ仕方において、より小さいクロマブロックに分割されることができる。
【０２１２】
しかしながら、いくつかの実施において、上記のことは常には当てはまらない。いくつかの実施において、ＹＵＶ４：２：２フォーマットにおけるビデオのルマＴＢが最小変換サイズを有する場合、この最小変換サイズを有するクロマＴＢが、上記ルマＴＢと同じＣＢにおける近隣のルマＴＢとのためのクロマ相当物に使用される。例えば、現在のルマＴＢが４×４の最小サイズを有する（及び、８×８ＣＢに関連付けられる）場合、対応する４×８クロマＣＢは、各々、２つの４×４クロマＴＢを有する。サイズ２×４を有するクロマＴＢは、ＹＵＶ４：２：２フォーマットのダウンサンプリングで予期されるであろうとおり、サポートされない。代わって、４×８クロマＣＢの４×４クロマＴＢの各々は、２つの２×４クロマエリアのための残差値を含む。こうした実施において、（上記で説明されたとおりの、イントラＢＣ予測動作のための、クロマブロックのより小さいクロマブロックへの対応する分割と共に、）上記で説明されたとおり、イントラＢＣ予測のために現在のルマブロックをより小さいルマブロックに分割することは、最小変換サイズより大きいブロックサイズについて、許可される。より小さいブロックが、最小変換サイズを有する場合、イントラＢＣ予測動作のために現在のルマブロックをより小さいルマブロックに分割することは、残差値のクロマブロックが図２４に示されるとおり再配置される場合、サポートされる。
【０２１３】
図２４は、ＹＵＶ４：２：２フォーマットにおけるビデオの、４×４の最小変換サイズを有するブロックを示す。８×８ルマブロック（２４１０）が４×４ルマブロック（２４２１、２４２２、２４２３、２４２４）を含み、これらは０．．．３と番号付けされる。対応する４×８クロマブロック（２４３０）は対応するクロマ成分を含み、これらは２のファクタによって水平にダウンサンプリングされる。２×４の変換サイズはサポートされない。
【０２１４】
ＨＥＶＣ標準の現在のドラフトによれば、４×８クロマブロックについて、２×４ブロック０及び１は、残差符号化及びデコーディングのための４×４変換サイズを有する４×４クロマＴＢとして一緒に処理され、２×４ブロック２及び３は、残差符号化及びデコーディングのための４×４変換サイズを有する４×４クロマＴＢとして一緒に処理される。結果として、２×４ブロック０は、２×４ブロック１が再構成されるまで再構成されないことになるので、２×４ブロック１のためのイントラＢＣ予測動作は、２×４ブロック０における再構成されたサンプル値を参照することができない。同様にして、２×４ブロック３のためのイントラＢＣ予測動作は、２×４ブロック２における再構成されたサンプル値を参照することができない。
【０２１５】
図２４に示されるとおり、４×８クロマブロック（２４４０）の２×４ブロックは、残差の符号化及びデコーディングの目的で、再配置されることができる。この場合、２×４ブロック０及び２が、残差符号化及びデコーディングのための４×４変換サイズを有する４×４クロマＴＢとして一緒に処理され、２×４ブロック１及び３が、残差符号化及びデコーディングのための４×４変換サイズを有する４×４クロマＴＢとして一緒に処理される。イントラＢＣ予測動作は、４×８クロマブロック（２４３０）の「再配置されていない（un-rearranged）」２×４ブロックにおいて、依然として起こる。４×８クロマブロックがデコードされるとき、２×４ブロック０及び２のためのイントラＢＣ予測が最初起こり、その後に、２×４ブロック０及び２のための残差デコーディングと２×４ブロック０及び２のためのサンプル値の再構成とが続く。それから、２×４ブロック１及び３が再構成される。ゆえに、２×４ブロック０は、２×４ブロック１が再構成される前に、再構成されることができ、ゆえに、２×４ブロック１のためのイントラＢＣ予測動作は、２×４ブロック０における再構成されたサンプル値を参照することができる。同様にして、２×４ブロック３のためのイントラＢＣ予測動作は、２×４ブロック２における再構成されたサンプル値を参照することができる。残差値の２×４クロマブロックの上記再配置は、エンコーダにおいて、及びデコーダにおいて起こる。
【０２１６】
４×８クロマブロック（２４４０）が、残差符号化及びデコーディングのための再配置された２×４ブロックを有して、オーバーラップエリアが、グレイにおいて図示されるとおり、ルマブロックの左半分と対応するクロマブロックとについてサポートされる。ＢＶ推定の間、エンコーダは、（上記で説明されたとおり）オーバーラップエリアの中の再構成されたサンプル値を推定し、オーバーラップエリアを部分的に又は完全にカバーするイントラ予測領域を参照する候補ＢＶ値を評価することができる。
【０２１７】
上記アプローチにおいて、非ゼロの水平ＢＶ成分を有するＢＶ値が許容され、しかし、ＢＶ値は非ゼロの垂直ＢＶ成分を有する。このことは、例えば、サンプル値において水平連続性を典型的に見せる、スクリーンキャプチャコンテンツに適切である。
【０２１８】
例示的な実施において、イントラＢＣ予測が、ルマブロックについて、及びクロマブロックについて、整数サンプル精度を有するＢＶ値を使用する。小数の変位（及び、再構成されたサンプル値間における小数の補間）は、ＢＶ値に使用されない。ピクチャのクロマデータが、ピクチャのルマデータに対して低減された解像度を有するとき（例えば、フォーマットがＹＵＶ４：２：０フォーマット又はＹＵＶ４：２：２フォーマットであるとき）、ルマブロックからのＢＶ値は、それが対応するクロマブロックに適用される前に下方にスケール変更されて、クロマ解像度における差について調整されることができ、しかし、整数サンプル精度を有する値に丸められ、かつ／あるいは切り捨てられる。
【０２１９】
別法として、ＢＶ値は、ルマブロックについて整数サンプル精度を有し、しかし、対応するクロマブロックについて小数サンプル（fractional-sample）精度を有してもよい。具体的に、ピクチャのクロマデータが、ピクチャのルマデータに対して低減された解像度を有するとき、ルマブロックからのＢＶ値は、それが対応するクロマブロックに適用される前、下方にスケール変更されて、クロマ解像度における差について調整されることができる。ＹＵＶ４：２：０フォーマットについて、ＢＶ値の垂直及び水平成分は、２で除算され、切り捨てられ、あるいは丸められ、整数サンプル精度又はハーフサンプル（half-sample）精度などの小数サンプル精度のいずれかを有する値を生じさせることができる。例えば、ルマブロックについての３のＢＶｙ成分値は、対応するクロマブロックについての１．５のＢＶｙ成分値にスケール変更される。ＹＵＶ４：２：２フォーマットについて、ＢＶ値の水平成分が、２で除算され、切り捨てられ、あるいは丸められ、整数精度又はハーフサンプル位置精度などの小数サンプル精度のいずれかを有する値を生じさせることができる。ＢＶ値が小数サンプル精度を有するとき、再構成された値間における補間は、双一次補間、双三次補間、又は別の形式の補間を使用することができる。
【０２２０】
別法として、ＢＶ値は、ルマブロックと対応するクロマブロックとのための小数サンプル予測を有することができる。再びになるが、ＢＶ値が小数サンプル精度を有するとき、再構成されたサンプル値間における補間は、双一次補間、双三次補間、又は別の形式の補間を使用することができる。
【０２２１】
開示された発明の原理が適用され得る多くのとり得る実施形態の観点から、例示された実施形態は本発明の好適な例に過ぎず、本発明の範囲を限定するものと解されるべきでないことが認識されるべきである。むしろ、本発明の範囲は、別記の請求項によって定義される。したがって、これら請求項の範囲及び主旨内に入るすべてを本発明として主張する。
【図１】
0006719379.tif 000002
【図２ａ】
0006719379.tif 000003
【図２ｂ】
0006719379.tif 000004
【図３】
0006719379.tif 000005
【図４】
0006719379.tif 000006
【図５ａ】
0006719379.tif 000007
【図５ｂ】
0006719379.tif 000008
【図６】
0006719379.tif 000009
【図７】
0006719379.tif 000010
【図８】
0006719379.tif 000011
【図９】
0006719379.tif 000012
【図１０】
0006719379.tif 000013
【図１１】
0006719379.tif 000014
【図１２】
0006719379.tif 000015
【図１３】
0006719379.tif 000016
【図１４】
0006719379.tif 000017
【図１５】
0006719379.tif 000018
【図１６】
0006719379.tif 000019
【図１７】
0006719379.tif 000020
【図１８】
0006719379.tif 000021
【図１９】
0006719379.tif 000022
【図２０】
0006719379.tif 000023
【図２１】
0006719379.tif 000024
【図２２ａ】
0006719379.tif 000025
【図２２ｂ】
0006719379.tif 000026
【図２３】
0006719379.tif 000027
【図２４】
0006719379.tif 000028