(57)【要約】      （修正有）【課題】波面並列処理（「ＷＰＰ」）が使用可能にされるときのピクチャ内予測モードに対して強制される規則におけるイノベーションを提供する。【解決手段】ピクチャをエンコードすることは、エンコードされたデータを生成し、イントラブロックコピー予測について、ＷＰＰと一貫性のある１つ以上の制約を強制することを含み、１つ以上の制約は、参照領域から現在の領域までの水平変位値が、現在の領域から参照領域までの垂直変位値よりも小さいか等しいという制約を含む、エンコードステップと、エンコードされたデータをビットストリームの一部として出力するステップと、を実行する。【選択図】図１９
2019154067.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ実施方法において、
波面並列処理（ＷＰＰ）が可能な状態でピクチャをエンコードするエンコードステップであって、前記エンコードすることは、エンコードされたデータを生成し、イントラブロックコピー予測について、前記ＷＰＰと一貫性のある１つ以上の制約を強制することを含み、前記１つ以上の制約は、参照領域から現在の領域までの水平変位値が、前記現在の領域から前記参照領域までの垂直変位値よりも小さいか等しいという制約を含む、エンコードステップと、
前記エンコードされたデータをビットストリームの一部として出力するステップと、
を含む方法。
【請求項２】
コンピュータ実施方法において、
エンコードされたデータをビットストリームの一部として受信する受信ステップであって、前記エンコードされたデータは、イントラブロックコピー予測について、波面並列処理（ＷＰＰ）と一貫性のある１つ以上の制約を満たし、前記１つ以上の制約は、参照領域から現在の領域までの水平変位値が、前記現在の領域から前記参照領域までの垂直変位値よりも小さいか等しいという制約を含む、受信ステップと、
前記ＷＰＰが可能な状態で前記エンコードされたデータをデコードするステップであって、前記デコードすることはピクチャを再構成するステップと、
を含む方法。
【請求項３】
前記水平変位値は、前記参照領域の右端を含む符号化ツリーユニット（ＣＴＵ）列から前記現在の領域の左端を含むＣＴＵ列までの差を測定し、
前記垂直変位値は、前記現在の領域の上端を含むＣＴＵ行から前記参照領域の下端を含むＣＴＵ行までの差を測定する、
請求項１又は２に記載の方法。
【請求項４】
前記現在の領域は符号化ツリーユニット（ＣＴＵ）内の現在のブロックであり、前記エンコードすることは、
前記水平変位値を、（ｘ０＋ＢＶｘ＋ｗｂｌｏｃｋ−１）／Ｓ−ｘ０／Ｓとして計算することであって、ここでｘ０は、前記ＣＴＵ内の前記現在のブロックの水平位置であり、ＢＶｘは、イントラブロックコピー予測のベクトルの水平成分であり、ｗｂｌｏｃｋは、前記現在のブロックの幅であり、Ｓは前記ＣＴＵのサイズを示すことと、
前記垂直変位値を、ｙ０／Ｓ−（ｙ０＋ＢＶｙ＋ｈｂｌｏｃｋ−１）／Ｓとして計算することであって、ここでｙ０は、前記現在のブロックの垂直位置であり、ＢＶｙは、イントラブロックコピー予測の前記ベクトルの垂直成分であり、ｈｂｌｏｃｋは、前記現在のブロックの高さであることと、
を含む、請求項１又は２に記載の方法。
【請求項５】
前記イントラブロックコピー予測について、他の制約は、
（１）前記現在の領域の左上位置と前記参照領域の左上位置とが、妥当な場合に同じスライス内であり、妥当な場合に同じタイル内であることと、
（２）前記現在の領域の前記左上位置と前記参照領域の右下位置とが、妥当な場合に同じスライス内であり、妥当な場合に同じタイル内であることと、
（３）下記の３つの条件、すなわち、
（ａ）前記参照領域の下端を含む符号化ツリーユニット（ＣＴＵ）行が、前記現在の領域の上端を含むＣＴＵ行の上であること、
（ｂ）前記参照領域の前記下端を含む前記ＣＴＵ行が、前記現在の領域の前記上端を含む前記ＣＴＵ行に等しい場合、前記参照領域の右端を含むＣＴＵ列が、前記現在の領域の左端を含むＣＴＵ列の左であること、及び、
（ｃ）前記参照領域の前記下端を含む前記ＣＴＵ行が、前記現在の領域の前記上端を含む前記ＣＴＵ行に等しい場合、及び前記参照領域の前記右端を含む前記ＣＴＵ列が、前記現在の領域の前記左端を含む前記ＣＴＵ列に等しい場合に、前記参照領域の前記右下位置が、ｚスキャン順序において前記現在の領域の前記左上位置より早いこと、
のうち１つが満たされることと、
を含む、請求項１又は２に記載の方法。
【請求項６】
前記現在の領域は現在のブロックであり、前記参照領域は参照ブロックである、
請求項１乃至５のうちいずれか一項に記載の方法。
【請求項７】
前記ピクチャ内の前記現在のブロックについて、オフセット値が前記ピクチャ内の前記参照ブロックに対する変位を示し、前記参照ブロックは、事前に再構成されたサンプル値を含む、
請求項６に記載の方法。
【請求項８】
プログラムされたコンピューティングシステムに請求項１乃至７のいずれか一項に記載の方法を実行させるコンピュータ実行可能命令を記憶した、１つ以上のコンピュータ読取可能媒体。
【請求項９】
請求項１乃至７のいずれか一項に記載の方法を実行するように構成されたコンピューティングシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
エンジニアは、圧縮（ソースコーディング又はソースエンコーディングとも呼ばれる）を使用して、デジタルビデオのビットレートを低減する。圧縮は、情報をより低いビットレート形式へとコンバートすることによって、ビデオ情報の記憶及び伝送のコストを減少させる。伸張（デコーディングとも呼ばれる）は、元の情報のバージョンを圧縮形態から再構成する。「コーデック」は、エンコーダ／デコーダシステムである。
【０００２】
過去２５年間にわたり、ＩＴＵ−Ｔ  Ｈ．２６１、Ｈ．２６２（ＭＰＥＧ−２又はＩＳＯ／ＩＥＣ  １３８１８−２）、Ｈ．２６３及びＨ．２６４（ＭＰＥＧ−４  ＡＶＣ又はＩＳＯ／ＩＥＣ  １４４９６−１０）規格、ＭＰＥＧ−１（ＩＳＯ／ＩＥＣ  １１１７２−２）及びＭＰＥＧ−４  Ｖｉｓｕａｌ（ＩＳＯ／ＩＥＣ  １４４９６−２）規格、並びにＳＭＰＴＥ  ４２１Ｍ（ＶＣ−１）規格を含む、様々なビデオコーデック規格が適合されてきた。更に近年は、Ｈ．２６５／ＨＥＶＣ規格（ＩＴＵ−Ｔ  Ｈ．２６５又はＩＳＯ／ＩＥＣ  ２３００８−２）が認可されている。Ｈ．２６５／ＨＥＶＣ規格の拡張（例えば、スケーラブルビデオコーディング／デコーディング向け、サンプルビット深度若しくはクロマサンプリングレートに関する忠実度がより高いビデオのコーディング／デコーディング向け、画面キャプチャコンテンツ向け、又はマルチビューコーディング／デコーディング向け）が、現在開発途中である。ビデオコーデック規格は、典型的に、エンコードされたビデオビットストリームのシンタックスに関する選択肢を定義し、特定の特徴がエンコーディング及びデコーディングで使用されるときのビットストリーム内のパラメータを詳述する。多くの場合、ビデオコーデック規格は、デコーディングにおいて適合する結果を達成するのにデコーダが実施するべき、デコーディング動作に関する詳細をさらに提供する。コーデック規格の他に、独自の様々なコーデック形式が、エンコードされたビデオビットストリームのシンタックス及びそれに対応するデコーディング動作に関する他の選択肢を定義している。
【０００３】
波面並列処理（Wavefront  parallel  processing）（「ＷＰＰ」）は、Ｈ．２６５／ＨＥＶＣ規格におけるエンコーディング及びデコーディングに利用可能なツールである。ＷＰＰが使用可能にされると、ピクチャの一部分が、符号化ツリーユニット（「ＣＴＵ」）と呼ばれる特別なセクションの行へと分けられる。エンコーディング又はデコーディングの間、ＣＴＵの第１の行を、左から右へとＣＴＵ毎に処理することができる。ＣＴＵの第２の行の処理（エンコーディング又はデコーディング）は、ＣＴＵの第１の行の処理が完了するのを待つ必要はない。その代わりに、第１の行のＣＴＵのうちいくつかについて処理が完了した後、このことが第２の行の最初のＣＴＵを処理するときに使用される情報を提供し、第２の行の処理が始まることができる。同様に、第２の行のＣＴＵのうちいくつかについて処理が完了した後、ＣＴＵの第３の行の処理が始まることができる。ＷＰＰが、ＣＴＵの異なる行の並列処理を容易にする。異なるスレッド又は処理コアが、交互的な時間遅延の方式でＣＴＵの異なる行の処理を実施することができる。
【０００４】
イントラブロックコピー（「ＢＣ」）は、Ｈ．２６５／ＨＥＶＣの拡張に関して開発中の予測モードである。イントラＢＣ予測モードの場合、あるピクチャにおける現在のブロックのサンプル値が、同じピクチャにおける事前再構成されたサンプル値を使用して予測される。ブロックベクトル（「ＢＶ」）は、ピクチャの現在のブロックから参照ブロックへの変位を示し、参照ブロックは、予測に使用される事前再構成されたサンプル値を含む。ＢＶは、ビットストリームにおいて信号伝達される。イントラＢＣ予測はピクチャ内予測の一形式であり、ピクチャのブロックに対するイントラＢＣ予測は、同じピクチャにおけるサンプル値以外のいずれのサンプル値も使用しない。イントラストリングコピー（「ＳＣ」）モード及びイントララインコピー（「ＬＣ」）モードは、ピクチャ内予測モードの他の例であり、イントラＢＣモードと同様に、オフセット値を使用して、予測に使用される事前再構成されたサンプル値におけるある位置への変位を示す。パレット予測モードは、ピクチャ内予測モードの別の例であり、符号化ユニット（「ＣＵ」）などのセクション内の色を表すのに使用されるパレットを予測する。Ｈ．２６５／ＨＥＶＣ規格の拡張に関して現在明確にされているように、様々なピクチャ内予測モードが、ＷＰＰが使用可能にされるときに有効に使用されていない。
【発明の概要】
【０００５】
概して、詳細説明は、波面並列処理（「ＷＰＰ」）が使用可能にされるときのピクチャ内予測モードに対して強制される規則におけるイノベーションを提示する。ビットストリーム内のシンタックス要素が、ビデオシーケンス、ピクチャのセット、又はピクチャに対してＷＰＰが使用可能にされるか否かを示すことができる。イノベーションにより、ＷＰＰが使用可能にされるとき、エンコーダ又はデコーダによって、パレット予測モード、イントラブロックコピーモード、イントララインコピーモード、及びイントラストリングコピーモードなどのピクチャ内予測モードを使用することが容易になる。
【０００６】
本明細書に記載するイノベーションの１つの態様によれば、エンコーダは、ＷＰＰが使用可能な状態でピクチャをエンコードする。該エンコードは、エンコードされたデータを生成する。パレット符号化モードについて、エンコーダは、ピクチャの前のＷＰＰ行における前のユニットからの前のパレットデータを使用して、ピクチャの現在のＷＰＰ行における最初のユニットに対するパレットを予測する。エンコーダは、エンコードされたデータをビットストリームの一部として出力する。
【０００７】
対応するデコーダは、エンコードされたデータをビットストリームの一部として受信する。デコーダは、ＷＰＰが使用可能な状態で、エンコードされたデータをデコードする。該デコードは、ピクチャを再構成する。パレットデコーディングモードについて、デコーダは、ピクチャの前のＷＰＰ行における前のユニットからの前のパレットデータを使用して、ピクチャの現在のＷＰＰ行における最初のユニットに対するパレットを予測する。
【０００８】
本明細書に記載するイノベーションの別の態様によれば、エンコーダは、ＷＰＰが使用可能な状態でピクチャをエンコードする。該エンコードは、エンコードされたデータを生成する。イントラコピーモード（例えば、イントラブロックコピーモード、イントラストリングコピーモード、イントララインコピーモード）について、エンコーダは、ＷＰＰに起因する１つ以上の制約を強制する。エンコーダは、エンコードされたデータをビットストリームの一部として出力する。
【０００９】
対応するデコーダは、エンコードされたデータをビットストリームの一部として受信する。イントラコピーモード（例えば、イントラブロックコピーモード、イントラストリングコピーモード、イントララインコピーモード）について、エンコードされたデータは、ＷＰＰに起因する１つ以上の制約を満たす。デコーダは、ＷＰＰが使用可能な状態で、エンコードされたデータをデコードする。該デコードは、ピクチャを再構成する。
【００１０】
本イノベーションは、方法の一部として、方法を実施するように構成されたコンピューティングシステムの一部として、又はコンピューティングシステムに方法を実施させるコンピュータ実行可能命令を記憶する有形のコンピュータ読取可能媒体の一部として、実現することができる。様々なイノベーションを組み合わせて、又は別々に使用することができる。本概要は、詳細説明において更に後述する概念のうち選択されたものを簡素化した形式で紹介するために提供するものである。本概要は、請求する対象事項の重要な特徴又は必須の特徴を識別しようとするものではなく、請求する対象事項の範囲を限定するために使用しようとするものでもない。本発明の上記及び他の目的、特徴、並びに利点は、添付図面を参照して進む下記の詳細説明によって、より明白となるであろう。
【図面の簡単な説明】
【００１１】
【図１】記載するいくつかの実施形態を実現することができる、例示的なコンピューティングシステムを示す図である。
【図２ａ】記載するいくつかの実施形態を実現することができる、例示的なネットワーク環境を示す図である。
【図２ｂ】記載するいくつかの実施形態を実現することができる、例示的なネットワーク環境を示す図である。
【図３】記載するいくつかの実施形態を併せて実現することができる、例示的なエンコーダシステムを示す図である。
【図４】記載するいくつかの実施形態を併せて実現することができる、例示的なデコーダシステムを示す図である。
【図５ａ】記載するいくつかの実施形態を併せて実現することができる、例示的なビデオエンコーダを示す図である。
【図５ｂ】記載するいくつかの実施形態を併せて実現することができる、例示的なビデオエンコーダを示す図である。
【図６】記載するいくつかの実施形態を併せて実現することができる、例示的なビデオデコーダを示す図である。
【図７】ＷＰＰのタイミングを示す図である。
【図８】ＷＰＰが使用可能にされるときに予測に使用することができる再構成されたコンテンツを示す図である。
【図９】記載するいくつかの実施形態によるパレット予測の態様を示す図である。
【図１０】記載するいくつかの実施形態によるパレット予測の態様を示す図である。
【図１１】記載するいくつかの実施形態による、ＷＰＰが使用可能にされるときのパレット予測を用いたエンコードを示すフローチャートである。
【図１２】記載するいくつかの実施形態による、ＷＰＰが使用可能にされるときのパレット予測を用いたデコードを示すフローチャートである。
【図１３】ピクチャの現在のブロックに対するイントラブロックコピー予測の一例の態様を示す図である。
【図１４】ピクチャの現在のブロックに対するイントラブロックコピー予測の一例の態様を示す図である。
【図１５】イントララインコピー予測の一例の態様を示す図である。
【図１６】イントラストリングコピー予測の一例の態様を示す図である。
【図１７】ピクチャのユニットに関する例示的なｚスキャン順序を示す図である。
【図１８】記載するいくつかの実施形態による、ＷＰＰが使用可能にされるときのイントラコピーモードに関する参照領域の場所に対する制約の一例を示す図である。
【図１９】記載するいくつかの実施形態による、ＷＰＰが使用可能にされるときにイントラコピーモードに対して強制される規則を用いたエンコードを示すフローチャートである。
【図２０】記載するいくつかの実施形態による、ＷＰＰが使用可能にされるときにイントラコピーモードに対して強制される規則を用いたデコードを示すフローチャートである。
【発明を実施するための形態】
【００１２】
本詳細説明は、波面並列処理（wavefront  parallel  processing）（「ＷＰＰ」）が使用可能にされるときにピクチャ内（intra-picture）予測モードに対して強制される（enforced）規則におけるイノベーションを提示する。例えば、イノベーションの一部は、ＷＰＰが使用可能にされるときのパレットコーディング／デコーディングモードに対するパレットの予測に関する。他のイノベーションが、ＷＰＰが使用可能にされるとき、イントラコピーモード（イントラブロックコピーモード、イントララインコピーモード、又はイントラストリングコピーモード）の間に強制される制約に関する。本イノベーションは、ＷＰＰが使用可能にされるときのエンコーダ又はデコーダによるピクチャ内予測モードの使用を容易にする。
【００１３】
本明細書に記載する動作は、場合によっては、ビデオエンコーダ又はビデオデコーダによって実施されるものとして記載されるが、多くの場合、別のタイプのメディア処理ツール（例えば、画像エンコーダ又は画像デコーダ）によって動作を実施することができる。
【００１４】
本明細書に記載するイノベーションの一部は、Ｈ．２６５／ＨＥＶＣ規格の拡張に特有の用語を参照して例証される。例えば、Ｈ．２６５／ＨＥＶＣ規格の画面コンテンツコーディング／デコーディングの拡張の草案JCTVC-R1005、“High  Efficiency  Video  Coding(HEVC)  Screen  Content  Coding:  Draft  1”、JCTVC-R1005_v2、２０１４年８月が参照される。本明細書に記載するイノベーションは、他の規格又は方式に対して実現することもできる。
【００１５】
本明細書に記載するイノベーションの多くは、画面キャプチャコンテンツなど、特定の「人工的に作成された」ビデオコンテンツをエンコードするときのレートひずみ性能を改善することができる。一般に、画面キャプチャビデオ（画面コンテンツビデオとも呼ばれる）は、カメラでキャプチャされるビデオコンテンツのみとは対照的に、描画テキスト、コンピュータグラフィックス、アニメーション生成コンテンツ、又はコンピュータディスプレイに描画されるときにキャプチャされる他の類似タイプのコンテンツを含むビデオである。画面キャプチャコンテンツは、典型的に、繰返し構造（例えば、グラフィックス、テキスト文字）を含む。画面キャプチャコンテンツは、通常、高いクロマサンプリング分解能を有するフォーマット（例えば、ＹＵＶ４：４：４又はＲＧＢ４：４：４）でエンコードされるが、さらに、より低いクロマサンプリング分解能を有するフォーマット（例えば、ＹＵＶ４：２：０）でエンコードされてもよい。画面キャプチャコンテンツのエンコーディング／デコーディングに関する一般のシナリオとしては、リモートデスクトップ会議、並びに加工していない（natural）ビデオ又は他の「混合コンテンツ」ビデオに対するグラフィカルオーバーレイのエンコーディング／デコーディングが挙げられる。本明細書に記載するイノベーションのいくつかは、画面コンテンツビデオ又は他の人工的に作成されたビデオのエンコーディングに適合される。これらのイノベーションは加工していないビデオに使用することもできるが、同じように有効でないことがある。
【００１６】
より一般には、本明細書に記載する例に対する様々な代替例が可能である。例えば、本明細書に記載する方法のいくつかは、記載する方法動作の順序を変更すること、特定の方法動作を分割し、繰返し、又は省略することなどによって、変更することができる。開示する技術の様々な態様は、組み合わせて又は別々に使用することができる。異なる実施形態が、記載するイノベーションの１つ以上を使用する。本明細書に記載するイノベーションのいくつかは、背景技術の項で言及した課題の１つ以上に対処する。典型的に、所与の技術／ツールが、かかる課題の全てを解決するものではない。
【００１７】
Ｉ．例示的なコンピューティングシステム
図１は、記載するイノベーションのいくつかが実現されてもよい、適切なコンピューティングシステム（１００）の一般化した例を示している。イノベーションは種々の汎用又は専用コンピューティングシステムで実現されてもよいので、コンピューティングシステム（１００）は、使用又は機能性の範囲に関して何らかの限定を提案しようとするものではない。
【００１８】
図１を参照すると、コンピューティングシステム（１００）は、１つ以上の処理ユニット（１１０、１１５）とメモリ（１２０、１２５）とを含む。処理ユニット（１１０、１１５）はコンピュータ実行可能命令を実行する。処理ユニットは、汎用中央処理ユニット（「ＣＰＵ」）、特定用途向け集積回路（「ＡＳＩＣ」）内のプロセッサ、又は他の任意のタイプのプロセッサであることができる。マルチ処理システムでは、複数の処理ユニットがコンピュータ実行可能命令を実行して処理力を増加させる。例えば、図１は、中央処理ユニット（１１０）、並びにグラフィックス処理ユニット又はコプロセシングユニット（１１５）を示している。有形のメモリ（１２０、１２５）は、処理ユニットがアクセス可能な、揮発性メモリ（例えば、レジスタ、キャッシュ、ＲＡＭ）、不揮発性メモリ（例えば、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリなど）、又はその２つの何らかの組み合わせであってもよい。メモリ（１２０、１２５）は、ＷＰＰが使用可能にされるときにピクチャ内予測モードに対して強制される規則の１つ以上のイノベーションを実現するソフトウェア（１８０）を、処理ユニットが実行するのに適したコンピュータ実行可能命令の形式で記憶する。
【００１９】
コンピューティングシステムは追加の特徴を有してもよい。例えば、コンピューティングシステム（１００）は、記憶装置（１４０）と、１つ以上の入力装置（１５０）と、１つ以上の出力装置（１６０）と、１つ以上の通信接続（１７０）とを含む。バス、コントローラ、又はネットワークなどの相互接続メカニズム（図示なし）が、コンピューティングシステム（１００）のコンポーネントを相互接続する。典型的に、オペレーティングシステムソフトウェア（図示なし）が、コンピューティングシステム（１００）で実行される他のソフトウェアに対するオペレーティング環境を提供し、コンピューティングシステム（１００）のコンポーネントの活動を調整する。
【００２０】
有形の記憶装置（１４０）は、取外し可能又は取外し不能であってもよく、磁気ディスク、磁気テープ若しくはカセット、ＣＤ−ＲＯＭ、ＤＶＤ、又は情報を記憶するのに使用することができ、コンピューティングシステム（１００）内でアクセスすることができる、他の任意の媒体を含む。記憶装置（１４０）は、ＷＰＰが使用可能にされるときにピクチャ内予測モードに対して強制される規則の１つ以上のイノベーションを実現するソフトウェア（１８０）の命令を記憶する。
【００２１】
入力装置（１５０）は、キーボード、マウス、ペン、若しくはトラックボールなどのタッチ入力装置、音声入力装置、スキャニング装置、又はコンピューティングシステム（１００）に対する入力を提供する別の装置であってもよい。ビデオの場合、入力装置（１５０）は、カメラ、ビデオカード、テレビチューナーカード、画面キャプチャモジュール、又はビデオ入力をアナログ若しくはデジタル形式で受け入れる類似の装置、又はビデオ入力をコンピューティングシステム（１００）へと読み出すＣＤ−ＲＯＭ若しくはＣＤ−ＲＷであってもよい。出力装置（１６０）は、ディスプレイ、プリンタ、スピーカー、ＣＤライター、又はコンピューティングシステム（１００）からの出力を提供する別の装置であってもよい。
【００２２】
通信接続（１７０）は、通信媒体を通じて別のコンピューティングエンティティに対して通信するのを可能にする。通信媒体は、コンピュータ実行可能命令、音声若しくはビデオの入力又は出力、或いは変調データ信号の形式の他のデータなど、情報を搬送する。変調データ信号は、信号中の情報をエンコードするような形で設定又は変更された、その特性のうち１つ以上を有する信号である。例として、非限定的に、通信媒体は、電気、光、ＲＦ、又は他のキャリアを使用することができる。
【００２３】
本イノベーションは、コンピュータ読取可能媒体の一般的文脈で説明することができる。コンピュータ読取可能媒体は、コンピューティング環境内でアクセスすることができる、任意の利用可能な有形の媒体である。例として、非限定的に、コンピューティングシステム（１００）と共に、コンピュータ読取可能媒体は、メモリ（１２０、１２５）、記憶装置（１４０）、及び上述のいずれかの組み合わせを含む。
【００２４】
本イノベーションは、プログラムモジュールに含まれ、コンピューティングシステム内で対象の実在若しくは仮想プロセッサ上で実行されるものなど、コンピュータ実行可能命令の一般的文脈で説明することができる。一般に、プログラムモジュールは、特定のタスクを実施するか、又は特定の抽象データタイプを実現する、ルーチン、プログラム、ライブラリ、オブジェクト、クラス、コンポーネント、データ構造などを含む。プログラムモジュールの機能性は、様々な実施形態で所望に応じて、プログラムモジュール間で組み合わされるか又は分割されてもよい。プログラムモジュールのコンピュータ実行可能命令は、ローカル又は分散型コンピューティングシステム内で実行されてもよい。
【００２５】
「システム」及び「装置」という用語は、本明細書では交換可能に使用される。文脈による別段の明確な指示がない限り、どちらの用語もコンピューティングシステム又はコンピューティング装置のタイプに対する何らかの限定を示唆しない。一般に、コンピューティングシステム又はコンピューティング装置は、ローカル若しくは分散型であることができ、専用ハードウェア及び／又は汎用ハードウェアと、本明細書に記載の機能性を実現するソフトウェアとの任意の組み合わせを含むことができる。
【００２６】
記載する方法はまた、開示する方法のいずれかを実施するように構成された専用のコンピューティングハードウェアを使用して実現することができる。例えば、開示する方法は、開示する方法のいずれかを実現するように特別に設計若しくは構成された、集積回路（例えば、ＡＳＩＣデジタル信号プロセッサ（「ＤＳＰ」）などのＡＳＩＣ、グラフィックス処理ユニット（「ＧＰＵ」）、又はフィールドプログラマブルゲートアレイ（「ＦＰＧＡ」）などのプログラマブル論理装置（「ＰＬＤ」））によって実現することができる。
【００２７】
提示の目的で、本詳細説明は、「決定する」及び「使用する」のような用語を使用して、コンピューティングシステムにおけるコンピュータ動作について記載する。これらの用語は、コンピュータによって実施される動作に関する高次の抽象化であり、人間が行う行為と混同すべきでない。これらの用語に対応する実際のコンピュータ動作は実装に応じて変動する。
【００２８】
ＩＩ．例示的なネットワーク環境
図２ａ及び図２ｂは、ビデオエンコーダ（２２０）及びビデオデコーダ（２７０）を含む例示的なネットワーク環境（２０１、２０２）を示している。エンコーダ（２２０）及びデコーダ（２７０）は、適切な通信プロトコルを使用してネットワーク（２５０）を通じて接続される。ネットワーク（２５０）は、インターネット又は別のコンピュータネットワークを含むことができる。
【００２９】
図２ａに示されるネットワーク環境（２０１）では、各リアルタイム通信（「ＲＴＣ」）ツール（２１０）が、双方向通信のためにエンコーダ（２２０）及びデコーダ（２７０）の両方を含む。所与のエンコーダ（２２０）が、Ｈ．２６５／ＨＥＶＣ規格、ＳＭＰＴＥ  ４２１Ｍ規格、ＩＳＯ／ＩＥＣ  １４４９６−１０規格（Ｈ．２６４若しくはＡＶＣとしても知られる）、別の規格、又は独自のフォーマットの変形又は拡張に準拠した出力を生成することができ、対応するデコーダ（２７０）が、エンコードされたデータをエンコーダ（２２０）から受け入れる。双方向通信は、ビデオ会議、ビデオ電話コール、又は他の二者若しくは多数（multi-party）通信シナリオの一部であることができる。図２ａのネットワーク環境（２０１）は２つのリアルタイム通信ツール（２１０）を含むが、ネットワーク環境（２０１）はその代わりに、多数通信に関与する３つ以上のリアルタイム通信ツール（２１０）を含むことができる。
【００３０】
リアルタイム通信ツール（２１０）はエンコーダ（２２０）によるエンコーディングを管理する。図３は、リアルタイム通信ツール（２１０）に含むことができる例示的なエンコーダシステム（３００）を示している。或いは、リアルタイム通信ツール（２１０）は別のエンコーダシステムを使用する。リアルタイム通信ツール（２１０）はまた、デコーダ（２７０）によるデコーディングを管理する。図４は、リアルタイム通信ツール（２１０）に含むことができる例示的なデコーダシステム（４００）を示している。或いは、リアルタイム通信ツール（２１０）は別のデコーダシステムを使用する。
【００３１】
図２ｂに示されるネットワーク環境（２０２）では、エンコーディングツール（２１２）は、デコーダ（２７０）を含む複数の再生ツール（２１４）に配信するためにビデオをエンコードするエンコーダ（２２０）を含む。単方向通信は、ビデオ監視システム、ウェブカメラ監視システム、リモートデスクトップ会議プレゼンテーション、又はビデオがエンコードされ、１つの場所から他の１つ以上の場所に送られる他のシナリオのために提供することができる。図２ｂのネットワーク環境（２０２）は２つの再生ツール（２１４）を含むが、ネットワーク環境（２０２）は、より多数又はより少数の再生ツール（２１４）を含むことができる。一般に、再生ツール（２１４）は、エンコーディングツール（２１２）と通信して、再生ツール（２１４）が受信するビデオのストリームを決定する。再生ツール（２１４）は、ストリームを受信し、受信したエンコードされたデータを適切な期間の間バッファし、デコーディング及び再生を開始する。
【００３２】
図３は、エンコーディングツール（２１２）に含むことができる例示的なエンコーダシステム（３００）を示している。或いは、エンコーディングツール（２１２）は別のエンコーダシステムを使用する。エンコーディングツール（２１２）はまた、１つ以上の再生ツール（２１４）との接続を管理するためのサーバ側コントローラ論理を含むことができる。図４は、再生ツール（２１４）に含むことができる例示的なデコーダシステム（４００）を示している。或いは、再生ツール（２１４）は別のデコーダシステムを使用する。再生ツール（２１４）はまた、エンコーディングツール（２１２）との接続を管理するためのクライアント側コントローラ論理を含むことができる。
【００３３】
ＩＩＩ．例示的なエンコーダシステム
図３は、記載するいくつかの実施形態が併せて実現されてもよい、例示的なエンコーダシステム（３００）のブロック図である。エンコーダシステム（３００）は、リアルタイム通信向けの低レイテンシエンコーディングモード、トランスコーディングモード、ファイル若しくはストリームからの再生向けにメディアを生成するより高いレイテンシのエンコーディングモードなど、複数のエンコーディングモードのいずれかで動作することができる、汎用エンコーディングツールであることができ、又は１つのかかるエンコーディングモードに適合された専用エンコーディングツールであることができる。エンコーダシステム（３００）は、特定タイプのコンテンツ（例えば、画面キャプチャコンテンツ）のエンコーディングに適合させることができる。エンコーダシステム（３００）は、オペレーティングシステムモジュールの一部として、アプリケーションライブラリの一部として、スタンドアロン型アプリケーションの一部として、又は専用ハードウェアを使用して実現することができる。概して、エンコーダシステム（３００）は、ソースビデオピクチャ（３１１）のシーケンスをビデオソース（３１０）から受信し、エンコードされたデータをチャネル（３９０）に対する出力として生成する。チャネルに対して出力されるエンコードされたデータは、ＷＰＰが使用可能にされるときにピクチャ内予測モードに対して強制される規則を使用してエンコードされるコンテンツを含むことができる。
【００３４】
ビデオソース（３１０）は、カメラ、チューナーカード、記憶媒体、画面キャプチャモジュール、又は他のデジタルビデオソースであることができる。ビデオソース（３１０）は、ビデオピクチャのシーケンスを、例えば１秒当たり３０フレームのフレームレートで生成する。本明細書で使用するとき、「ピクチャ」という用語は一般に、ソースの符号化され又は再構成された画像データを指す。プログレッシブスキャンビデオの場合、ピクチャはプログレッシブスキャンビデオフレームである。インターレースビデオの場合、例示的な実施形態では、インターレースビデオフレームはエンコーディングの前にインターレース解除されてもよい。或いは、２つの補完的なインターレースビデオフィールドが、単一のビデオフレームとして一緒にエンコードされるか、又は２つの別個にエンコードされるフィールドとしてエンコードされる。プログレッシブスキャンビデオフレーム又はインターレーススキャンビデオフレームを示す他に、「ピクチャ」という用語は、単一の非ペアビデオフィールド、補完的なビデオフィールドのペア、所与の時間のビデオオブジェクトを表すビデオオブジェクトプレーン、又はより大きい画像の関心領域を示すことができる。ビデオオブジェクトプレーン又は領域は、シーンの複数のオブジェクト又は領域を含む、より大きい画像の一部であることができる。
【００３５】
到着するソースピクチャ（３１１）は、複数のピクチャバッファ記憶エリア（３２１、３２２、…、３２ｎ）を含むソースピクチャ一時メモリ記憶エリア（３２０）に記憶される。ピクチャバッファ（３２１、３２２など）は、１つのソースピクチャをソースピクチャ記憶エリア（３２０）で保持する。ソースピクチャ（３１１）の１つ以上がピクチャバッファ（３２１、３２２など）に記憶された後、ピクチャセレクタ（３３０）が個々のソースピクチャをソースピクチャ記憶エリア（３２０）から選択する。ピクチャが、エンコーダ（３４０）への入力のためにピクチャセレクタ（３３０）によって選択される順序は、ピクチャがビデオソース（３１０）によって生成される順序とは異なっていてもよく、例えば、いくつかのピクチャのエンコードの順序が遅らされて、いくつかの後のピクチャが最初にエンコードされることを可能にし、結果として時間的後方予測を容易にしてもよい。エンコーダ（３４０）の前に、エンコーダシステム（３００）は、エンコードする前に選択されたピクチャ（３１１）の前処理（例えば、フィルタリング）を実施するプリプロセッサ（図示なし）を含むことができる。前処理は、一次（例えば、ルマ）及び二次（例えば、赤色及び青色に向かうクロマ差）成分への色空間コンバージョン、並びにエンコーディングのためのリサンプリング処理（例えば、クロマ成分の空間分解能を低減する）を含むことができる。エンコードの前に、ビデオは、ＹＵＶなどの色空間にコンバートされてもよく、これにおいて、ルマ（Ｙ）成分のサンプル値が明るさ又は明度値を表し、クロマ（Ｕ、Ｖ）成分のサンプル値が色差値を表す。色差値の精密な定義（及びＹＵＶ色空間とＲＧＢなどの別の色空間との間でのコンバージョン動作）は、実装に依存する。一般に、本明細書で使用するとき、ＹＵＶという用語は、Ｙ’ＵＶ、ＹＩＱ、Ｙ’ＩＱ、及びＹＤｂＤｒ、並びにＹＣｂＣｒ及びＹＣｏＣｇなどの変形を含む、ルマ（又は、輝度）成分と１つ以上のクロマ（又は、クロミナンス）成分とを有する任意の色空間を示す。クロマサンプル値は、より低いクロマサンプリングレートへとサブサンプリングされてもよく（例えば、ＹＵＶ４：２：０フォーマットの場合）、又はクロマサンプル値は、ルマサンプル値と同じ分解能を有してもよい（例えば、ＹＵＶ４：４：４フォーマットの場合）。或いは、ビデオを別のフォーマット（例えば、ＲＧＢ４：４：４フォーマット、ＧＢＲ４：４：４フォーマット、又はＢＧＲ４：４：４フォーマット）でエンコードすることができる。特に、画面コンテンツビデオは、ＲＧＢ４：４：４フォーマット、ＧＢＲ４：４：４フォーマット、又はＢＧＲ４：４：４フォーマットでエンコードされてもよい。
【００３６】
エンコーダ（３４０）は、選択されたピクチャ（３３１）をエンコードして、符号化されたピクチャ（３４１）を生成し、また、メモリ管理制御動作（「ＭＭＣＯ」）信号（３４２）又は参照ピクチャセット（「ＲＰＳ」）情報を生成する。ＲＰＳは、現在ピクチャ又は任意の後続ピクチャに対する動き補償において参照のために使用されてもよい、ピクチャのセットである。現在ピクチャが、エンコードされている第１のピクチャでない場合、そのエンコーディング処理を実施するとき、エンコーダ（３４０）は、デコード済みピクチャ一時メモリ記憶エリア（３６０）に記憶されている１つ以上の事前にエンコードされ／デコードされたピクチャ（３６９）を使用してもよい。かかる記憶されているエンコードされたピクチャ（３６９）は、現在のソースピクチャ（３３１）のコンテンツをピクチャ間（inter-picture）予測するための参照ピクチャとして使用される。ＭＭＣＯ／ＲＰＳ情報（３４２）は、デコーダに対して、どの再構成されたピクチャが参照ピクチャとして使用されてもよく、従ってピクチャ記憶エリアに記憶されるべきであるかを示す。
【００３７】
一般に、エンコーダ（３４０）は、タイルへの区分化、ピクチャ内予測推定及び予測、動き推定及び補償、周波数変換、量子化、並びにエントロピー符号化などのエンコーディングタスクを実施する複数のエンコーディングモジュールを含む。エンコーダ（３４０）によって実施される正確な動作は、圧縮フォーマットに依存して変動し得る。出力されるエンコードされたデータのフォーマットは、Ｈ．２６５／ＨＥＶＣフォーマット、ウィンドウズ（登録商標）メディアビデオフォーマット、ＶＣ−１フォーマット、ＭＰＥＧ−ｘフォーマット（例えば、ＭＰＥＧ−１、ＭＰＥＧ−２、若しくはＭＰＥＧ−４）、Ｈ．２６ｘフォーマット（例えば、Ｈ．２６１、Ｈ．２６２、Ｈ．２６３、Ｈ．２６４）、又は別のフォーマットの変形若しくは拡張であり得る。
【００３８】
エンコーダ（３４０）は、ピクチャを同じサイズ又は異なるサイズの複数のタイルへと区分することができる。例えば、エンコーダ（３４０）は、ピクチャ境界と共にピクチャ内のタイルの水平及び垂直方向の境界を画成する、タイル行及びタイル列に沿ってピクチャを分割し、各タイルは長方形領域である。タイルは、並列処理に関する選択肢を提供するのに使用される場合が多い。ピクチャはまた、１つ以上のスライスとして編成することができ、スライスはピクチャ全体又はピクチャのセクションであることができる。スライスは、ピクチャ内の他のスライスとは独立してデコードすることができ、それによって誤り耐性が改善される。スライス又はタイルのコンテンツは、エンコーディング及びデコーディングの目的のため、サンプル値のブロック又は他のセットへと更に区分される。特定ブロックの行（例えば、Ｈ．２６５／ＨＥＶＣ規格に従ったスライスの符号化ツリーユニットの行）を、以下で更に説明するように、ＷＰＰを使用して並列してエンコードすることができる。
【００３９】
Ｈ．２６５／ＨＥＶＣ規格に従ったシンタックスの場合、エンコーダは、ピクチャ（又はスライス若しくはタイル）のコンテンツを符号化ツリーユニットへと分割する。符号化ツリーユニット（「ＣＴＵ」）は、ルマ符号化ツリーブロック（「ＣＴＢ」）として編成されるルマサンプル値と、それに対応する、２つのクロマＣＴＢとして編成されるクロマサンプル値とを含む。ＣＴＵ（及びそのＣＴＢ）のサイズはエンコーダによって選択される。ルマＣＴＢは、例えば、６４×６４、３２×３２、又は１６×１６のルマサンプル値を含むことができる。ＣＴＵは１つ以上の符号化ユニットを含む。符号化ユニット（「ＣＵ」）は、ルマ符号化ブロック（「ＣＢ」）及び２つの対応するクロマＣＢを有する。例えば、６４×６４ルマＣＴＢ及び２つの６４×６４クロマＣＴＢを有するＣＴＵ（ＹＵＶ４：４：４フォーマット）を、４つのＣＵへと分割することができ、各ＣＵは、３２×３２ルマＣＢ及び２つの３２×３２クロマＣＢを含み、各ＣＵは、場合によってはより小さいＣＵへと更に分割される。或いは、別の例として、６４×６４ルマＣＴＢ及び２つの３２×３２クロマＣＴＢを有するＣＴＵ（ＹＵＶ４：２：０フォーマット）を、４つのＣＵへと分割することができ、各ＣＵは、３２×３２ルマＣＢ及び２つの１６×１６クロマＣＢを含み、各ＣＵは、場合によってはより小さいＣＵへと更に分割される。ＣＵの最小許容可能サイズ（例えば、８×８、１６×１６）がビットストリーム内で信号伝達されることができる。
【００４０】
一般に、ＣＵはインター又はイントラなどの予測モードを有する。ＣＵは、予測情報（予測モード詳細、変位値など）の信号伝達、及び／又は予測処理の目的で、１つ以上の予測ユニットを含む。予測ユニット（「ＰＵ」）は、ルマ予測ブロック（「ＰＢ」）及び２つのクロマＰＢを有する。Ｈ．２６５／ＨＥＶＣ規格に従って、イントラ予測されるＣＵの場合、ＣＵが最小サイズ（例えば、８×８）を有さない限り、ＰＵはＣＵと同じサイズを有する。その場合、ＣＵは４つのより小さいＰＵへと分割することができ（例えば、ピクチャ内予測での最小ＣＵサイズが８×８の場合、それぞれ４×４）、又はＰＵは、ＣＵのシンタックス要素によって示されるように、最小ＣＵサイズを有することができる。しかしながら、イントラＢＣ予測で使用される対称又は非対称区分化の場合、より大きいＣＵを複数のＰＵへと分割することができる。
【００４１】
ＣＵは、残差のコーディング／デコーディングを目的とする１つ以上の変換ユニットをさらに有し、その場合、変換ユニット（「ＴＵ」）はルマ変換ブロック（「ＴＢ」）及び２つのクロマＴＢを有する。イントラ予測ＣＵのＰＵは、単一のＴＵ（ＰＵにサイズが等しい）又は複数のＴＵを含んでもよい。エンコーダは、ビデオをどのようにして、ＣＴＵ、ＣＵ、ＰＵ、ＴＵなどへと区分するかを決める。
【００４２】
Ｈ．２６５／ＨＥＶＣの実装では、スライスは、単一のスライスセグメント（独立スライスセグメント）を含むことができ、又は複数のスライスセグメント（独立スライスセグメント及び１つ以上の従属スライスセグメント）へと分けることができる。スライスセグメントは、タイルスキャンにおいて連続して順序付けられた整数のＣＴＵであり、単一のネットワーク抽象化レイヤ（「ＮＡＬ」）ユニットに含まれる。独立スライスセグメントの場合、スライスセグメントヘッダが、独立スライスセグメントに該当するシンタックス要素の値を含む。従属スライスセグメントの場合、切り詰められたスライスセグメントヘッダが、その従属スライスセグメントに該当するシンタックス要素のいくつかの値を含み、従属スライスセグメントに対する他のシンタックス要素の値は、デコーディング順序において前の独立スライスセグメントの値から推論される。
【００４３】
本明細書で使用するとき、「ブロック」という用語は、文脈に応じて、マクロブロック、残差データユニット、ＣＢ、ＰＢ、若しくはＴＢ、又は他の何らかのサンプル値のセットを示すことができる。「ユニット」という用語は、文脈に応じて、マクロブロック、ＣＴＵ、ＣＵ、ＰＵ、ＴＵ、又は他の何らかのブロックのセットを示すことができ、或いは単一のブロックを示すことができる。
【００４４】
図３に戻ると、エンコーダは、ソースピクチャ（３３１）のイントラ符号化されたブロック、ライン、又はストリングを、そのピクチャ（３３１）における他の事前に再構成されたサンプル値からの予測という観点で表す。イントラコピー予測の場合、ピクチャ内推定器が、現在のブロック、ライン、又はストリングから、他の事前に再構成されたサンプル値における位置への変位を推定する。ピクチャ内のサンプル値の参照ブロック、ライン、又はストリングが、現在のブロック、ライン、又はストリングに対する予測値を作り出すのに使用される。例えば、イントラブロックコピー（「ＢＣ」）予測の場合、ピクチャ内推定器が、現在のブロックから、ピクチャ内の事前に再構成されたサンプル値におけるある位置への変位を推定する。参照ブロックが、現在のブロックに対するＢＣ予測値を提供する、ピクチャ内のサンプル値のブロックである。参照ブロックは、ブロックベクトル（「ＢＶ」）値（ＢＶ推定で決定される）で示すことができる。別の例として、イントララインコピー（「ＬＣ」）予測の場合、ピクチャ内推定器が、（現在のブロックの）現在のラインから、ピクチャ内の事前に再構成されたサンプル値におけるある位置への変位を推定する。参照ラインが、現在のラインに対するＬＣ予測値を提供する、ピクチャ内のサンプル値のラインである。参照ラインは、現在のラインから参照ラインへの変位を示すオフセット値で示すことができる。別の例として、イントラストリングコピー（「ＳＣ」）予測の場合、ピクチャ内推定器が、（現在のブロックの）現在のストリングから、ピクチャ内の事前に再構成されたサンプル値におけるある位置への変位を推定する。参照ストリングが、現在のストリングに対するＳＣ予測値を作り出すのに使用される、ピクチャ内の一連のサンプル値である。参照ストリングは、オフセット値（現在のストリングから参照ストリングへの変位を示す）、及びストリング長さ値で示すことができる。実装に依存して、エンコーダは、入力されたサンプル値又は再構成されたサンプル値（同じピクチャの事前にエンコードされたサンプル値）を使用して、ブロック、ライン、又はストリングのオフセット推定を実施することができる。ＷＰＰが使用可能にされると、ピクチャ内推定器は、後述するように、参照領域の場所に対する制約と整合する変位（例えば、イントラＢＣ予測のＢＶ値に対して、又はイントラＳＣ予測若しくはイントラＬＣ予測のオフセット値に対して）を決定することができる。
【００４５】
ブロックに対するイントラ空間予測の場合、ピクチャ内推定器は、隣接する再構成されたサンプル値のブロックへの補外を推定する。
【００４６】
ピクチャ内推定器は、予測情報（イントラＢＣ予測に対するＢＶ値、イントラＬＣ予測若しくはイントラＳＣ予測に対するオフセット値、又はイントラ空間予測に対する予測モード（方向））を出力することができ、これはエントロピー符号化される。ピクチャ内予測予測器が、予測情報を適用してイントラ予測値を決定する。
【００４７】
パレット符号化モード（palette  coding  mode）の場合、エンコーダ（３４０）は、ＣＵ、又はパレットを使用する他のユニットの、サンプル値の少なくとも一部を表現する。パレットは、ユニットで使用される色を表す。例えば、パレットは、インデックス値０、１、２、…、ｐを対応する色に対してマッピングする。ユニットをエンコードする間、適切なインデックス値が、ユニット内の位置におけるサンプル値に取って代わる（replace）。ユニット内のレア値は、パレットのインデックス値を使用する代わりに、エスケープコード値及びリテラル値を使用してエンコードすることができる。パレットはユニット毎に変更することができ、パレットを指定する情報はビットストリーム内で信号伝達することができる。
【００４８】
エンコーダ（３４０）は、参照ピクチャからの予測という点で、ソースピクチャ（３３１）のピクチャ間符号化された予測ブロックを表す。動き推定器が、１つ以上の参照ピクチャ（３６９）に対するブロックの動きを推定する。複数の参照ピクチャが使用される場合、複数の参照ピクチャは、異なる時間方向又は同じ時間方向からのものであり得る。動き補償された予測参照領域が、現在ピクチャのサンプル値のブロックに対して動き補償された予測値を作り出すのに使用される、参照ピクチャ内のサンプル値の領域である。動き推定器は、動きベクトル（「ＭＶ」）情報などの動き情報を出力し、これはエントロピー符号化される。動き補償器は、ＭＶを参照ピクチャ（３６９）に適用して、ピクチャ間予測に対する動き補償された予測値を決定する。
【００４９】
エンコーダは、ブロックの予測値（イントラ又はインター）と対応する元の値との間の差（ある場合）を決定することができる。これらの予測残差値は、周波数変換（周波数変換がスキップされない場合）、量子化、及びエントロピーエンコーディングを使用して更にエンコードされる。例えば、エンコーダ（３４０）は、ピクチャ、タイル、スライス、及び／又はビデオの他の部分に対する量子化パラメータ（「ＱＰ」）の値を設定し、変換係数を適宜量子化する。エンコーダ（３４０）のエントロピー符号器は、量子化された変換係数値、並びに特定のサイド情報（例えば、ＭＶ情報、ＢＶ情報、ＱＰ値、モード判断、パラメータ選択）を圧縮する。典型的なエントロピー符号化技術としては、指数ゴロム符号化、ゴロムライス符号化、算術符号化、差分符号化、ハフマン符号化、ランレングス符号化、可変長対可変長（「Ｖ２Ｖ」）符号化、可変長対固定長（「Ｖ２Ｆ」）符号化、レンペルジブ（「ＬＺ」）符号化、辞書符号化、確率区間区分エントロピー符号化（「ＰＩＰＥ」）、及び上記の組み合わせが挙げられる。エントロピー符号器は、異なる種類の情報に対して異なる符号化技術を使用することができ、複数の技術を組み合わせて適用することができ（例えば、ゴロムライス符号化の後に算術符号化を適用することによる）、特定の符号化技術内の複数のコードテーブルの中から選ぶことができる。いくつかの実装では、周波数変換はスキップすることができる。この場合、予測残差値を量子化しエントロピー符号化することができる。パレット符号化モードが使用される場合、エントロピー符号器はパレットデータをエンコードすることができる。エンコーダ（３４０）は、後述するようにパレット予測を使用することができる。
【００５０】
適応デブロッキングフィルタが、エンコーダ（３４０）の動き補償ループ内に含まれて（即ち、「インループ」フィルタリング）、デコードされたピクチャにおけるブロック境界の行及び／又は列にわたる不連続性を平滑化する。その代わりに、又はそれに加えて、他のフィルタリング（デリンギングフィルタリング、適応ループフィルタリング（「ＡＬＦ」）、又はサンプル適応オフセット（「ＳＡＯ」）フィルタリングなど、図示なし）を、インループフィルタリング動作として適用することができる。
【００５１】
エンコーダ（３４０）によって生成されるエンコードされたデータは、ビットストリームシンタックスの様々なレイヤに対するシンタックス要素を含む。Ｈ．２６５／ＨＥＶＣ規格に従ったシンタックスの場合、例えば、ピクチャパラメータセット（「ＰＰＳ」）が、ピクチャに関連付けられてもよいシンタックス要素を含むシンタックス構造である。ＰＰＳは単一のピクチャに使用することができ、又はＰＰＳは、シーケンス内の複数ピクチャに対して再使用することができる。ＰＰＳは、典型的に、ピクチャに対するエンコードされたデータとは別個で信号伝達される（例えば、ＰＰＳに対する１つのネットワーク抽象化レイヤ（「ＮＡＬ」）ユニット、及びピクチャのエンコードされたデータに対する１つ以上の他のＮＡＬユニット）。ピクチャのエンコードされたデータ内において、シンタックス要素が、どのＰＰＳをピクチャに使用するかを示す。同様に、Ｈ．２６５／ＨＥＶＣ規格に従ったシンタックスの場合、シーケンスパラメータセット（「ＳＰＳ」）が、ピクチャのシーケンスに関連付けられてもよいシンタックス要素を含むシンタックス構造である。ビットストリームは単一のＳＰＳ又は複数のＳＰＳを含むことができる。ＳＰＳは、典型的に、シーケンスに対する他のデータとは別個で信号伝達され、他のデータ内のシンタックス要素が、どのＳＰＳを使用するかを示す。
【００５２】
符号化されたピクチャ（３４１）及びＭＭＣＯ／ＲＰＳ情報（３４２）（又は、ピクチャに対する依存関係及び順序構造がエンコーダ（３４０）で既に知られていることによる、ＭＭＣＯ／ＲＰＳ情報（３４２）と等価の情報）は、デコーディング処理エミュレータ（３５０）によって処理される。デコーディング処理エミュレータ（３５０）は、デコーダの機能性の一部、例えば、参照ピクチャを再構成するデコーディングタスクを実現する。ＭＭＣＯ／ＲＰＳ情報（３４２）と整合する仕方で、デコーディング処理エミュレータ（３５０）は、エンコードされる後続ピクチャのピクチャ間予測における参照ピクチャとして使用するために、所与の符号化されたピクチャ（３４１）が再構成され記憶される必要があるか否かを決定する。符号化されたピクチャ（３４１）が記憶される必要がある場合、デコーディング処理エミュレータ（３５０）は、符号化されたピクチャ（３４１）を受信し、対応するデコードされたピクチャ（３５１）を生成するデコーダによって行われるであろうデコーディング処理を、モデル化する。それを行う際、エンコーダ（３４０）が、デコード済みピクチャ記憶エリア（３６０）に記憶されているデコードされたピクチャ（３６９）を使用している場合、デコーディング処理エミュレータ（３５０）は、記憶エリア（３６０）からのデコードされたピクチャ（３６９）をデコーディング処理の一部としてさらに使用する。
【００５３】
デコード済みピクチャ一時メモリ記憶エリア（３６０）は、複数のピクチャバッファ記憶エリア（３６１、３６２、…、３６ｎ）を含む。ＭＭＣＯ／ＲＰＳ情報（３４２）と整合する仕方で、デコーディング処理エミュレータ（３５０）は、記憶エリア（３６０）のコンテンツを管理して、エンコーダ（３４０）による参照ピクチャとしての使用にもはや必要とされないピクチャを有する任意のピクチャバッファ（３６１、３６２など）を識別する。デコーディング処理のモデル化の後、デコーディング処理エミュレータ（３５０）は、このようにして識別されたピクチャバッファ（３６１、３６２など）に、新たにデコードされたピクチャ（３５１）を記憶する。
【００５４】
符号化されたピクチャ（３４１）及びＭＭＣＯ／ＲＰＳ情報（３４２）は、一時符号化済みデータエリア（３７０）にバッファされる。符号化済みデータエリア（３７０）に集約される符号化されたデータは、基本の符号化されたビデオビットストリームのシンタックスの一部として、１つ以上のピクチャに対するエンコードされたデータを含む。符号化済みデータエリア（３７０）に集約される符号化されたデータは、符号化されたビデオデータに関連するメディアメタデータを（例えば、１つ以上の付加拡張情報（「ＳＥＩ」）メッセージ又はビデオユーザビリティ情報（「ＶＵＩ」）メッセージにおける１つ以上のパラメータとして）さらに含むことができる。
【００５５】
一時符号化済みデータエリア（３７０）からの集約されたデータ（３７１）は、チャネルエンコーダ（３８０）によって処理される。チャネルエンコーダ（３８０）は、集約されたデータを伝送又は記憶のためにメディアストリームとして（例えば、ＩＴＵ−Ｔ  Ｈ．２２２．０｜ＩＳＯ／ＩＥＣ  １３８１８−１などのメディアプログラムストリーム若しくはトランスポートストリームフォーマット、又はＩＥＴＦ  ＲＦＣ  ３５５０などのインターネットリアルタイムトランスポートプロトコルフォーマットに従って）パケット化及び／又は多重化することができ、その場合、チャネルエンコーダ（３８０）は、シンタックス要素をメディア伝送ストリームのシンタックスの一部として追加することができる。或いは、チャネルエンコーダ（３８０）は、集約されたデータをファイルとしての記憶のために（例えば、ＩＳＯ／ＩＥＣ  １４４９６−１２などのメディアコンテナフォーマットに従って）編成することができ、その場合、チャネルエンコーダ（３８０）は、シンタックス要素をメディア記憶ファイルのシンタックスの一部として追加することができる。或いは、より一般には、チャネルエンコーダ（３８０）は、１つ以上のメディアシステム多重化プロトコル又はトランスポートプロトコルを実現することができ、その場合、チャネルエンコーダ（３８０）は、シンタックス要素をプロトコルのシンタックスの一部として追加することができる。チャネルエンコーダ（３８０）は、チャネル（３９０）に対する出力を提供し、該チャネルは、記憶装置、通信接続、又は出力のための別のチャネルを表す。チャネルエンコーダ（３８０）又はチャネル（３９０）は、例えば、前方誤り訂正（「ＦＥＣ」）エンコーディング及びアナログ信号変調のための、他の要素（図示なし）をさらに含んでもよい。
【００５６】
ＩＶ．例示的なデコーダシステム
図４は、記載するいくつかの実施形態が併せて実現されてもよい、例示的なデコーダシステム（４００）のブロック図である。デコーダシステム（４００）は、リアルタイム通信向けの低レイテンシデコーディングモード、及びファイル若しくはストリームからのメディア再生向けのより高いレイテンシのデコーディングモードなど、複数のデコーディングモードのいずれかで動作することができる、汎用デコーディングツールであることができ、又は１つのかかるデコーディングモードに適合された専用デコーディングツールであることができる。デコーダシステム（４００）は、オペレーティングシステムモジュールの一部として、アプリケーションライブラリの一部として、スタンドアロン型アプリケーションの一部として、又は専用ハードウェアを使用して実現することができる。概して、デコーダシステム（４００）は、符号化されたデータをチャネル（４１０）から受信し、再構成されたピクチャを出力先（４９０）に対する出力として生成する。受信するエンコードされたデータは、ＷＰＰが使用可能にされるときにピクチャ内予測モードに対して強制される規則を使用してエンコードされたコンテンツを含むことができる。
【００５７】
デコーダシステム（４００）は、チャネル（４１０）を含み、該チャネルは、記憶装置、通信接続、又は入力としての符号化されたデータに対する別のチャネルを表すことができる。チャネル（４１０）は、チャネル符号化されている符号化されたデータを生成する。チャネルデコーダ（４２０）は、符号化されたデータを処理することができる。例えば、チャネルデコーダ（４２０）は、（例えば、ＩＴＵ−Ｔ  Ｈ．２２２．０｜ＩＳＯ／ＩＥＣ  １３８１８−１などのメディアプログラムストリーム若しくはトランスポートストリームフォーマット、又はＩＥＴＦ  ＲＦＣ  ３５５０などのインターネットリアルタイムトランスポートプロトコルフォーマットに従って）伝送又は記憶のためにメディアストリームとして集約されているデータをパケット化解除し（de-packetizes）及び／又は多重分離し（demultiplexes）、その場合、チャネルデコーダ（４２０）は、メディア伝送ストリームのシンタックスの一部として追加されたシンタックス要素を構文解析する（parse）ことができる。或いは、チャネルデコーダ（４２０）は、（例えば、ＩＳＯ／ＩＥＣ  １１４９６−１２などのメディアコンテナフォーマットに従って）記憶のためにファイルとして集約されている符号化されたビデオデータを分離し、その場合、チャネルデコーダ（４２０）は、メディア記憶ファイルのシンタックスの一部として追加されたシンタックス要素を構文解析することができる。或いは、より一般には、チャネルデコーダ（４２０）は、１つ以上のメディアシステム多重分離プロトコル又はトランスポートプロトコルを実現することができ、その場合、チャネルデコーダ（４２０）は、プロトコルのシンタックスの一部として追加されたシンタックス要素を構文解析することができる。チャネル（４１０）又はチャネルデコーダ（４２０）は、例えば、ＦＥＣデコーディング及びアナログ信号変調のための、他の要素（図示なし）をさらに含んでもよい。
【００５８】
チャネルデコーダ（４２０）から出力される符号化されたデータ（４２１）は、十分な量のかかるデータが受信されるまで、一時符号化済みデータエリア（４３０）に記憶される。符号化されたデータ（４２１）は、符号化されたピクチャ（４３１）及びＭＭＣＯ／ＲＰＳ情報（４３２）を含む。符号化済みデータエリア（４３０）の符号化されたデータ（４２１）は、基本の符号化されたビデオビットストリームのシンタックスの一部として、１つ以上のピクチャに対する符号化されたデータを含む。符号化済みデータエリア（４３０）の符号化されたデータ（４２１）は、エンコードされたビデオデータに関連するメディアメタデータを（例えば、１つ以上のＳＥＩメッセージ又はＶＵＩメッセージにおける１つ以上のパラメータとして）さらに含むことができる。
【００５９】
一般に、符号化済みデータエリア（４３０）は、符号化されたデータ（４２１）がデコーダ（４５０）によって使用されるまで、かかる符号化されたデータ（４２１）を一時的に記憶する。その時点で、符号化されたピクチャ（４３１）及びＭＭＣＯ／ＲＰＳ情報（４３２）に対する符号化されたデータは、符号化済みデータエリア（４３０）からデコーダ（４５０）に転送される。デコーディングが続くにつれて、新しい符号化されたデータが符号化済みデータエリア（４３０）に追加され、符号化済みデータエリア（４３０）に残っている最も古い符号化されたデータがデコーダ（４５０）に転送される。
【００６０】
デコーダ（４５０）は、符号化されたピクチャ（４３１）をデコードして、対応するデコードされたピクチャ（４５１）を生成する。ピクチャは、同じサイズ又は異なるサイズの複数のタイルへと区分することができる。ピクチャはまた、１つ以上のスライスとして編成することができる。スライス又はタイルのコンテンツは、サンプル値のブロック又は他のセットへと更に区分することができる。ＷＰＰが使用可能な状態で（ＷＰＰを使用して、或いはデコーディングの間ＷＰＰを使用するのと整合した仕方で）ピクチャがエンコードされた場合、更に後述するように、特定ブロックの行（例えば、Ｈ．２６５／ＨＥＶＣ規格に従ったＣＴＵの行）を、ＷＰＰを使用して並列してデコードすることができる。
【００６１】
必要に応じて、デコーダ（４５０）は、そのデコード処理を実施しているとき、１つ以上の事前にデコードされたピクチャ（４６９）をピクチャ間予測の参照ピクチャとして使用してもよい。デコーダ（４５０）は、かかる事前にデコードされたピクチャ（４６９）を、デコード済みピクチャ一時メモリ記憶エリア（４６０）から読み出す。一般に、デコーダ（４５０）は、エントロピーデコーディング、ピクチャ内予測、動き補償されたピクチャ間予測、逆量子化、逆周波数変換（スキップしない場合）、及びタイルのマージなどのデコーディングタスクを実施する、複数のデコーディングモジュールを含む。デコーダ（４５０）によって実施される正確な動作は、圧縮フォーマットに依存して変動し得る。
【００６２】
例えば、デコーダ（４５０）は、圧縮されたピクチャ又はピクチャのシーケンスに対するエンコードされたデータを受信し、デコードされたピクチャ（４５１）を含む出力を生成する。デコーダ（４５０）では、バッファが、圧縮されたピクチャに対するエンコードされたデータを受信し、適時に、受信したエンコードされたデータをエントロピーデコーダに対して利用可能にする。エントロピーデコーダは、エントロピー符号化された量子化されたデータ並びにエントロピー符号化されたサイド情報をエントロピーデコードし、典型的に、エンコーダで実施されるエントロピーエンコーディングの逆を適用する。パレットデコーディングモード（palette  decoding  mode）が使用される場合、エントロピーデコーダはパレットデータをデコードすることができる。デコーダ（４５０）は、後述するようにパレット予測を使用することができる。
【００６３】
動き補償器が、動き情報を１つ以上の参照ピクチャに適用して、再構成されているピクチャの任意のインター符号化されたブロックに対して動き補償された予測値を形成する。ピクチャ内予測モジュールが、隣接する事前再構成されたサンプル値から、現在のブロックのサンプル値を空間予測することができる。或いは、イントラＢＣ予測、イントラＬＣ予測、又はイントラＳＣ予測の場合、ピクチャ内予測モジュールは、変位値で示されるピクチャの参照ブロック、ライン、又はストリングの事前に再構成されたサンプル値を使用して、現在のブロック、ライン、又はストリングのサンプル値を予測することができる。具体的には、参照ブロック／ライン／ストリングは、ＢＶ値（イントラＢＣ予測の場合）、オフセット値（イントラＬＣ予測の場合）、又はオフセット値及びストリング長さ値（イントラＳＣ予測の場合）を用いて示すことができる。ＷＰＰが使用可能にされると、変位（例えば、イントラＢＣ予測のＢＶ値に対して、又はイントラＳＣ予測若しくはイントラＬＣ予測のオフセット値に対して）は、後述するように、参照領域の場所に対する制約と整合する。
【００６４】
デコーダ（４５０）はさらに、予測残差値を再構成する。逆量子化器が、エントロピーデコードされたデータを逆量子化する。例えば、デコーダ（４５０）は、ビットストリーム内のシンタックス要素に基づいて、ピクチャ、タイル、スライス、及び／又はビデオの他の部分に対するＱＰの値を設定し、変換係数を適宜逆量子化する。逆周波数変換器が、量子化された周波数ドメインデータを空間ドメインデータへとコンバートする。いくつかの実装では、周波数変換をスキップすることができ、その場合、逆周波数変換もスキップされる。その場合、予測残差値をエントロピーデコードし、逆量子化することができる。ピクチャ間予測されたブロックに対して、デコーダ（４５０）は、再構成した予測残差値を動き補償された予測値と組み合わせる。デコーダ（４５０）は、同様に、予測残差値をピクチャ内予測からの予測値と組み合わせることができる。
【００６５】
パレットデコーディングモードの場合、デコーダ（４５０）は、ＣＵ又は他のユニットのサンプル値の少なくとも一部を表すパレットを使用する。パレットは、インデックス値を対応する色に対してマッピングする。デコーディングの間、ユニット内の位置に関して、パレットからのインデックス値が適切なサンプル値で置き換えられる（replaced）。ユニットのエスケープ符号化値が、エスケープコード値及びリテラル値を使用してデコードされることができる。パレットはユニット毎に変更することができ、パレットを指定する情報はビットストリーム内で信号伝達することができる。
【００６６】
適応デブロッキングフィルタが、ビデオデコーダ（４５０）の動き補償ループ内に含まれて、デコードされたピクチャ（４５１）におけるブロック境界の行及び／又は列にわたる不連続性を平滑化する。その代わりに、又はそれに加えて、他のフィルタリング（デリンギングフィルタリング、ＡＬＦ、又はＳＡＯフィルタリングなど、図示なし）を、インループフィルタリング動作として適用することができる。
【００６７】
デコード済みピクチャ一時メモリ記憶エリア（４６０）は、複数のピクチャバッファ記憶エリア（４６１、４６２、…、４６ｎ）を含む。デコード済みピクチャ記憶エリア（４６０）は、デコード済みピクチャバッファの一例である。デコーダ（４５０）は、ＭＭＣＯ／ＲＰＳ情報（４３２）を使用して、デコードされたピクチャ（４５１）を記憶することができるピクチャバッファ（４６１、４６２など）を識別する。デコーダ（４５０）は、デコードされたピクチャ（４５１）を上記ピクチャバッファに記憶する。
【００６８】
出力シーケンサ（４８０）は、出力順序で生成される次のピクチャがデコード済みピクチャ記憶エリア（４６０）においていつ利用可能であるかを識別する。出力順序で生成される次のピクチャ（４８１）がデコード済みピクチャ記憶エリア（４６０）で利用可能になると、出力シーケンサ（４８０）によって読み出され、出力先（４９０）（例えば、ディスプレイ）に出力される。一般に、出力シーケンサ（４８０）によってピクチャがデコード済みピクチャ記憶エリア（４６０）から出力される順序は、ピクチャがデコーダ（４５０）によってデコードされる順序とは異なってもよい。
【００６９】
Ｖ．例示的なビデオエンコーダ
図５ａ及び図５ｂは、記載するいくつかの実施形態が併せて実現されてもよい、一般化されたビデオエンコーダ（５００）のブロック図である。エンコーダ（５００）は、現在ピクチャを含むビデオピクチャのシーケンスを入力ビデオ信号（５０５）として受信し、出力として符号化されたビデオビットストリーム（５９５）におけるエンコードされたデータを生成する。
【００７０】
エンコーダ（５００）はブロックベースであり、実装に依存するブロックフォーマットを使用する。ブロックは、異なる段階で、例えば予測、周波数変換、及び／又はエントロピーエンコーディングの段階で、更に細分されてもよい。例えば、ピクチャを、６４×６４ブロック、３２×３２ブロック、又は１６×１６ブロックに分けることができ、それを次に、コーディング及びデコーディングのため、サンプル値のより小さいブロックに分けることができる。Ｈ．２６５／ＨＥＶＣ規格に対するエンコーディングの実装では、エンコーダは、ピクチャをＣＴＵ（ＣＴＢ）、ＣＵ（ＣＢ）、ＰＵ（ＰＢ）、及びＴＵ（ＴＢ）へと区分する。
【００７１】
エンコーダ（５００）は、ピクチャ内符号化及び／又はピクチャ間符号化を使用してピクチャを圧縮する。エンコーダ（５００）のコンポーネントの多くは、ピクチャ内符号化及びピクチャ間符号化の両方に使用される。それらのコンポーネントによって実施される正確な動作は、圧縮される情報のタイプに依存して変動し得る。
【００７２】
タイル化モジュール（５１０）が、場合により、ピクチャを同じサイズ又は異なるサイズの複数のタイルへと区分する。例えば、タイル化モジュール（５１０）は、ピクチャ境界と共にピクチャ内のタイルの水平及び垂直方向の境界を画成する、タイル行及びタイル列に沿ってピクチャを分割し、各タイルは長方形領域である。Ｈ．２６５／ＨＥＶＣの実装では、エンコーダ（５００）は、ピクチャを１つ以上のスライスへと区分し、各スライスは１つ以上のスライスセグメントを含む。特定ブロックの行（例えば、Ｈ．２６５／ＨＥＶＣ規格に従ったスライスのＣＴＵの行）が、より詳細に後述するように、ＷＰＰを使用して並列してエンコードされることができる。
【００７３】
一般エンコーディング制御（５２０）が、入力ビデオ信号（５０５）に対するピクチャ、並びにエンコーダ（５００）の様々なモジュールからのフィードバック（図示なし）を受信する。概して、一般エンコーディング制御（５２０）は、制御信号（図示なし）を他のモジュール（タイル化モジュール（５１０）、変換器／スケーラ／量子化器（５３０）、スケーラ／逆変換器（５３５）、ピクチャ内推定器（５４０）、動き推定器（５５０）、及びイントラ／インタースイッチなど）に提供して、エンコーディングの間の符号化パラメータを設定し、変更する。特に、一般エンコーディング制御（５２０）は、エンコードする間、パレット予測、イントラＢＣ予測、イントラＬＣ予測、及びイントラＳＣ予測を使用するか否か、またどのように使用するかを判断することができる。一般エンコーディング制御（５２０）はまた、エンコーディングの間の中間結果を評価して、例えば、レートひずみ解析を実施することができる。一般エンコーディング制御（５２０）は、エンコーディングの間に行われた判断を示す一般制御データ（５２２）を生成し、そのため、対応するデコーダが整合した判断を行うことができる。一般制御データ（５２２）は、ヘッダフォーマッタ／エントロピー符号器（５９０）に提供される。
【００７４】
現在ピクチャがピクチャ間予測を使用して予測される場合、動き推定器（５５０）が、１つ以上の参照ピクチャに対する入力ビデオ信号（５０５）の現在ピクチャのサンプル値のブロックの動きを推定する。デコード済みピクチャバッファ（５７０）が、参照ピクチャとして使用するため、１つ以上の再構成された事前符号化されたピクチャをバッファする。複数の参照ピクチャが使用される場合、複数の参照ピクチャは、異なる時間方向又は同じ時間方向からのものであり得る。動き推定器（５５０）は、サイド情報として、ＭＶデータ、マージモードインデックス値、及び参照ピクチャ選択データなどの動きデータ（５５２）を生成する。動きデータ（５５２）は、ヘッダフォーマッタ／エントロピー符号器（５９０）、並びに動き補償器（５５５）に提供される。
【００７５】
動き補償器（５５５）は、ＭＶを、デコード済みピクチャバッファ（５７０）からの再構成された参照ピクチャに適用する。動き補償器（５５５）は、現在ピクチャに対する動き補償された予測を生成する。
【００７６】
エンコーダ（５００）内の別個の経路において、ピクチャ内推定器（５４０）は、入力ビデオ信号（５０５）の現在ピクチャのサンプル値のブロックに対して、ピクチャ内予測をどのように実施するかを決定する。現在ピクチャは、ピクチャ内符号化を使用して、全体的又は部分的に符号化することができる。現在ピクチャの再構成（５３８）の値を使用して、イントラ空間予測に関して、ピクチャ内推定器（５４０）は、現在ピクチャの隣接する事前再構成されたサンプル値から、現在ピクチャの現在のブロックのサンプル値をどのように空間予測するかを決定する。
【００７７】
或いは、イントラコピー予測の場合、ピクチャ内推定器（５４０）は、現在のブロック、ライン、又はストリングから、他の事前に再構成されたサンプル値における位置への変位を推定する。ピクチャにおけるサンプル値の参照ブロック、ライン、又はストリングが、現在のブロック、ライン、又はストリングに対する予測値を作り出すのに使用される。例えば、イントラＢＣ予測の場合、ピクチャ内推定器（５４０）は、ＢＶ値を用いて示すことができる、現在のブロックから参照ブロックへの変位を推定する。別の例として、イントラＬＣ予測の場合、ピクチャ内推定器（５４０）は、（現在のラインから参照ラインへの変位を示す）オフセット値を用いて示すことができる、（現在のブロックの）現在のラインから参照ラインへの変位を推定する。別の例として、イントラＳＣ予測の場合、ピクチャ内推定器は、（現在のストリングから参照ストリングへの変位を示す）オフセット値とストリング長さ値とを用いて示すことができる、（現在のブロックの）現在のストリングから参照ストリングへの変位を推定する。ＷＰＰが使用可能にされると、ピクチャ内推定器（５４０）は、後述するように、参照領域の場所に対する制約と整合する、（例えば、イントラＢＣ予測におけるＢＶ値の場合、又はイントラＳＣ予測若しくはイントラＬＣ予測におけるオフセット値の場合の）変位を決定することができる。
【００７８】
実装に応じて、ピクチャ内推定器（５４０）は、入力サンプル値、インループフィルタリング前の再構成されたサンプル値、又はインループフィルタリング後の再構成されたサンプル値を使用して、現在のブロック、ライン、又はストリングに対するオフセット推定を実施することができる。一般に、オフセット推定に対する入力サンプル値又はフィルタされていない再構成されたサンプル値を使用することによって、ピクチャ内推定器（５４０）は、（オフセット推定／イントラコピー予測の前に、参照ブロック、ライン、ストリングなどの再構成されたサンプル値をフィルタリングすることから生じることがある）連続処理のボトルネックを回避することができる。他方で、フィルタされていない再構成されたサンプル値の記憶には追加のメモリを使用する。また、オフセット推定の前にインループフィルタリングが適用される場合、現在のブロック／ライン／ストリングがデコードされた後で適用されるフィルタリング処理と、オフセット推定／イントラコピー予測に使用されている領域との間で重なり合う影響領域があり得る。かかる事例では、オフセット推定／イントラコピー予測は、フィルタリング動作のその局面の前に適用されることになる。いくつかの実装では、エンコーダは、オフセット推定／イントラコピー予測の前にいくつかのインループフィルタリング動作を適用し、後の処理段階で追加の又は代替のフィルタリングを実施することができる。
【００７９】
ピクチャ内推定器（５４０）は、サイド情報としてイントラ予測データ（５４２）を生成し、該データは、例えば、イントラ予測が空間予測、イントラＢＣ予測、イントラＬＣ予測、又はイントラＳＣ予測を使用するかどうか、予測モード方向（イントラ空間予測の場合）、ＢＶ値（イントラＢＣ予測の場合）、オフセット値（イントラＬＣ予測の場合）、又はオフセット値及び長さ値（イントラＳＣ予測の場合）を示す情報などである。イントラ予測データ（５４２）は、ヘッダフォーマッタ／エントロピー符号器（５９０）、並びにピクチャ内予測器（５４５）に提供される。
【００８０】
イントラ予測データ（５４２）に従って、ピクチャ内予測器（５４５）は、現在ピクチャの現在のブロックのサンプル値を、現在ピクチャの隣接する事前再構成されたサンプル値から空間予測する。或いは、イントラコピー予測の場合、ピクチャ内予測器（５４５）は、現在のブロック、ライン、ストリングなどに対する変位（ＢＶ値、オフセット値など）によって示される、参照ブロック、ライン、ストリング、又は他のセクションの事前に再構成されたサンプル値を使用して、現在のブロック、ライン、ストリング、又は他のセクションのサンプル値を予測する。いくつかの事例では、ＢＶ値（又は他のオフセット値）は予測値であることができる。他の事例では、ＢＶ値（又は他のオフセット値）はその予測値とは異なることができ、その場合、差分は予測値とＢＶ値（又は他のオフセット値）との差を示す。イントラＳＣモードの場合、ピクチャ内予測器（５４５）は、現在のストリングのサンプル値を予測するとき、ストリング長さ値をさらに使用する。
【００８１】
パレット符号化モードの場合、エンコーダ（５００）は、パレットを使用してＣＵ又は他のユニットのサンプル値の少なくとも一部を表す。パレットは、ユニットで使用される色を表す。例えば、パレットは、インデックス値０、１、２、…、ｐを対応する色に対してマッピングし、対応する色は、ＲＧＢ４：４：４フォーマット、ＢＧＲ４：４：４フォーマット、ＧＢＲ４：４：４フォーマット、ＹＵＶ４：４：４フォーマット、又は別のフォーマット（色空間、色サンプリングレート）であることができる。インデックス値が、ピクセルに対するＲＧＢトリプレット、ＢＧＲトリプレット、又はＧＢＲトリプレットを表すことができ、ピクセルは、コロケートされたサンプル値のセットである。ユニットのエンコーディングの場合、インデックス値が、ユニット内のピクセルのサンプル値に取って代わる。ユニットのレア値が、パレットのインデックス値を使用する代わりに、エスケープコード値及びリテラル値を使用してエンコードされることができる。パレットはユニット毎に変更することができ、パレットを指定するパレットデータはビットストリーム内で信号伝達することができる。
【００８２】
イントラ／インタースイッチは、所与のブロックに対する予測（５５８）が動き補償された予測になるか又はピクチャ内予測になるかを選択する。
【００８３】
いくつかの例示的な実装では、パレット符号化モード又はイントラコピーモード（イントラＢＣ予測、イントラＬＣ予測、若しくはイントラＳＣ予測）でエンコードされるユニットに対して残差が算出されない。その代わりに、残差符号化はスキップされ、予測されたサンプル値が再構成されたサンプル値として使用される。
【００８４】
残差符号化がスキップされない場合、予測（５５８）のブロックと、それに対応する、入力ビデオ信号（５０５）の元の現在ピクチャの一部との間の差（ある場合）によって、残差（５１８）の値が提供される。現在ピクチャの再構成の間、残差値がエンコードされ／信号伝達されていると、再構成された残差値が予測（５５８）と組み合わされて、ビデオ信号（５０５）からの元のコンテンツの近似的又は正確な再構成（５３８）が生成される（不可逆圧縮では、一部の情報がビデオ信号（５０５）から失われる）。
【００８５】
残差符号化の一部として、変換器／スケーラ／量子化器（５３０）において、周波数変換がスキップされない場合、周波数変換器が、空間ドメインビデオ情報を周波数ドメイン（即ち、スペクトルの、変換）データへとコンバートする。ブロックベースのビデオ符号化の場合、周波数変換器は、離散コサイン変換（「ＤＣＴ」）、その整数近似、又は別のタイプの前方ブロック変換（例えば、離散サイン変換若しくはその整数近似）を、予測残差データ（又は予測（５５８）がヌルの場合のサンプル値データ）のブロックに適用して、周波数変換係数のブロックを生成する。変換器／スケーラ／量子化器（５３０）は、可変ブロックサイズの変換を適用することができる。この場合、変換器／スケーラ／量子化器（５３０）は、どのブロックサイズの変換を現在のブロックの残差値に使用するかを決定することができる。スケーラ／量子化器は、変換係数をスケーリングし（scales）、量子化する。例えば、量子化器は、デッドゾーンスケーラ量子化を、ピクチャ毎の基準、タイル毎の基準、スライス毎の基準、ブロック毎の基準、周波数特異的な基準、又は他の基準で変動する量子化ステップサイズで、周波数ドメインデータに適用する。量子化された変換係数データ（５３２）が、ヘッダフォーマッタ／エントロピー符号器（５９０）に提供される。周波数変換がスキップされる場合、スケーラ／量子化器は、予測残差データ（又は予測（５５８）がヌルの場合のサンプル値データ）のブロックをスケーリングし、量子化して、ヘッダフォーマッタ／エントロピー符号器（５９０）に提供される量子化された値を生成することができる。
【００８６】
残差値を再構成するため、スケーラ／逆変換器（５３５）では、スケーラ／逆量子化器が、量子化された変換係数に対して逆スケーリング及び逆量子化を実施する。変換段階がスキップされていない場合、逆周波数変換器が逆周波数変換を実施して、再構成された予測残差値又はサンプル値のブロックを生成する。変換段階がスキップされている場合、逆周波数変換もスキップされる。この場合、スケーラ／逆量子化器は、予測残差データ（又はサンプル値データ）のブロックに対して逆スケーリング及び逆量子化を実施して、再構成された値を生成することができる。残差値がエンコードされ／信号伝達されている場合、エンコーダ（５００）は、再構成された残差値を予測（５５８）の値（例えば、動き補償された予測値、ピクチャ内予測値）と組み合わせて、再構成（５３８）を形成する。残差値がエンコードされ／信号伝達されていない場合、エンコーダ（５００）は予測（５５８）の値を再構成（５３８）として使用する。
【００８７】
ピクチャ内予測の場合、再構成（５３８）の値を、ピクチャ内推定器（５４０）及びピクチャ内予測器（５４５）にフィードバックすることができる。再構成（５３８）の値を、後続ピクチャの動き補償された予測に使用することができる。再構成（５３８）の値を更にフィルタリングすることができる。フィルタリング制御（５６０）が、ビデオ信号（５０５）の所与のピクチャに関して、再構成（５３８）の値に対するデブロックフィルタリング及びＳＡＯフィルタリングをどのように実施するかを決定する。フィルタリング制御（５６０）はフィルタ制御データ（５６２）を生成し、それがヘッダフォーマッタ／エントロピー符号器（５９０）及びマージ器／フィルタ（５６５）に提供される。
【００８８】
マージ器／フィルタ（５６５）では、エンコーダ（５００）は、異なるタイルからのコンテンツを、ピクチャの再構成されたバージョンにマージする。エンコーダ（５００）は、フィルタ制御データ（５６２）及びフィルタ適応の規則に従って、デブロックフィルタリング及びＳＡＯフィルタリングを選択的に実施して、ピクチャの境界にわたる不連続性を適応的に平滑化する。その代わりに、又はそれに加えて、他のフィルタリング（デリンギングフィルタリング又はＡＬＦなど、図示なし）を適用することができる。タイル境界は、エンコーダ（５００）の設定に依存して、選択的にフィルタリングされるか又は全くフィルタリングされないことが可能であり、エンコーダ（５００）は、符号化されたビットストリーム内にシンタックス要素を提供して、かかるフィルタリングが適用されたか否かを示してもよい。デコード済みピクチャバッファ（５７０）は、後続の動き補償された予測で使用するため、再構成された現在ピクチャをバッファする。
【００８９】
ヘッダフォーマッタ／エントロピー符号器（５９０）は、一般制御データ（５２２）、量子化された変換係数データ（５３２）、イントラ予測データ（５４２）、動きデータ（５５２）、及びフィルタ制御データ（５６２）をフォーマットし及び／又はエントロピー符号化する。動きデータ（５５２）の場合、ヘッダフォーマッタ／エントロピー符号器（５９０）はマージモードインデックス値を選択し、エントロピー符号化することができ、又は、デフォルトＭＶ予測子が使用されることができる。場合によっては、ヘッダフォーマッタ／エントロピー符号器（５９０）はまた、（ＭＶ値のＭＶ予測子に対する）ＭＶ値のＭＶ差分を決定し、次いで、例えばコンテキスト適応バイナリ算術符号化を使用して、ＭＶ差分をエントロピー符号化する。イントラ予測データ（５４２）の場合、予測を使用してＢＶ値（又は他のオフセット値）をエンコードすることができる。予測は、デフォルト予測子（例えば、１つ以上の隣接ブロックからのＢＶ値若しくは他のオフセット値）を使用することができる。複数の予測子が可能な場合、予測子インデックスが、複数の予測子のうちどれをＢＶ値（又は他のオフセット値）の予測に使用するかを示すことができる。ヘッダフォーマッタ／エントロピー符号器（５９０）は（イントラコピー予測に対する）予測子インデックス値を選択し、エントロピー符号化することができ、又は、デフォルト予測子が使用されることができる。場合によっては、ヘッダフォーマッタ／エントロピー符号器（５９０）はまた、（ＢＶ値若しくは他のオフセット値の予測子に対する）差分を決定し、次いで、例えばコンテキスト適応バイナリ算術符号化を使用して、差分をエントロピー符号化する。パレット符号化モードの場合、ヘッダフォーマッタ／エントロピー符号器（５９０）はパレットデータをエンコードすることができる。特に、ヘッダフォーマッタ／エントロピー符号器（５９０）は、後述するようにパレット予測を使用することができる。
【００９０】
ヘッダフォーマッタ／エントロピー符号器（５９０）は、符号化されたビデオビットストリーム（５９５）におけるエンコードされたデータを提供する。符号化されたビデオビットストリーム（５９５）のフォーマットは、Ｈ．２６５／ＨＥＶＣフォーマット、ウィンドウズ（登録商標）メディアビデオフォーマット、ＶＣ−１フォーマット、ＭＰＥＧ−ｘフォーマット（例えば、ＭＰＥＧ−１、ＭＰＥＧ−２、若しくはＭＰＥＧ−４）、Ｈ．２６ｘフォーマット（例えば、Ｈ．２６１、Ｈ．２６２、Ｈ．２６３、Ｈ．２６４）、又は別のフォーマットの変形若しくは拡張であり得る。
【００９１】
実装及び所望される圧縮のタイプに応じて、エンコーダ（５００）のモジュールを追加し、省略し、複数のモジュールへと分割し、他のモジュールと組み合わせ、かつ／あるいは同様のモジュールと置き換えることができる。代替実施形態では、異なるモジュール及び／又はモジュールの他の構成を有するエンコーダが、記載する技術の１つ以上を実施する。エンコーダの具体的な実施形態は、典型的に、エンコーダ（５００）の変形又は補足されたバージョンを使用する。エンコーダ（５００）内のモジュール間の図示される関係は、エンコーダ内の情報の一般的なフローを示し、他の関係は、簡潔さのために図示されない。
【００９２】
ＶＩ．例示的なビデオデコーダ
図６は、記載するいくつかの実施形態が併せて実現されてもよい、一般化されたデコーダ（６００）のブロック図である。デコーダ（６００）は、符号化されたビデオビットストリーム（６０５）におけるエンコードされたデータを受信し、再構成されたビデオ（６９５）のピクチャを含む出力を生成する。符号化されたビデオビットストリーム（６０５）のフォーマットは、Ｈ．２６５／ＨＥＶＣフォーマット、ウィンドウズ（登録商標）メディアビデオフォーマット、ＶＣ−１フォーマット、ＭＰＥＧ−ｘフォーマット（例えば、ＭＰＥＧ−１、ＭＰＥＧ−２、若しくはＭＰＥＧ−４）、Ｈ．２６ｘフォーマット（例えば、Ｈ．２６１、Ｈ．２６２、Ｈ．２６３、Ｈ．２６４）、又は別のフォーマットの変形若しくは拡張であり得る。
【００９３】
ピクチャは、同じサイズ又は異なるサイズの複数のタイルとして編成することができる。ピクチャはまた、１つ以上のスライスとして編成することができる。スライス又はタイルのコンテンツは、サンプル値のブロック又は他のセットとして更に編成することができる。デコーダ（６００）はブロックベースであり、実装に依存するブロックフォーマットを使用する。ブロックは、異なる段階で更に細分されてもよい。例えば、ピクチャを、６４×６４ブロック、３２×３２ブロック、又は１６×１６ブロックへと分けることができ、それを次に、サンプル値のより小さいブロックへと分けることができる。Ｈ．２６５／ＨＥＶＣ規格に対するデコーディングの実装では、ピクチャは、ＣＴＵ（ＣＴＢ）、ＣＵ（ＣＢ）、ＰＵ（ＰＢ）、及びＴＵ（ＴＢ）へと区分される。ＷＰＰが使用可能な状態で（ＷＰＰを使用して、又はデコーディングの間ＷＰＰを使用するのと整合した仕方で）ピクチャがエンコードされた場合、更に後述するように、特定ブロックの行（例えば、Ｈ．２６５／ＨＥＶＣ規格に従ったＣＴＵの行）を、ＷＰＰを使用して並列してデコードすることができる。
【００９４】
デコーダ（６００）は、ピクチャ内デコーディング及び／又はピクチャ間デコーディングを使用してピクチャを伸張する。デコーダ（６００）のコンポーネントの多くは、ピクチャ内デコーディング及びピクチャ間デコーディングの両方に使用される。それらのコンポーネントによって実施される正確な動作は、伸張される情報のタイプに依存して変動し得る。
【００９５】
バッファは、符号化されたビデオビットストリーム（６０５）におけるエンコードされたデータを受信し、受信したエンコードされたデータをパーサー／エントロピーデコーダ（６１０）に対して利用可能にする。パーサー／エントロピーデコーダ（６１０）は、エントロピー符号化されたデータをエントロピーデコードして、典型的に、エンコーダ（５００）で実施したエントロピー符号化の逆を適用する（例えば、コンテキスト適応バイナリ算術デコーディング）。構文解析及びエントロピーデコーディングの結果として、パーサー／エントロピーデコーダ（６１０）は、一般制御データ（６２２）、量子化された変換係数データ（６３２）、イントラ予測データ（６４２）、動きデータ（６５２）、及びフィルタ制御データ（６６２）を生成する。イントラ予測データ（６４２）では、予測子インデックス値が信号伝達される場合、パーサー／エントロピーデコーダ（６１０）は、例えばコンテキスト適応バイナリ算術デコーディングを使用して、予測子インデックス値をエントロピーデコードすることができる。場合によっては、パーサー／エントロピーデコーダ（６１０）はまた、ＢＶ値又は他のオフセット値に対する差分を（例えば、コンテキスト適応バイナリ算術デコーディングを使用して）エントロピーデコードし、次いで、差分を対応する予測子と組み合わせて、ＢＶ値（又は他のオフセット値）を再構成する。他の事例では、差分はビットストリームから省略され、ＢＶ値（又は他のオフセット値）は単に予測子である（例えば、予測子インデックス値を用いて示される）。パレットデコーディングモードの場合、パーサー／エントロピーデコーダ（６１０）はパレットデータをデコードすることができる。特に、パーサー／エントロピーデコーダ（６１０）は、後述するようにパレット予測を使用することができる。
【００９６】
一般デコーディング制御（６２０）は、一般制御データ（６２２）を受信し、制御信号（図示なし）を他のモジュール（スケーラ／逆変換器（６３５）、ピクチャ内予測器（６４５）、動き補償器（６５５）、及びイントラ／インタースイッチなど）に提供して、デコーディングの間にデコーディングパラメータを設定し、変更する。
【００９７】
現在ピクチャがピクチャ間予測を使用して予測される場合、動き補償器（６５５）は、ＭＶデータ、参照ピクチャ選択データ、及びマージモードインデックス値などの動きデータ（６５２）を受信する。動き補償器（６５５）は、ＭＶを、デコード済みピクチャバッファ（６７０）からの再構成された参照ピクチャに適用する。動き補償器（６５５）は、現在ピクチャのインター符号化されたブロックに対する動き補償された予測を生成する。デコード済みピクチャバッファ（６７０）は、参照ピクチャとして使用する、１つ以上の事前に再構成されたピクチャを記憶する。
【００９８】
デコーダ（６００）内の別個の経路において、ピクチャ内予測器（６４５）はイントラ予測データ（６４２）を受信し、該データは、例えば、ピクチャ内予測が空間予測、イントラＢＣ予測、イントラＬＣ予測、又はイントラＳＣ予測を使用するかどうか、並びに予測モード方向（イントラ空間予測の場合）、ＢＶ値（イントラＢＣ予測の場合）、オフセット値（イントラＬＣ予測の場合）、又はオフセット値及び長さ値（イントラＳＣ予測の場合）を示す情報などである。イントラ空間予測の場合、現在ピクチャの再構成（６３８）の値を使用して、予測モードデータに従って、ピクチャ内予測器（６４５）は、現在ピクチャの隣接する事前再構成されたサンプル値から、現在ピクチャの現在のブロックのサンプル値を空間予測する。或いは、イントラコピー予測の場合、ピクチャ内予測器（６４５）は、現在のブロック、ライン、ストリングなどの変位（ＢＶ値、オフセット値など）によって示される、参照ブロック、ライン、ストリング、又は他のセクションの事前に再構成されたサンプル値を使用して、現在のブロック、ライン、ストリング、又は他のセクションのサンプル値を予測する。場合によっては、ＢＶ値（又は他のオフセット値）は予測値であることができる。他の事例では、ＢＶ値（又は他のオフセット値）はその予測値とは異なることができ、その場合、ＢＶ値（又は他のオフセット値）は差分及び予測値を使用して再構成される。イントラＳＣモードの場合、ピクチャ内予測器（６４５）は、現在のストリングのサンプル値を予測するときにストリング長さ値をさらに使用する。
【００９９】
パレットデコーディングモードの場合、デコーダ（６００）は、ＣＵ又は他のユニットのサンプル値の少なくとも一部を表すパレットを使用する。パレットは、インデックス値をユニットで使用される対応する色に対してマッピングする。例えば、パレットは、インデックス値０、１、２、…、ｐを対応する色に対してマッピングし、対応する色は、ＲＧＢ４：４：４フォーマット、ＢＧＲ４：４：４フォーマット、ＧＢＲ４：４：４フォーマット、ＹＵＶ４：４：４フォーマット、又は別のフォーマット（色空間、色サンプリングレート）であることができる。インデックス値は、ピクセルに対するＲＧＢトリプレット、ＢＧＲトリプレット、又はＧＢＲトリプレットを表すことができる。デコードする間、ユニット内の位置に関して、パレットからのインデックス値が適切なサンプリング値で置き換えられる。ユニットのエスケープ符号化値が、エスケープコード値及びリテラル値を使用してデコードされることができる。パレットは、ビットストリーム内で信号伝達されるパレットデータに基づいて、ユニット毎に変更することができる。
【０１００】
イントラ／インタースイッチは、所与のブロックに対する予測（６５８）として使用される、動き補償された予測又はピクチャ内予測の値を選択する。例えば、Ｈ．２６５／ＨＥＶＣシンタックスに従う場合、イントラ／インタースイッチは、イントラ予測されたＣＵ及びインター予測されたＣＵを含むことができるピクチャのＣＵに対してエンコードされたシンタックス要素に基づいて制御することができる。残差値がエンコードされ／信号伝達されている場合、デコーダ（６００）は、予測（６５８）を再構成された残差値と組み合わせて、ビデオ信号からのコンテンツの再構成（６３８）を生成する。残差値がエンコードされ／信号伝達されていない場合、デコーダ（６００）は、予測（６５８）の値を再構成（６３８）として使用する。
【０１０１】
残差値がエンコードされ／信号伝達されている場合の残差を再構成するために、スケーラ／逆変換器（６３５）は、量子化された変換係数データ（６３２）を受信し、処理する。スケーラ／逆変換器（６３５）では、スケーラ／逆量子化器は、量子化された変換係数に対して逆スケーリング及び逆量子化を実施する。逆周波数変換器は、逆周波数変換を実施して、再構成された予測残差値又はサンプル値のブロックを生成する。例えば、逆周波数変換器は、逆ブロック変換を周波数変換係数に適用して、サンプル値データ又は予測残差データを生成する。逆周波数変換は、逆ＤＣＴ、その整数近似、又は別のタイプの逆周波数変換（例えば、逆離散サイン変換又はその整数近似）であることができる。周波数変換がエンコーディングの間にスキップされた場合、逆周波数変換もスキップされる。この場合、スケーラ／逆量子化器は、予測残差データ（又はサンプル値データ）のブロックに対して逆スケーリング及び逆量子化を実施して、再構成された値を生成することができる。
【０１０２】
ピクチャ内予測の場合、再構成（６３８）の値をピクチャ内予測器（６４５）にフィードバックすることができる。ピクチャ間予測の場合、再構成（６３８）の値を更にフィルタリングすることができる。マージ器／フィルタ（６６５）では、デコーダ（６００）は、異なるタイルからのコンテンツを、ピクチャの再構成されたバージョンへマージする。デコーダ（６００）は、フィルタ制御データ（６６２）及びフィルタ適応の規則に従って、デブロックフィルタリング及びＳＡＯフィルタリングを選択的に実施して、ピクチャの境界にわたる不連続性を適応的に平滑化する。その代わりに、又はそれに加えて、他のフィルタリング（デリンギングフィルタリング又はＡＬＦなど、図示なし）を適用することができる。タイル境界は、デコーダ（６００）の設定、又はエンコードされたビットストリームデータ内のシンタックス要素に依存して、選択的にフィルタリングするか又は全くフィルタリングしないことが可能である。デコード済みピクチャバッファ（６７０）は、後続の動き補償された予測で使用するため、再構成された現在ピクチャをバッファする。
【０１０３】
デコーダ（６００）は、後処理フィルタをさらに含むことができる。後処理フィルタ（６０８）は、デブロックフィルタリング、デリンギングフィルタリング、適応ウィナーフィルタリング、フィルム粒子再現フィルタリング、ＳＡＯフィルタリング、又は別の種類のフィルタリングを含むことができる。「インループ」フィルタリングは、動き補償ループ内のピクチャの再構成されたサンプル値に対して実施され、従って参照ピクチャのサンプル値に影響するが、後処理フィルタ（６０８）は、表示のために出力する前に、動き補償ループ外の再構成されたサンプル値に適用される。
【０１０４】
実装及び所望される伸張のタイプに依存して、デコーダ（６００）のモジュールを追加し、省略し、複数のモジュールへと分割し、他のモジュールと組み合わせ、かつ／あるいは同様のモジュールと置き換えることができる。代替実施形態では、異なるモジュール及び／又はモジュールの他の構成を有するデコーダが、記載する技術の１つ以上を実施する。デコーダの具体的な実施形態は、一般的に、デコーダ（６００）の変形又は補足されたバージョンを使用する。デコーダ（６００）内のモジュール間の図示される関係は、デコーダ内の情報の一般的なフローを示し、他の関係は、簡潔さのために図示されない。
【０１０５】
ＶＩＩ．ＷＰＰが使用可能にされるときのピクチャ内予測モードの規則
このセクションでは、波面並列処理（「ＷＰＰ」）が使用可能にされるときのピクチャ内予測モードに対する規則の例を提示する。本イノベーションは、ＷＰＰが使用可能にされるときの、エンコーダ又はデコーダによる、パレット予測モード、イントラブロックコピー（「ＢＣ」）モード、イントララインコピー（「ＬＣ」）モード、及びイントラストリングコピー（「ＳＣ」）モードなどのピクチャ内予測モードの使用を容易にする。
【０１０６】
Ａ．波面並列処理−序論
一般に、ＷＰＰは、ピクチャ内のユニットの行に対する処理の開始を差動的に遅延することによって、並列処理を容易にする符号化／デコーディングツールである。ＷＰＰが使用可能にされると、ピクチャ内のユニットの異なる行を並列してエンコード又はデコードすることができる。エンコーディング又はデコーディングの間、ユニットの第１の行を、左から右にユニット毎に（unit-after-unit）処理することができる。ユニットの第２の行の処理（エンコーディング又はデコーディング）は、ユニットの第１の行全体の処理が完了するのを待つ必要がない。その代わりに、第１の行のユニットのいくつかが処理を完了した後に、このことが第２の行の最初のユニットを処理するときに使用される情報を提供し、ユニットの第２の行の処理が始まることができる。同様に、ユニットの第３の行の処理は、第２の行のユニットのいくつかについて処理が完了した後に開始することができる。従って、ＷＰＰは、ユニットの異なる行の並列処理を容易にし、異なるスレッド又は処理コアが、交互的な時間遅延の方式でユニットの異なる行の処理を実施することができる。
【０１０７】
例えば、Ｈ．２６５／ＨＥＶＣ規格に従って、ＷＰＰが使用可能にされると、スライスがＣＴＵの行へと分けられる。エンコード又はデコードする間、ＣＴＵの第１の行をＣＴＵ毎に（CTU-after-CTU）処理することができる。第１の行のうち最初の２つのＣＴＵについて処理が完了した後に、このことが第２の行の最初のＣＴＵを処理するときに使用される情報（例えば、再構成されたサンプル値、再構成されたＭＶ値又はＢＶ値、コンテキストモデル情報）を提供し、ＣＴＵの第２の行の処理が始まることができる。同様に、ＣＴＵの第３の行の処理は、第２の行の最初の２つのＣＴＵについて処理が完了した後に開始することができる。
【０１０８】
図７は、Ｈ．２６５／ＨＥＶＣ規格に従った現在ピクチャ（７１０）に対するＷＰＰのタイミング（７００）を示している。ピクチャ（７１０）は、ＣＴＵ列及びＣＴＵ行において編成されるＣＴＵへと区分される。異なるＣＴＵ行を、ＷＰＰを使用して並列してエンコードし又はデコードすることができる。ＷＰＰのタイミングは、エンコード又はデコードする間のＣＴＵ間の依存関係（dependencies）を反映する。この例では、所与のＣＴＵが、（１）その左側の隣接したＣＴＵ、（２）その左上の隣接したＣＴＵ、（３）所与のＣＴＵの上側の隣接したＣＴＵ、及び（４）所与のＣＴＵの右上の隣接したＣＴＵからの情報（再構成されたサンプル値、再構成されたＭＶ値若しくはＢＶ値、コンテキストモデル情報など）に依存してもよく、その場合、かかる隣接したＣＴＵ（１）〜（４）は利用可能である（例えば、ピクチャ内、同じスライス及びタイル内である）。各隣接ＣＴＵは、次いで、利用可能な場合はそれに隣接したＣＴＵ（１）〜（４）に依存してもよい。図８は、第５のＣＴＵ行の最初のＣＴＵに対するカスケード的依存関係を示している。第５のＣＴＵ行の最初のＣＴＵは、第４のＣＴＵ行の最初の２つのＣＴＵに依存し、それらは集合的に、第３のＣＴＵ行の最初の３つのＣＴＵに依存し、その後も同様である。
【０１０９】
図７を参照すると、ＷＰＰの場合、第１のＣＴＵ行（つまり、ＣＴＵ行０）は、波０に対してＣＴＵ毎に処理される。波１の場合、ＣＴＵ行１における最初のＣＴＵの処理は、ＣＴＵ行０における第２のＣＴＵのエンコーディング／デコーディングが終了した後に開始することができる。同様に、波２の場合、ＣＴＵ行２における最初のＣＴＵの処理は、ＣＴＵ行１における第２のＣＴＵのエンコーディング／デコーディングが終了した後に開始することができる。波３の場合、ＣＴＵ行３における最初のＣＴＵの処理は、ＣＴＵ行２における第２のＣＴＵのエンコーディング／デコーディングが終了した後に開始することができ、波４の場合、ＣＴＵ行４における最初のＣＴＵの処理は、ＣＴＵ行３における第２のＣＴＵのエンコーディング／デコーディングが終了した後に開始することができる。
【０１１０】
ＣＴＵ行が並列で処理される場合であっても、この交互的な時間遅延処理によって、ＣＴＵ行について処理が始まるときにＣＴＵ間の依存関係が満たされることが確保される。図７では、処理の間、各ＣＴＵ行に対してＣＴＵ２つ分の進みが維持される。各ＣＴＵ行に対して、現在のＣＴＵ（太い輪郭線で示される）の処理は、次のＣＴＵ行の現在のＣＴＵの処理よりもＣＴＵ２つ分早い。しかしながら、実際は、所与のＣＴＵ行の処理が失速し又は減速して、上記所与のＣＴＵ行におけるＣＴＵの処理の完了に（直接若しくは間接的に）依存する後のＣＴＵ行の処理においてカスケード的遅延が生じることがある。後のＣＴＵ行の所与のＣＴＵに関して、依存関係は前のＣＴＵ行からカスケードする（cascade）。図８に示される例（８００）では、フレーム（８１０）の第５のＣＴＵ行における最初のＣＴＵに対して、第４のＣＴＵ行における最初の２つのＣＴＵが処理されている。そうでなければ、第５のＣＴＵ行における最初のＣＴＵの処理は開始することができない。転じて、第３のＣＴＵ行の第３のＣＴＵが処理されているが、これは、そうでなければ第４のＣＴＵ行における第２のＣＴＵの処理を開始することができなかったためである。同様に、第３のＣＴＵ行の第３のＣＴＵに対する処理の事前条件として、第２のＣＴＵ行の第４のＣＴＵが処理されている。最後に、第２のＣＴＵ行の第４のＣＴＵに対する処理の事前条件として、第１のＣＴＵ行の第５のＣＴＵが処理されている。従って、図８は、ＷＰＰが使用可能にされるときの波４（第５のＣＴＵ行）における最初のＣＴＵの予測に利用可能であることを保証された、再構成されたコンテンツを示している。
【０１１１】
対照的に、ＷＰＰが使用可能にされていないと、ＣＴＵは、ＣＴＵ行内で左から右へ、ＣＴＵ行毎に（CTU  row  after  CTU  row）ピクチャ（若しくは使用される場合、スライス及びタイル）の上から下へと処理される。所与のＣＴＵに対して使用されるコンテキストモデル情報（ＣＡＢＡＣステータス情報若しくはエントロピー符号化情報とも呼ばれる）は、符号化／デコーディング順序においてより早いＣＴＵである、ピクチャ（若しくはスライス／タイル）の同じＣＴＵ行における任意の前のＣＴＵ及び任意の前のＣＴＵ行の処理の結果を説明し（account  for）得る。例えば、あるＣＴＵ行における第２のＣＴＵの処理が、上記ＣＴＵ行における第１のＣＴＵの処理の結果に依存し、その後も同様である。別の例として、あるＣＴＵ行における最初のＣＴＵの処理が、ピクチャ（若しくはスライス／タイル）内の前のＣＴＵ行における最後のＣＴＵの処理の結果に依存する。
【０１１２】
他方で、ＷＰＰが使用可能にされると、ＣＴＵ行における最初のＣＴＵの処理は、ピクチャ（若しくはスライス／タイル）内の前のＣＴＵ行における最後のＣＴＵの処理の結果に依存しない。ＣＴＵ行における最初のＣＴＵの処理は、前のＣＴＵ行内の最後のＣＴＵからのコンテキストモデル情報が利用不能であっても、ピクチャ（若しくはスライス／タイル）内の前のＣＴＵ行における第２のＣＴＵについて処理が終了した後で開始することができる。前のＣＴＵ行における第３のＣＴＵの処理は依然として、ＷＰＰが使用可能でないときと同じように、そのＣＴＵ行における第２のＣＴＵの処理結果に依存する。
【０１１３】
ＷＰＰが使用可能にされるとき、エンコーダは、エンコーディングの間ＷＰＰを実際に使用してもしなくてもよい。いずれにせよ、エンコーダは、ＷＰＰが実際に使用されるときに適用される制約及び予測規則を強制する。同様に、ＷＰＰが使用可能にされるとき、デコーダは、デコーディングの間ＷＰＰを実際に使用してもしなくてもよい。ビットストリーム内のシンタックス要素が、ビデオシーケンス、ピクチャのセット、又はピクチャに対してＷＰＰが使用可能にされているか否かを示すことができる。例えば、シンタックス要素は、ビットストリーム内のＳＰＳ、ＰＰＳ、又は他のシンタックス構造の形で信号伝達することができる。Ｈ．２６５／ＨＥＶＣの実装では、例えば、ＰＰＳシンタックス構造において信号伝達されるシンタックス要素の値ｅｎｔｒｏｐｙ＿ｃｏｄｉｎｇ＿ｓｙｎｃ＿ｅｎａｂｌｅｄ＿ｆｌａｇは、ＰＰＳシンタックス構造に関連付けられたピクチャに対してＷＰＰが使用可能にされているか否かを示す。ｅｎｔｒｏｐｙ＿ｃｏｄｉｎｇ＿ｓｙｎｃ＿ｅｎａｂｌｅｄ＿ｆｌａｇが１に等しい場合、ＷＰＰがピクチャに対して使用可能である。そうでなければ、ＷＰＰはピクチャに対して使用可能にされていない。
【０１１４】
Ｂ．パレット符号化／デコーディングモード及びパレット予測−序論
一般に、パレット符号化／デコーディングモードは、パレットを使用して、ユニット（例えば、Ｈ．２６５／ＨＥＶＣの実装におけるＣＵ、又は他のユニット）のサンプル値の少なくともいくつかを表す。例えば、パレットは、インデックス値０、１、２、…、ｐを対応する色に対してマッピングし、対応する色は、ＲＧＢ４：４：４フォーマット、ＢＧＲ４：４：４フォーマット、ＧＢＲ４：４：４フォーマット、ＹＵＶ４：４：４フォーマット、又は別のフォーマット（色空間、色サンプリングレート）であることができる。インデックス値は、ピクセルに対するＲＧＢトリプレット、ＢＧＲトリプレット、又はＧＢＲトリプレットを表すことができる。図９は、パレットの２つの例を示している。現在のユニットに対するパレット（つまり、「現在のパレット」）は、ＲＧＢトリプレットに関連付けられたｐ個のインデックス値０、…、ｐ−１を含む。前のユニットに対するパレット（「前のパレットデータ」で表される）は、ＲＧＢトリプレットに関連付けられたｑ個のインデックス値０、…、ｑ−１を含む。ｐ及びｑの値は同じ又は別であることができる。エンコーディングの間、エンコーダは、インデックス値を使用してピクセルのサンプル値を置き換えることができ、インデックス値は、例えばエントロピー符号化を使用して、更にエンコードされてもよい。デコーディングの間、デコーダは、例えば、インデックス値のエントロピーデコーディングの後、パレットを使用してインデックス値からピクセルのサンプル値を復元することができる。
【０１１５】
特に、パレット符号化／デコーディングモードは、ユニットが、画面コンテンツビデオの一般的な特性である、比較的少数の区別可能な色を含むときに有効であり得る。例えば、ＲＧＢ４：４：４フォーマットの６４×６４ＣＵは、６４×６４＝４０９６ピクセルを含むが、それよりもはるかに少数の色（例えば、１〜２０色）を含むことがある。ユニット内のレア色は、レア色をパレットに直接含む代わりに、（それぞれのサンプル値に対して）エスケープコード値及びリテラル値を使用してエンコードすることができる。
【０１１６】
２つのユニットが同じパレットを使用することができるが、色は典型的に、ピクチャ内のユニットからユニットへと変化する。そのため、パレットは典型的に、ピクチャ内のユニットからユニットへと変化する。パレットに対して、エンコーダは、エントロピー符号化されてもよいパレットデータをビットストリームにおいて信号伝達する。デコーダは、パレットデータを受信し、構文解析し、必要であればそれをエントロピーデコードし、パレットを再構成する。エンコーダ及びデコーダは、パレット予測を使用して、信号伝達パレットデータに関連付けられたビットレートを低減することができる。
【０１１７】
一般に、パレット予測は、エンコーディング又はデコーディングの間に使用される任意のアプローチであって、前のユニットの１つ以上のパレットからのパレットデータ（前のパレットデータ）を使用して現在のユニットのパレット（現在のパレット）の値を予測することができる。色は典型的にピクチャ内のユニットからユニットへと変化するが、多くの場合、所与のユニットにおける色の少なくともいくつかは隣接するユニットでさらに使用される。パレット予測は、その観察を活用して、パレットデータに対するビットレートを低減する。
【０１１８】
図９は、パレット予測の簡素化した例（９００）を示しており、現在のユニットのパレット（現在のパレット）が、前のユニットのパレット（前のパレットデータの形で表される）を使用して予測される。例えば、前のパレットデータは、前のユニットがパレット符号化／デコーディングモードを使用した場合、現在のユニットの前にエンコード又はデコードされた前のユニットによって使用されたパレットからのものであり得る。前のユニットがパレット符号化／デコーディングモードを使用しなかった場合、現在のユニットに対する前のパレットデータが前のユニットから「継承される」ことができる。即ち、前のユニットに対して利用可能であった前のパレットデータが、現在のユニットに対して利用可能な前のパレットデータとして再使用されることができる。（いくつかの例示的な実装では、前のパレットデータは、事実上、現在のユニットのステータス又は状態情報である。パレット符号化／デコーディングモードをそれ自体が使用しない所与のユニットが前のパレットデータを依然として有しており、それが次のユニットによって継承されてもよい。）従って、継承の連鎖を通して、現在のユニットに対する前のパレットデータは、パレット符号化／デコーディングモードを使用した最も直近の事前処理されたユニット（ある場合）のパレットからのパレットデータを含むことができる。
【０１１９】
パレット予測に関して、エンコーダは、現在のパレットが前のパレットデータと同じであるか否かを決定することができる。同じである場合、エンコーダは単純に、前のパレットデータが現在のパレットとして再使用されるべきであることを示すことができる。そうではない（現在のパレットが前のパレットデータと異なる）場合、エンコーダは、前のパレットデータと現在のパレットとの間の変化を決定し、該変化を示すシンタックス要素を信号伝達する。例えば、図９に示されるように、現在のパレットの所与のインデックス値に関して、エンコーダは、所与のインデックス値の対応する色が前のパレットデータの色（「ｐｒｅｖ」）であるか又は新しい色（「ｎｅｗ」）であるかを信号伝達する。対応する色が前のパレットデータの色である場合、エンコーダは、現在のパレットを埋める（populate）のに使用することができる、前のパレットデータの色に対する（前のパレットデータからの）インデックス値を信号伝達する。図９では、前のパレットデータのインデックス値１に対する色が、現在のパレットのインデックス値０に再割り当てされ、前のパレットデータのインデックス値０に対する色が、現在のパレットのインデックス値２に再割り当てされている。従って、色はパレットからパレットへと位置を変更することができ、そのため、例えば、最も一般的な色が最も低いインデックス値を有し、それによってエントロピー符号化の効率が改善されてもよい。所与のインデックス値の対応する色が新しい色である場合、エンコーダは新しい色に対するトリプレットを信号伝達する。図９では、例えば、現在のパレットのインデックス値１に関して、エンコーダは新しいトリプレット（２１５，１７０，２００）を信号伝達し、それが現在のパレットを更新するのに使用される。
【０１２０】
エンコーダによって信号伝達されたシンタックス要素に基づいて、デコーダは、現在のパレットが、デコーダで利用可能な前のパレットデータと同じであるか否かを決定することができる。同じである場合、デコーダは、前のパレットデータを現在のパレットとして再使用することができる。そうではない（現在のパレットが前のパレットデータと異なる）場合、デコーダは、前のパレットデータと現在のパレットとの間の変化を示すシンタックス要素を受信し、構文解析する。例えば、図９に示されるように、現在のパレットの所与のインデックス値に関して、デコーダは、所与のインデックス値の対応する色が前のパレットデータの色（「ｐｒｅｖ」）であるか又は新しい色（「ｎｅｗ」）であるかを決定する。対応する色が前のパレットデータの色である場合、デコーダは、現在のパレットを埋めるのに使用することができる、前のパレットデータの色に対する（前のパレットデータからの）インデックス値を示すシンタックス要素を受信し、構文解析する。所与のインデックス値の対応する色が新しい色である場合、デコーダは新しい色を示すシンタックス要素を受信し、構文解析する。
【０１２１】
現在のパレットを構成した後、エンコーダ及びデコーダは、次のユニットに対して前のパレットデータを更新して、現在のパレットからのパレットデータを記憶する。この新しい「前のパレットデータ」を使用して、次のユニットに対するパレットを予測することができる。
【０１２２】
図９は、簡素化した例（９００）を示している。実際は、パレットデータを信号伝達するのに使用されるシンタックス要素及び規則はより複雑な場合がある。例示的な実装におけるパレット符号化／デコーディング及びパレット予測に関する更なる詳細については、例えば、JCTVC-R1005のセクション7.3.8.8、7.4.9.6、及び8.4.1を参照されたい。或いは、別のアプローチがパレットデータを信号伝達するのに使用される。
【０１２３】
Ｃ．ＷＰＰが使用可能にされるときのパレット予測
一般に、パレット予測を目的とした前のパレットデータは、現在のユニットのパレット（現在のパレット）を予測するのに使用される。例えば、前のパレットデータは、現在のユニットの前にエンコード又はデコードされた隣接ユニットからの実際のパレットデータである（隣接するユニットがパレット符号化／デコーディングモードを使用した場合）。或いは（隣接するユニットがパレット符号化／デコーディングモードを使用しなかった場合）、隣接ユニットに利用可能な前のパレットデータが、現在のユニットに対する前のパレットデータとして再使用される（又は、「継承される」）ことができる。
【０１２４】
いくつかの例示的な実装では、ＷＰＰが使用可能にされない場合、現在の行内の最初のユニットに対して、前のパレットデータは、前の行内の最後のユニットから（例えば、最後のユニットがパレット符号化／デコーディングモードを使用した場合は、最後のユニットのパレットから、そうでなければ、最後のユニットに利用可能な前のパレットデータから）のものである。ＷＰＰが使用可能にされるとき、現在の行内の最初のユニットに対して、前の行内の最後のユニットからの前のパレットデータが利用可能でないことがある。しかしながら、ユニットの各行の始めにパレット予測をリセットすることは（現在のユニットにおける最初のユニットのパレット予測に対する予測子がない）、符号化効率に対して悪影響を有し得る。
【０１２５】
その代わりに、ＷＰＰが使用可能にされるとき、エンコーダ又はデコーダは、現在の行内の最初のユニットの処理が始まるために既に処理されている、前の行内の最初の２つのユニットのうち１つ（例えば、前の行の最初の２つのＣＴＵにおける最初の２つのＣＵのうち１つ）からの前のパレットデータを使用することができる。例えば、現在の行内の最初のユニットに対して、パレット予測を目的とした前のパレットデータは、前の行の第２のユニットからのもの（第２のユニットがパレット符号化／デコーディングモードを使用した場合、第２のユニットの実際のパレットデータ、又はそうでなければ、前の行の第２のユニットに利用可能な前のパレットデータ）である。従って、現在の行内の最初のユニットについて、上記第２のユニットがパレット符号化／デコーディングモードを使用しなかった場合、前のパレットデータは潜在的に、前の行内の第１のユニットからのパレットデータ（第１のユニットがパレット符号化／デコーディングモードを使用した場合）、又は、（前の行内の最初の２つのユニットがいずれもパレット符号化／デコーディングモードを使用しなかった場合は）前の行の第１のユニットからの前のパレットデータであり、該パレットデータは、前の行の前の行における第２のユニットに対するパレットに依存してもよく、その後も同様である。（或いは、前の行内の最初の２つのユニットがいずれもパレット符号化／デコーディングモードを使用しなかった場合、前のパレットデータは、ヌル（予測子なし）であるか又はデフォルト予測子を使用することができる。）現在の行内の最初のユニットの後、現在のユニットについて、パレット予測を目的とした前のパレットデータは、ＷＰＰが使用可能にされないときと同じように、現在のユニットの前にエンコード又はデコードされた隣接ユニットからのパレットデータ（隣接ユニットがパレット符号化／デコーディングモードを使用した場合）、又は、（隣接ユニットがパレット符号化／デコーディングモードを使用しなかった場合は）隣接ユニットに利用可能な前のパレットデータである。
【０１２６】
図１０は、いくつかの例示的な実施例による、ＷＰＰが使用可能にされた状態で処理される現在ピクチャ（１０１０）に対するパレット予測依存関係（１０００）を示している。ピクチャ（１０１０）はＣＴＵ行及びＣＴＵ列によって編成される。図１０の例では、各ＣＴＵは単一のＣＵを含む。より一般には、所与のＣＴＵを複数のＣＵへと再帰的に分割することができる（例えば、単一のＣＵを４つのＣＵへと分割することができ、４つのＣＵの各々が、より小さいＣＵへと更に分割されてもよい）。処理の状態（例えば、現在のＣＴＵがエンコード又はデコードされている）は、一般に、図７に示される処理の状態に対応する。図１０の矢印は、ＷＰＰが使用可能にされるときのパレット予測の方向を示している。第１のＣＴＵ行における最初のＣＵに関して、予測子は存在しない。或いは、デフォルト予測子を使用することができる。第１のＣＴＵ行内のより後のＣＵ各々に関して、前のパレットデータは、左側のＣＵからのものである。第１のＣＴＵ行の後の任意のＣＴＵ行における最初のＣＵに関して、前のパレットデータは、前の行の第２のＣＵからのものである。第１のＣＴＵ行の後の任意のＣＴＵ行内のより後のＣＵ各々に関して、前のパレットデータは、同じ行内の前のＣＵからのものである。パレット符号化／デコーディングモードを使用する任意のＣＵに関して、そのパレットは、次のＣＵのパレットを予測するための前のパレットデータを構成するのに使用される。所与のＣＵがパレット符号化／デコーディングモードを使用しない場合、上記所与のＣＵに利用可能であった前のパレットデータは、次のＣＵの前のパレットデータとして保有される。
【０１２７】
ＣＴＵが複数のＣＵを含むとき、現在のＣＵに対するパレット予測の目的で、前のＣＵはｚスキャン順序においてより早いＣＵであり得る。より早いＣＵは、（ＣＴＵの第１のＣＵに対して）同じＣＴＵ又は異なるＣＴＵにあることができる。セクションＶＩＩ．Ｄは、図１７を参照して、いくつかの例示的な実装におけるｚスキャン順序の例を説明している。
【０１２８】
エンコーダ及びデコーダは、メモリを使用して、パレット予測に使用される前のパレットデータを記憶することができる。前のパレットデータのために保存されるパレットデータの量は実装に依存する。一般に、前のパレットデータは、前のパレットデータにおける色のカウントＣと、色に対するサンプル値の詳細（例えば、ＲＧＢ４：４：４フォーマット、ＧＢＲ４：４：４フォーマット、ＢＧＲ４：４：４フォーマット、ＹＵＶ４：４：４フォーマット、又は別のフォーマットの色トリプレット）とを含むことができる。エンコーダ及びデコーダは、前のパレットに対する全てのパレットデータを保存することができる。しかしながら、前のパレットに対する全てのパレットデータの保存は、大きいパレットの場合に相当量のメモリを消費する場合がある。或いは、いくつかの事例においてメモリ消費を低減するため、エンコーダ及びデコーダは閾値カウントによってＣを制限し、ここで、閾値カウントは実装に依存する。この場合、エンコーダ及びデコーダは、前のパレットにおける最初のＣ個の異なる色について前のパレットデータを保存し、ここで、Ｃは閾値カウントによって制限される。例えば、閾値カウントは１６又は３２である。或いは、ＷＰＰが使用可能にされるとき、現在の行の最初のユニットに対するパレット予測に関して、エンコーダ及びデコーダは、最大で、最初のＣ１個の異なる色について前のパレットデータを保存する。その後、エンコーダ及びデコーダは、現在の行内のパレット予測に関して、最大で、最初のＣ２個の異なる色について前のパレットデータを保存する。例えば、Ｃ１は１６又は３２であり、Ｃ２は６４である。
【０１２９】
図１１は、ＷＰＰが使用可能にされるときの、パレット予測を含むエンコーディングのための一般化された技術（１１００）を示している。図３又は図５ａ及び５ｂに示されるエンコーダなどのエンコーダ、又は他のエンコーダが、技術（１１００）を実施することができる。図１２は、ＷＰＰが使用可能にされるときの、パレット予測を含むデコーディングのための一般化された技術（１２００）を示している。図４又は図６に示されるデコーダなどのデコーダ、又は他のデコーダが、技術（１２００）を実施することができる。
【０１３０】
図１１を参照すると、エンコーダが、ＷＰＰが使用可能にされた状態でピクチャをエンコードする（１１１０）。エンコーディング（１１１０）は、エンコードされたデータを生成する。エンコーディング（１１１０）の一部として、パレット符号化モードについて、エンコーダは、ピクチャの前のＷＰＰ行における前のユニットからの前のパレットデータを使用して、ピクチャの現在のＷＰＰ行における最初のユニットに対するパレットを予測する。エンコーダは、エンコードされたデータをビットストリームの一部として出力する（１１２０）。
【０１３１】
図１２を参照すると、デコーダが、エンコードされたデータをビットストリームの一部として受信する（１２１０）。デコーダは、ＷＰＰが使用可能にされた状態で、エンコードされたデータをデコードする（１２２０）。デコーディング（１２２０）は、ピクチャを再構成する。デコーディング（１２２０）の一部として、パレットデコーディングモードについて、デコーダは、ピクチャの前のＷＰＰ行における前のユニットからの前のパレットデータを使用して、ピクチャの現在のＷＰＰ行における最初のユニットに対するパレットを予測する。
【０１３２】
いくつかの例示的な実装では、エンコーダ又はデコーダにおいて、現在のＷＰＰ行及び前のＷＰＰ行はＣＴＵの行であり、最初のユニット及び前のユニットはＣＵである。或いは、ＷＰＰ行は別のタイプのユニットの行であり、かつ／あるいは最初のユニット及び前のユニットは別のタイプのユニットである。ビットストリーム内のシンタックス要素が、ビデオシーケンス、ピクチャのセット、又はピクチャについてＷＰＰが使用可能にされているかどうかを示すことができる。シンタックス要素は、ＳＰＳシンタックス構造、ＰＰＳシンタックス構造（例えば、Ｈ．２６５／ＨＥＶＣの実装におけるシンタックス要素ｅｎｔｒｏｐｙ＿ｃｏｄｉｎｇ＿ｓｙｎｃ＿ｅｎａｂｌｅｄ＿ｆｌａｇ）、又はビットストリーム内の他のシンタックス構造において信号伝達することができる。
【０１３３】
一般に、エンコーディング又はデコーディングの間、現在のＷＰＰ行における最初のユニットのパレットは、現在のＷＰＰ行内の最初のユニットで使用される少なくともいくつかの色を表す。前のＷＰＰ行内の前のユニットからの前のパレットデータは、前のＷＰＰ行の前のユニットのパレットで使用される少なくともいくつかの色を表してもよい（前のユニットがパレット符号化／デコーディングモードを使用した場合）。或いは（前のユニットがパレット符号化／デコーディングモードを使用しなかった場合）、前のＷＰＰ行内の前のユニットからの前のパレットデータは、より早いユニットから前のユニットによって継承されていてもよく、より早いユニットは、パレット符号化／デコーディングモードを使用しているか、又はそれ自体が前のパレットデータを継承していてもよい。パレットにおいて表されない色は、エスケープ符号化することができる。前のＷＰＰ行は、現在のＷＰＰ行のすぐ上のＷＰＰ行であり得る。前のＷＰＰ行における前のユニットは、現在のＷＰＰ行における最初のユニットの上であることができ（例えば、図１０において、前の行における第１のユニット）、或いは、現在のＷＰＰ行における最初のユニットの右上であることができる（例えば、図１０において、前の行の第２のユニット）。現在のＷＰＰ行における最初のユニットを処理した後、ピクチャの現在のＷＰＰ行における後続ユニットのパレットについて、エンコーダ又はデコーダは、現在のＷＰＰ行における最初のユニットのパレットからのパレットデータを使用して、（後続ユニットの）パレットを予測することができる。
【０１３４】
エンコーディング又はデコーディングの間、パレット予測はいくつかの段階を含むことができる。例えば、エンコーディングの間、エンコーダは（現在のパレットと前のパレットデータとの比較に基づいて）、前のＷＰＰ行内の前のユニットからの前のパレットデータを現在のＷＰＰ行内の最初のユニットに対するパレット（現在のパレット）として再使用するか否かを決定することができる。デコーディングの間、デコーダは（エンコーダによって信号伝達された情報に基づいて）、前のＷＰＰ行内の前のユニットからの前のパレットデータを現在のＷＰＰ行内の最初のユニットに対するパレット（現在のパレット）として再使用するか否かを決定することができる。別の例として、エンコーディングの間、パレットに対する変更があるとき、エンコーダは、前のＷＰＰ行内の前のユニットからの前のパレットデータから１つ以上の色を選択して、現在のＷＰＰ行内の最初のユニットに対するパレット（現在のパレット）に含めることができる。エンコーダは、選択された色を示すシンタックス要素を信号伝達する。次いで、デコーディングの間、デコーダは、上記シンタックス要素を受信し、構文解析することができ、シンタックス要素に基づいて、前のＷＰＰ行内の前のユニットからの前のパレットデータから１つ以上の色を選択して、現在のＷＰＰ行内の最初のユニットに対するパレット（現在のパレット）に含めることができる。或いは、エンコーダ及びデコーダは、別のアプローチを使用してパレットデータを信号伝達することができる。
【０１３５】
エンコーダ及びデコーダは、前のＷＰＰ行における前のユニットからの全ての前のパレットデータを記憶することができる。例えば、エンコーダ及びデコーダは、前のＷＰＰ行内の前のユニットからの前のパレットデータにおけるＣ個の色の各々について、１つ以上の色成分値を保存することができる。或いは、いくつかの事例においてメモリ消費を低減するため、エンコーダ及びデコーダは、前のパレットデータに対する閾値カウントによってＣを制限することができ、したがって、閾値カウントによって制限される最初のＣ個の色に対するパレットデータが、パレット予測のために記憶される。
【０１３６】
Ｄ．イントラコピー予測−序論
一般に、イントラコピーモードは、ピクチャの現在のブロック、ライン、ストリング、又は他のセクションが同じピクチャの参照ブロック、ライン、ストリング、又は他のセクションにおける事前に再構成されたサンプル値を使用して予測される、イントラコピー予測を使用する。例えば、イントラコピーモードは、イントラブロックコピー（「ＢＣ」）予測、イントララインコピー（「ＬＣ」）予測、又はイントラストリングコピー（「ＳＣ」）予測を使用することができる。
【０１３７】
一般に、イントラＢＣモードは、ピクチャの現在のブロックのサンプル値が同じピクチャのサンプル値を使用して予測される、イントラＢＣ予測を使用する。ブロックベクトル（「ＢＶ」）値は、現在のブロックから、予測に使用されるサンプル値を示すピクチャのブロック（「参照ブロック」）への変位を示す。参照ブロックは、現在のブロックに対する予測値を提供する。予測に使用されるサンプル値は事前に再構成されたサンプル値であり、従ってそれらは、エンコーディングの間エンコーダで、またデコーディングの間デコーダで利用可能である。ＢＶ値はビットストリームにおいて信号伝達され、デコーダは、ＢＶ値を使用して、予測に使用するピクチャの参照ブロックを決定することができる。
【０１３８】
図１３は、現在ピクチャ（１３１０）の現在のブロック（１３３０）に対するイントラＢＣ予測の一例（１３００）を示している。現在のブロックは、符号化ユニット（「ＣＵ」）の符号化ブロック（「ＣＢ」）、予測ユニット（「ＰＵ」）の予測ブロック（「ＰＢ」）、変換ユニット（「ＴＵ」）の変換ブロック（「ＴＢ」）、又は他のブロックであり得る。現在のブロックのサイズは、６４×６４、３２×３２、１６×１６、８×８、又は他の何らかのサイズであり得る。ブロックは、イントラＢＣ予測の目的で、より小さいブロックへと対称的又は非対称的に区分することができる。より一般には、現在のブロックのサイズはｍ×ｎであり、ｍ及びｎは各々整数であり、ｍ及びｎは互いに等しいことが可能であり、又は異なる値を有することができる。従って、現在のブロックは正方形又は長方形であり得る。或いは、現在のブロックは他の何らかの形状を有することができる。
【０１３９】
ＢＶ（１３４０）は、現在のブロック（１３３０）から、予測に使用されるサンプル値を含むピクチャの参照ブロック（１３５０）への変位（又はオフセット）を示す。参照ブロック（１３５０）は現在のブロック（１３３０）と同一であることができ、又は現在のブロック（１３３０）の近似であることができる。現在のブロックの左上位置が現在ピクチャの位置（ｘ０，ｙ０）にあるものと仮定し、参照ブロックの左上位置が現在ピクチャの位置（ｘ１，ｙ１）にあるものと仮定する。ＢＶは変位（ｘ１−ｘ０，ｙ１−ｙ０）を示す。例えば、現在のブロックの左上位置が位置（２５６，１２８）にあり、参照ブロックの左上位置が位置（１２６，１０４）にある場合、ＢＶ値は（−１３０，−２４）である。この例では、負の水平変位は現在のブロックの左側の位置を示し、負の垂直変位は現在のブロックの上側の位置を示す。
【０１４０】
イントラＢＣ予測は、ＢＣ動作を使用して冗長性（ピクチャ内部の繰返しパターンなど）を活用することによって、符号化効率を改善することができる。しかしながら、現在のブロックに対してマッチする参照ブロックを発見することは、エンコーダが評価し得る候補参照ブロックの数を考慮すると、計算的に複雑で時間のかかる場合がある。図１４は、ＷＰＰが使用可能にされていないときの、現在ピクチャ（１４１０）の現在のブロック（１４３０）に対する候補参照ブロックのいくつかを例証する一例（１４００）を示している。４つのＢＶ（１４４１、１４４２、１４４３、１４４４）が、４つの候補参照ブロックに対する変位を示す。ＷＰＰが使用可能にされていない場合、候補参照ブロックは、現在ピクチャ（１４１０）の再構成されたコンテンツ内のいずれかの場所であり得る。（ブロックは、一般に、左から右に、次に上から下に符号化される。）ＢＶ（１４４３、１４４４）によって示される候補参照ブロックに関して示されるように、候補参照ブロックは他の候補参照ブロックと重なり合う場合がある。いくつかの例示的な実装では、参照ブロックは、現在のブロックと同じスライス及びタイル内にあるように制約される。かかるイントラＢＣ予測は、他のスライス又はタイルにおけるサンプル値を使用しない。参照ブロックの場所は、後述するように、１つ以上の他の制約、例えばＷＰＰが使用可能にされるときの制約の対象であってもよい。
【０１４１】
イントラＢＣ予測の予測モードを有するブロックは、ＣＢ、ＰＢ、又は他のブロックであり得る。ブロックがＣＢであるとき、ブロックのＢＶはＣＵレベルで信号伝達されることができる（また、ＣＵ内の他のＣＢは、同じＢＶ又はそのスケーリングされたバージョンを使用する）。或いは、ブロックがＰＢであるとき、ブロックのＢＶはＰＵレベルで信号伝達されることができる（また、ＰＵないの他のＰＢは、同じＢＶ又はそのスケーリングされたバージョンを使用する）。より一般には、イントラＢＣ予測ブロックのＢＶは、ブロックに対して適切なシンタックスレベルで信号伝達される。
【０１４２】
一般に、イントラＬＣモードは、ピクチャの現在のブロックの現在のラインのサンプル値が同じピクチャ内のサンプル値を使用して予測される、イントラＬＣ予測を使用する。オフセット値が、現在のラインから、予測に使用されるサンプル値を含むピクチャのライン（「参照ライン」）への変位を示す。オフセット値はビットストリームにおいて信号伝達され、デコーダは、オフセット値を使用して、予測に使用する参照ラインを決定することができる。
【０１４３】
図１５は、現在ピクチャの現在のブロック（１５３０）のラインに対するイントラＬＣ予測の一例（１５００）を示している。現在のブロックは、ＣＵのＣＢ、ＰＵのＰＢ、ＴＵのＴＢ、又は他のブロックであり得る。現在のブロックのサイズは、６４×６４、３２×３２、１６×１６、８×８、又は他の何らかのサイズであり得る。より一般には、現在のブロックのサイズはｍ×ｎであり、ｍ及びｎは各々整数であり、ｍ及びｎは互いに等しいことが可能であり、又は異なる値を有することができる。従って、現在のブロックは正方形又は長方形であり得る。イントラＬＣ予測について、ブロックは水平ライン又は垂直ラインへと分割される。水平ラインは１サンプル分の高さを有し、現在のブロックの幅を有する。垂直ラインは１サンプル分の幅を有し、現在のブロックの高さを有する。
【０１４４】
図１５では、第１のオフセット（１５５１）が、現在のブロック（１５３０）の第１のライン（１５４１）から、第１のライン（１５４１）の予測に使用されるサンプル値を含む参照ライン（１５６１）への変位を示す。参照ラインは所与のラインと同一であることができ、又は所与のラインの近似であることができる。第２のオフセット（１５５２）が、現在のブロック（１５３０）の第２のライン（１５４２）から、第２のライン（１５４２）の予測に使用されるサンプル値を含む参照ライン（１５６２）への変位を示す。オフセット値（１５５１、１５５２）は、現在ピクチャ内における変位を示すという点でＢＶ値と類似している。図１５は水平ラインを示しているが、現在のブロック（１５３０）はその代わりに、イントラＬＣ予測のために垂直ラインへと分割することができる。ブロック毎、ユニット毎、又はピクチャ毎のシンタックス要素が、イントラＬＣ予測について水平ラインが使用されるか又は垂直ラインが使用されるかを示すことができる。
【０１４５】
イントラＬＣ予測は、ＬＣ動作を使用して冗長性（ピクチャ内部の繰返しパターンなど）を活用することによって、符号化効率を改善することができる。ＷＰＰが使用可能にされていない場合、候補参照ラインは、現在ピクチャの再構成されたコンテンツ内のいずれかの場所であり得る。候補参照ラインは、他の候補参照ラインと重なり合う場合がある。いくつかの例示的な実装では、参照ラインは、現在のラインと同じスライス及びタイル内であるように制約される。参照ラインの場所は、後述するように、１つ以上の他の制約、例えばＷＰＰが使用可能にされるときの制約の対象であってもよい。
【０１４６】
一般に、イントラＳＣモードは、ピクチャの現在のブロックの現在のストリングのサンプル値が同じピクチャ内のサンプル値を使用して予測される、イントラＳＣ予測を使用する。オフセット値が、現在のストリングから、予測に使用されるサンプル値を含むピクチャのストリング（「参照ストリング」）への変位を示す。ストリング長さ値が、サンプル値の観点でストリングの長さを示す。オフセット値及びストリング長さ値はビットストリームにおいて信号伝達され、デコーダは、オフセット値及びストリング長さ値を使用して、予測に使用する参照ストリングを決定することができる。
【０１４７】
図１６は、現在ピクチャの現在のブロック（１６３０）のストリングに対するイントラＳＣ予測の一例（１６００）を示している。現在のブロックは、ＣＵのＣＢ、ＰＵのＰＢ、ＴＵのＴＢ、又は他のブロックであり得る。現在のブロックのサイズは、６４×６４、３２×３２、１６×１６、８×８、又は他の何らかのサイズであり得る。より一般には、現在のブロックのサイズはｍ×ｎであり、ｍ及びｎは各々整数であり、ｍ及びｎは互いに等しいことが可能であり、又は異なる値を有することができる。従って、現在のブロックは正方形又は長方形であり得る。イントラＳＣ予測について、ブロックは１つ以上のストリングへと分割される。図１６では、現在のブロック（１６３０）は３つのストリングへと分割される。ブロックのストリングは、所与の行内で左から右に、次いで次の行、またその後も同様に、水平方向にスキャンすることが可能である。或いは、ブロックのストリングは、所与の列内で上から下に、次いで次の行、またその後も同様に、垂直方向にスキャンすることが可能である。図１６のストリングは水平方向にスキャンされている。
【０１４８】
図１６では、第１のオフセット（１６５１）が、現在のブロック（１６３０）の第１のストリング（１６４１）から、第１のストリング（１６４１）の予測に使用されるサンプル値を含む参照ストリング（１６６１）への変位を示す。第１のストリング（１６４１）及び対応する参照ストリング（１６６１）の各々の長さは、６サンプル値である。参照ストリングは所与のストリングと同一であることができ、又は所与のストリングの近似であることができる。第２のオフセット（１６５２）が、現在のブロック（１６３０）の第２のストリング（１６４２）から、第２のストリング（１６４２）の予測に使用されるサンプル値を含む参照ストリング（１６６２）への変位を示す。第２のストリング（１６４２）及び対応する参照ストリング（１６６２）の各々の長さは、１４サンプル値である。４４サンプルの長さを有する、現在のブロック（１６３０）の第３のストリングに対しては、オフセットが示されていない。ＢＶ値と同じく、オフセット値（１６５１、１６５２）は、現在ピクチャ内における変位を示す。図１６は水平方向のスキャンを示しているが、現在のブロック（１６３０）はその代わりに、イントラＳＣ予測のために垂直方向にスキャンされるストリングへと分割することができる。ブロック毎、ユニット毎、又はピクチャ毎のシンタックス要素が、イントラＳＣ予測について水平方向のスキャン順序が使用されるか又は垂直方向のスキャン順序が使用されるかを示すことができる。
【０１４９】
イントラＳＣ予測は、ＳＣ動作を使用して冗長性（ピクチャ内部の繰返しパターンなど）を活用することによって、符号化効率を改善することができる。イントラＳＣ予測は、イントラＢＣ予測又はイントラＬＣ予測よりも柔軟性が高い（固定の区分だけでなく任意のストリングへの区分化を許容する）が、より多くの情報（オフセット値に加えてストリング長さ値）を信号伝達する。ＷＰＰが使用可能にされていない場合、候補参照ストリングは、現在ピクチャの再構成されたコンテンツ内のいずれかの場所であり得る。候補参照ストリングは、他の候補参照ストリングと重なり合う場合がある。いくつかの例示の実装では、参照ストリングは、現在のストリングと同じスライス及びタイル内に制約される。参照ストリングの場所は、後述するように、１つ以上の他の制約、例えばＷＰＰが使用可能にされるときの制約の対象であってもよい。
【０１５０】
イントラＢＣモード、イントラＬＣモード、又はイントラＳＣモードに対するイントラコピー予測動作は、ＣＢ（ＢＶ値若しくは他のオフセット値が、ＣＢ若しくはその一部毎に信号伝達されるとき）、又はＰＢ（ＢＶ値若しくは他のオフセットが、ＰＢ若しくはその一部毎に信号伝達されるとき）のレベルで適用することができる。この場合、参照領域は、現在の領域、又は現在の領域を含むブロックと重なり合わないように制約される。或いは、イントラコピー予測動作は、ＢＶ値又は他のオフセット値がＰＢ若しくはＣＢ（又はその一部）に対して信号伝達されるときであっても、ＰＢ又はＣＢ内のより小さいセクションに対して適用することができる。例えば、ブロックの第１のセクションについて、参照領域はブロック外の位置を含む。しかしながら、ブロックの第２のセクションについて、イントラコピー予測動作に使用される参照領域は、同じブロックの事前に再構成された第１のセクション内の位置を含むことができる。このように、ＢＶ値又はオフセット値は、同じＰＢ又はＣＢ内の位置を参照することができる。イントラコピー予測動作をＰＢ又はＣＢ内のセクションに適用できるようにすることは、比較的小さい大きさのＢＶ値又は他のオフセットの使用を容易にする。
【０１５１】
現在のユニット内の現在の領域に対する参照領域が同じユニット内の位置を含む場合、エンコーダが、（同じスライス及び同じタイル内にある）現在の領域及び参照領域のｚスキャン順序を考慮することによって、ＢＶ値又は他のオフセット値の妥当性をチェックすることができる。例えば、エンコーダは、参照領域の右下位置（ｘ０＋ｏｆｆｓｅｔｘ＋ｍ−１，ｙ０＋ｏｆｆｓｅｔｙ＋ｎ−１）を含むブロックのｚスキャン順序が、現在領域の左上位置（ｘ０，ｙ０）を含むブロックのｚスキャン順序より小さいことをチェックし、これにおいて、ｏｆｆｓｅｔはオフセット値を示し、現在領域及び参照領域は寸法ｍ×ｎを有する。その場合、参照領域の右下位置を含むブロックは事前に再構成されている（また従って、参照領域の残りもそうである）。エンコーダは、オフセット値が条件ｏｆｆｓｅｔｘ＋ｍ≦０及びｏｆｆｓｅｔｙ＋ｎ≦０のうち少なくとも１つを満たすことをさらにチェックして、参照領域が現在の領域に重ならないことを確保することができる。
【０１５２】
一般に、ｚスキャン順序は、ピクチャを区分するユニットの、連続的に指定された順序付けに従う。図１７は、現在の領域（１７３０）、及び参照領域の右下位置を含むことがあるユニットに対する、例示的なｚスキャン順序（１７００）を示している。現在の領域（１７３０）は、ＣＢ、ＰＢ、若しくは他のブロック、ライン、又はストリングを含む長方形であり得る。ｚスキャン順序は、一般に、行内で左から右へと連続的にユニットに割り当てられ、続く行において上から下へと繰り返される。ユニットが分割されると、ｚスキャン順序は分割ユニット内で再帰的に割り当てられる。Ｈ．２６５／ＨＥＶＣ規格のエンコーディング／デコーディングの実装の場合、ｚスキャン順序は、ＣＴＵラスタスキャンパターン（ＣＴＵ行内で左から右、続くＣＴＵ行で上から下へと繰り返す）に沿ってＣＴＵからＣＴＵへ進行する。ＣＴＵが分割される場合、ｚスキャン順序は、分割されたＣＴＵ内の四分木のＣＵに対するラスタスキャンパターンに従う。また、ＣＵが（例えば、複数のＣＵへ、又は複数のＰＵへと）分割される場合、ｚスキャン順序は、分割されたＣＵ内のブロックに対するラスタスキャンパターンに従う。
【０１５３】
いくつかの例示的な実装では、ＢＶ値又は他のオフセット値が、ＣＵ、ＰＵ、又は他のユニットに対して信号伝達され、ユニットの全てのブロックに適用される。色空間及び色サンプリングレートに依存して、ＢＶ値又は他のオフセット値は、スケーリングせずに全てのブロックに使用することができ、又は異なる色成分のブロックに対してスケーリングすることができる。或いは、異なるＢＶ値又は他のオフセット値が、ユニットの異なるブロックに対して信号伝達されることができる。いくつかの例示的な実装では、同じ予測モード（例えば、イントラＢＣモード）がユニットの全てのブロックに適用される。或いは、異なるブロックが異なる予測モードを有することができる。
【０１５４】
Ｅ．ＷＰＰが使用可能にされるときのイントラコピー予測に関する制約
一般に、イントラＢＣ予測、イントラＬＣ予測、及びイントラＳＣ予測は、ピクチャ内の事前に再構成されたサンプル値を使用して、同じピクチャの現在のブロック、ライン、又はストリングのサンプル値を予測する。規則として、ＷＰＰが使用可能にされるときの事前に再構成されたサンプル値を含むピクチャのエリアは、ＷＰＰが使用可能にされないときの事前に再構成されたサンプル値を含むピクチャのエリアとは異なる。イントラコピー予測について、参照領域の場所に対するいくつかの制約が、ＷＰＰが使用可能にされるか否かにかかわらず強制される。参照領域の場所に対する１つ以上の他の制約が、ＷＰＰが使用可能にされるときに適用される。参照領域の場所に対する制約は、イントラＢＣ予測について許容されるＢＶ値に対する制限、又はイントラＬＣ予測若しくはイントラＳＣ予測について許容されるオフセット値に対する制限の形態をとることができる。
【０１５５】
図１８は、いくつかの例示的な実装による、ＷＰＰが使用可能にされるときのピクチャ（１８１０）の現在領域（１８３０）についての参照領域の場所に対する制約の一例（１８００）を示している。ピクチャ（１８１０）はＣＴＵ行及びＣＴＵ列によって編成される。
【０１５６】
現在の領域（１８３０）は、イントラコピーモードを用いてエンコードされ、又はデコードされる。現在の領域（１８３０）は現在のＣＴＵの一部である。現在のＣＴＵに関して、依存関係は前のＣＴＵ行からカスケードする。ＷＰＰが使用可能にされるとき、現在のＣＴＵの処理を開始するのに、同じ行内でその左側にあるＣＴＵは処理されており、右上のＣＴＵまでの前の行内のＣＴＵは処理されている。同様に、これらの既に処理されたＣＴＵのいずれか１つについて、同じ行内で左側にあるＣＴＵと右上のＣＴＵまでの前の行内のＣＴＵとは、処理されている。図１８に示されるように、これらの事前に処理されたＣＴＵは、ＷＰＰが使用可能にされるときにイントラコピー予測に利用可能であることを保証された、再構成されたコンテンツを提供する。
【０１５７】
図１８は、現在ピクチャ（１８１０）の現在の領域（１８３０）に対する候補参照領域のいくつかを示している。４つのオフセット値（１８４１、１８４２、１８４３、１８４４）が、４つの参照領域に関する変位を示す。候補参照領域は、他の候補参照領域と重なり合う場合がある。候補参照領域は、現在ピクチャ（１８１０）の再構成されたコンテンツ内のいずれかの場所であり得る。ＷＰＰが使用可能にされないとき、現在ピクチャ（１８１０）の再構成されたコンテンツは、一般に、現在のＣＴＵの左側のＣＴＵ、及び前のＣＴＵ行の全てのＣＴＵを含む。しかしながら、ＷＰＰが使用可能にされるとき、図１８に示されるように、利用可能な再構成されたコンテンツはより少ない。図１８では、オフセット値のうち３つ（１８４１、１８４２、１８４３）は有効な参照領域を示す。これらの有効な参照領域は、ＷＰＰが使用可能にされるときにイントラコピー予測に利用可能であることを保証された、再構成されたコンテンツ内のサンプル値のみを含む。オフセット値の１つ（１８４４）は無効の参照領域を示し、該領域は、ＷＰＰが使用可能にされるときにイントラコピー予測に利用可能であることを保証された、再構成されたコンテンツの、外側の少なくともいくつかのサンプル値を含む。
【０１５８】
１．ＷＰＰが使用可能にされるときのイントラコピーモードに対する制約を用いるエンコード及びデコード
図１９は、ＷＰＰが使用可能にされるときにイントラコピーモードに対して規則が強制される、エンコーディングのための一般化された技術（１９００）を示している。図３又は図５ａ及び図５ｂに示されるエンコーダ、又は他のエンコーダなどのエンコーダが、技術（１９００）を実施することができる。図２０は、ＷＰＰが使用可能にされるときにイントラコピーモードに対して規則が強制される、デコーディングのための一般化された技術（２０００）を示している。図４又は図６に示されるデコーダ、又は他のデコーダなどのデコーダが、技術（２０００）を実施することができる。
【０１５９】
図１９を参照すると、エンコーダが、ＷＰＰが使用可能にされた状態でピクチャをエンコードする（１９１０）。エンコード（１９１０）は、エンコードされたデータを生成する。エンコーディング（１９１０）の一部として、イントラコピーモード（例えば、イントラＢＣ予測、イントラＬＣ予測、又はイントラＳＣ予測を使用するモード）について、エンコーダは、ＷＰＰに起因する１つ以上の制約を強制する。エンコーダは、エンコードされたデータをビットストリームの一部として出力する（１９２０）。
【０１６０】
図２０を参照すると、デコーダが、エンコードされたデータをビットストリームの一部として受信する（２０１０）。エンコードされたデータは、イントラコピーモード（例えば、イントラＢＣ予測、イントラＬＣ予測、又はイントラＳＣ予測を使用するモード）について、ＷＰＰに起因する１つ以上の制約を満たす。デコーダは、ＷＰＰが使用可能にされた状態で、エンコードされたデータをデコードする（２０２０）。デコーディング（２０２０）は、ピクチャを再構成する。
【０１６１】
ビットストリーム内のシンタックス要素が、ビデオシーケンス、ピクチャのセット、又はピクチャについてＷＰＰが使用可能にされるかを示すことができる。シンタックス要素は、ＳＰＳシンタックス構造、ＰＰＳシンタックス構造（例えば、Ｈ．２６５／ＨＥＶＣの実装におけるシンタックス要素ｅｎｔｒｏｐｙ＿ｃｏｄｉｎｇ＿ｓｙｎｃ＿ｅｎａｂｌｅｄ＿ｆｌａｇ）、又はビットストリーム内の他のシンタックス構造において信号伝達することができる。
【０１６２】
イントラコピーモードはイントラＢＣモードであり得る。この場合、ピクチャ内の現在のブロックについて、オフセット値がピクチャ内の参照ブロックへの変位を示す。参照ブロックは事前に再構成されたサンプル値を含む。或いは、イントラコピーモードはイントラＬＣモードであり得る。この場合、ピクチャのブロック内の現在のラインについて、オフセット値がピクチャ内の参照ラインへの変位を示す。参照ラインは、水平又は垂直方向であり得るラインスキャン方向でスキャンされた、事前に再構成されたサンプル値を含む。或いは、イントラコピーモードはイントラＳＣモードであり得る。この場合、ピクチャのブロック内の現在のストリングについて、オフセット値がピクチャ内の参照ストリングへの変位を示す。参照ストリングは、水平又は垂直方向であり得るストリングスキャン順序でスキャンされた、事前に再構成されたサンプル値を含む。現在のストリングについて、長さ値が、現在のストリング及び参照ストリングの各々の長さを示す。或いは、イントラコピーモードは、ピクチャ内の現在のブロック、ライン、ストリング、又は他のセクションについて、同じピクチャ内の参照ブロック、ライン、ストリング、又は他のセクションを発見するのにオフセット値を使用する、他の何らかのモードであることができ、その場合、参照ブロック、ライン、ストリングなどは、事前に再構成されたサンプル値を含む。
【０１６３】
ＷＰＰに起因する制約は、参照領域から現在の領域への水平変位値が、現在の領域から参照領域への垂直変位値より小さいか又は等しいという制約を含むことができる。例えば、水平変位値は、参照領域の右端を含むＷＰＰ列から、現在の領域の左端を含むＷＰＰ列までの差を測定し、垂直変位値は、現在の領域の上端を含むＷＰＰ行から、参照領域の下端を含むＷＰＰ行までの差を測定する。いくつかの例示的な実装では、ＷＰＰ列の各々はＣＴＵの列であり、ＷＰＰ行の各々はＣＴＵの行である。或いは、ＷＰＰに起因する制約は、１つ以上の他の及び／又は追加の制約を含む。
【０１６４】
イントラコピーモードがイントラＢＣモードである場合、現在の領域は現在のブロックであり、参照領域は参照ブロックである。イントラコピーモードがイントラＬＣモードである場合、現在の領域は現在のラインであり、参照領域は参照ラインである。イントラコピーモードがイントラＳＣモードである場合、現在の領域は現在のストリングを含む長方形であり、参照領域は参照ストリングを含む長方形である。エンコーダ又はデコーダは、ストリングスキャン順序（例えば、水平、垂直）における、現在のストリングの開始位置と、現在のストリングの終了位置と、現在のストリングの開始位置と終了位置との間の任意の位置とを含む、長方形を識別することができる。エンコーダ又はデコーダは、現在のストリングを含む長方形に適用されるオフセット値を使用して、参照ストリングを含む長方形を識別することができる。
【０１６５】
エンコーダはまた、ＷＰＰに起因しない１つ以上の他の制約を強制することができる。例えば、エンコーダは、現在の領域の左上位置及び参照領域の左上位置が、適用可能であれば同じスライス内に、また適用可能であれば同じタイル内にあることをチェックすることができる。別の例として、エンコーダは、現在の領域の左上位置及び参照領域の右下位置が、適用可能であれば同じスライス内に、また適用可能であれば同じタイル内にあることをチェックすることができる。更に別の例として、エンコーダは、次の３つの条件のうち１つが満たされることをチェックすることができる。（ａ）参照領域の下端を含むＣＴＵ行が、現在の領域の上端を含むＣＴＵ行の上であること、（ｂ）参照領域の下端を含むＣＴＵ行が現在の領域の上端を含むＣＴＵ行に等しい場合、参照領域の右端を含むＣＴＵ列が現在の領域の左端を含むＣＴＵ列の左であること、及び（ｃ）参照領域の下端を含むＣＴＵ行が現在の領域の上端を含むＣＴＵ行に等しい場合、及び参照領域の右端を含むＣＴＵ列が現在の領域の左端を含むＣＴＵ列に等しい場合、参照領域の右下位置がｚスキャン順序において現在の領域の左上位置より早いこと。
【０１６６】
以下のセクションは、いくつかの例示的な実装による、ＷＰＰが使用可能にされるときにエンコーダがイントラＢＣ予測、イントラＬＣ予測、及びイントラＳＣ予測に対してそれぞれ強制することができる、制約の例について詳述する。
【０１６７】
２．ＷＰＰが使用可能にされるときのイントラＢＣ予測のＢＶ値に対する例示的な制約
このセクションは、ＷＰＰが使用可能にされるときにエンコーダがイントラＢＣ予測対して強制することができる、制約の例を詳述する。現在のブロックについて、制約は、ＢＶ値によって示される候補参照ブロックが、ＷＰＰが使用可能にされるときであっても現在のブロックがエンコード又はデコードされるとき利用可能になる再構成されたサンプル値を含むことを、検証する。
【０１６８】
定義。現在のブロックは、現在ピクチャの左上位置に対して、位置（ｘ０，ｙ０）から始まる。現在のブロックの幅及び高さはそれぞれ、ｗｂｌｏｃｋ及びｈｂｌｏｃｋである。現在のブロックは現在のＣＵの一部である。ＣＴＵサイズはＳである。現在のＣＵは、ピクチャの左上位置に対して（ｘＣＵ，ｙＣＵ）から始まる。ブロックベクトルは（ＢＶｘ，ＢＶｙ）である。
【０１６９】
エンコーダは、以下の制約の全てが満たされていることを検証する。
【０１７０】
第１の制約。エンコーダは、位置（ｘ０，ｙ０）及び位置（ｘ０＋ＢＶｘ，ｙ０＋ＢＶｙ）が、同じスライス内及び同じタイル内にあることを検証する。つまり、エンコーダは、現在のブロックの左上位置及び参照ブロックの左上位置が、同じスライス内及び同じタイル内にあることを検証する。２つの位置が異なるスライス又は異なるタイル内にある場合、第１の制約は満たされない。
【０１７１】
第２の制約。エンコーダは、位置（ｘ０，ｙ０）及び位置（ｘ０＋ＢＶｘ＋ｗｂｌｏｃｋ−１，ｙ０＋ＢＶｙ＋ｈｂｌｏｃｋ−１）が、同じスライス及び同じタイル内にあることを検証する。つまり、エンコーダは、現在のブロックの左上位置及び参照ブロックの右下位置が、同じスライス内及び同じタイル内にあることを検証する。２つの位置が異なるスライス又は異なるタイル内にある場合、第２の制約は満たされない。
【０１７２】
第１及び第２の制約に関して、複数のスライスが使用されない場合、チェックされる２つの位置は必然的に同じスライス内であり、スライスに対する第１及び第２の制約をチェックする必要はない。同様に、複数のタイルが使用されない場合、チェックされる２つの位置は必然的に同じタイル内であり、タイルに対する第１及び第２の制約をチェックする必要はない。現在のブロックの全ての位置が単一のスライス及び単一のタイル内にある。第１及び第２の制約が満たされる場合、参照ブロックの全ての位置もそのスライス及びタイル内にある。エンコーダは、ＷＰＰが使用可能にされるか否かにかかわらず、第１及び第２の制約をチェックする。
【０１７３】
第３の制約。第３の制約に関して、エンコーダは、以下の３つの条件のうち１つが満たされることを検証する。エンコーダは、ＷＰＰが使用可能にされるか否かにかかわらず、第３の制約をチェックする。
【０１７４】
第３の制約の第１の条件。エンコーダは、（ｙ０＋ＢＶｙ＋ｈｂｌｏｃｋ−１）／Ｓ＜ｙ０／Ｓであるか否かをチェックする。つまり、エンコーダは、参照ブロックの下端を含むＣＴＵ行を算出する：（ｙ０＋ＢＶｙ＋ｈｂｌｏｃｋ−１）／Ｓ。エンコーダはまた、現在のブロックの上端を含むＣＴＵ行を算出する：ｙ０／Ｓ。エンコーダは、次いで、参照ブロックの下端を含むＣＴＵ行が、現在のブロックの上端を含むＣＴＵ行の上であるか否かをチェックする。上側である場合、参照ブロックは必然的に、少なくともＷＰＰが使用可能にされないとき、事前に再構成されたサンプル値を含む。
【０１７５】
第３の制約の第２の条件。（ｙ０＋ＢＶｙ＋ｈｂｌｏｃｋ−１）／Ｓ＝＝ｙ０／Ｓのとき、エンコーダは、（ｘ０＋ＢＶｘ＋ｗｂｌｏｃｋ−１）／Ｓ＜ｘ０／Ｓであるか否かをチェックする。つまり、参照ブロックの下端を含むＣＴＵ行が、現在のブロックの上端を含むＣＴＵ行に等しい場合（同じＣＴＵ行）、エンコーダは、（ａ）参照ブロックの右端を含むＣＴＵ列（（ｘ０＋ＢＶｘ＋ｗｂｌｏｃｋ−１）／Ｓ）、及び（ｂ）現在のブロックの左端を含むＣＴＵ列（ｘ０／Ｓ）を算出する。エンコーダは、次いで、参照ブロックの右端を含むＣＴＵ列が、現在のブロックの左端を含むＣＴＵ列の左であるか否かをチェックする。左側である場合、参照ブロックは必然的に、事前に再構成されたサンプル値を含む。
【０１７６】
第３の制約の第３の条件。（ｙ０＋ＢＶｙ＋ｈｂｌｏｃｋ−１）／Ｓ＝＝ｙ０／Ｓ及び（ｘ０＋ＢＶｘ＋ｗｂｌｏｃｋ−１）／Ｓ＝＝ｘ０／Ｓのとき、エンコーダは、位置（ｘ０＋ＢＶｘ＋ｗｂｌｏｃｋ−１，ｙ０＋ｙＢＶ＋ｈｂｌｏｃｋ−１）のｚスキャン順序が、位置（ｘ０，ｙ０）のｚスキャン順序よりも小さいか否かをチェックする。つまり、参照ブロックの下端を含むＣＴＵ行が現在のブロックの上端を含むＣＴＵ行に等しい場合（同じＣＴＵ行）、及び参照ブロックの右端を含むＣＴＵ列が現在のブロックの左端を含むＣＴＵ列に等しい場合（同じＣＴＵ列）、エンコーダは、参照ブロックの右下位置がｚスキャン順序において現在のブロックの左上位置より早いか否かをチェックする。第３の条件は、現在のＣＵ内からの予測が許容される場合に適用される。現在のＣＵ内からの予測が許容されない場合、（ｘ０，ｙ０）は（ｘＣＵ，ｙＣＵ）のはずである。
【０１７７】
第４の制約。エンコーダは、ＷＰＰが使用可能にされるときの第４の制約をチェックする。第４の制約に関して、エンコーダは、（ｘ０＋ＢＶｘ＋ｗｂｌｏｃｋ−１）／Ｓ−ｘ０／Ｓ＜＝ｙ０／Ｓ−（ｙ０＋ＢＶｙ＋ｈｂｌｏｃｋ−１）／Ｓであることを検証する。つまり、エンコーダは、参照ブロックの右端を含むＣＴＵ列と現在のブロックの左端を含むＣＴＵ列との差を算出する：（ｘ０＋ＢＶｘ＋ｗｂｌｏｃｋ−１）／Ｓ−ｘ０／Ｓ。エンコーダはまた、現在のブロックの上端を含むＣＴＵ行と参照ブロックの下端を含むＣＴＵ行との差を算出する：ｙ０／Ｓ−（ｙ０＋ＢＶｙ＋ｈｂｌｏｃｋ−１）／Ｓ。エンコーダは、第１の差（ＣＴＵ列間）が第２の差（ＣＴＵ行間）より小さいか又は等しいことを検証する。図８又は図１８において現在のＣＴＵから上側及び右側の、ＣＴＵのギザギザの線に示されるように、上記のことは、参照ブロックが、ＷＰＰが使用可能にされるときに予測に利用可能であることを保証された、再構成されたコンテンツの一部であることを検証する。
【０１７８】
３．ＷＰＰが使用可能にされるときのイントラＬＣ予測のオフセット値に対する例示的な制約
このセクションは、ＷＰＰが使用可能にされるときにエンコーダがイントラＬＣ予測に対して強制することができる、制約の例を詳述する。現在のラインについて、制約は、オフセット値によって示される候補参照ラインが、ＷＰＰが使用可能にされるときであっても現在のラインがエンコード又はデコードされるとき利用可能になる再構成されたサンプル値を含むことを、検証する。
【０１７９】
定義。現在のブロックは、現在ピクチャの左上位置に対して、位置（ｘ０，ｙ０）から開始する。現在のブロックの幅及び高さはそれぞれ、ｗｂｌｏｃｋ及びｈｂｌｏｃｋである。現在のブロックは現在のＣＵの一部である。ＣＴＵサイズはＳである。現在のラインに対するオフセット値は（ｏｆｆｓｅｔｘ，ｏｆｆｓｅｔｙ）である。現在のブロックのうちＬラインが既に処理されている。
【０１８０】
エンコーダは、現在のブロックの現在のラインの開始及び終了位置を定義する。位置（ｘｃｕｒｒ＿ｌｉｎｅ＿ｓｔａｒｔ，ｙｃｕｒｒ＿ｌｉｎｅ＿ｓｔａｒｔ）は現在のラインの開始位置であり、位置（ｘｃｕｒｒ＿ｌｉｎｅ＿ｅｎｄ，ｙｃｕｒｒ＿ｌｉｎｅ＿ｅｎｄ）は現在のラインの終了位置である。水平スキャン（行モードとも呼ばれる）が使用されるとき、あらゆるラインが現在のブロックの行である：（ｘｃｕｒｒ＿ｌｉｎｅ＿ｓｔａｒｔ，ｙｃｕｒｒ＿ｌｉｎｅ＿ｓｔａｒｔ）＝（ｘ０，ｙ０＋Ｌ）、及び（ｘｃｕｒｒ＿ｌｉｎｅ＿ｅｎｄ，ｙｃｕｒｒ＿ｌｉｎｅ＿ｅｎｄ）＝（ｘ０＋ｗｂｌｏｃｋ−１，ｙ０＋Ｌ）。垂直スキャン（列モードとも呼ばれる）が使用されるとき、あらゆるラインが現在のブロックの列である：（ｘｃｕｒｒ＿ｌｉｎｅ＿ｓｔａｒｔ，ｙｃｕｒｒ＿ｌｉｎｅ＿ｓｔａｒｔ）＝（ｘ０＋Ｌ，ｙ０）、及び（ｘｃｕｒｒ＿ｌｉｎｅ＿ｅｎｄ，ｙｃｕｒｒ＿ｌｉｎｅ＿ｅｎｄ）＝（ｘ０＋Ｌ，ｙ０＋ｈｂｌｏｃｋ−１）。
【０１８１】
エンコーダはまた、現在のラインを予測する候補参照ラインの開始及び終了位置を定義する。位置（ｘｒｅｆ＿ｌｉｎｅ＿ｓｔａｒｔ，ｙｒｅｆ＿ｌｉｎｅ＿ｓｔａｒｔ）は参照ラインの開始位置である。位置（ｘｒｅｆ＿ｌｉｎｅ＿ｅｎｄ，ｙｒｅｆ＿ｌｉｎｅ＿ｅｎｄ）は参照ラインの終了位置である。参照ラインは、行（水平スキャンが使用されるとき）又は列（垂直スキャンが使用されるとき）であり得る。水平スキャン（行モード）又は垂直スキャン（列モード）が使用される：（ｘｒｅｆ＿ｌｉｎｅ＿ｓｔａｒｔ，ｙｒｅｆ＿ｌｉｎｅ＿ｓｔａｒｔ）＝（ｘｃｕｒｒ＿ｌｉｎｅ＿ｓｔａｒｔ，ｙｃｕｒｒ＿ｌｉｎｅ＿ｓｔａｒｔ）＋（ｏｆｆｓｅｔｘ，ｏｆｆｓｅｔｙ）、及び（ｘｒｅｆ＿ｌｉｎｅ＿ｅｎｄ，ｙｒｅｆ＿ｅｎｄ）＝（ｘｃｕｒｒ＿ｌｉｎｅ＿ｅｎｄ，ｙｃｕｒｒ＿ｌｉｎｅ＿ｅｎｄ）＋（ｏｆｆｓｅｔｘ，ｏｆｆｓｅｔｙ）。
【０１８２】
エンコーダは、以下の制約の全てが満たされていることを検証する。これらの制約のいくつかに関して、現在のブロックの左上位置（ｘ０，ｙ０）が考慮される。或いは、かかる制約に関して、現在のラインの開始位置（ｘｃｕｒｒ＿ｌｉｎｅ＿ｓｔａｒｔ，ｙｃｕｒｒ＿ｌｉｎｅ＿ｓｔａｒｔ）を、現在のブロックの左上位置（ｘ０，ｙ０）の代わりにチェックすることができる。
【０１８３】
第１の制約。エンコーダは、位置（ｘ０，ｙ０）及び位置（ｘｒｅｆ＿ｌｉｎｅ＿ｓｔａｒｔ，ｙｒｅｆ＿ｌｉｎｅ＿ｓｔａｒｔ）が同じスライス内及び同じタイル内にあることを検証する。つまり、エンコーダは、現在のブロックの左上位置及び参照ラインの開始位置が、同じスライス内及び同じタイル内にあることを検証する。２つの位置が異なるスライス又は異なるタイル内にある場合、第１の制約は満たされていない。
【０１８４】
第２の制約。エンコーダは、位置（ｘ０，ｙ０）及び位置（ｘｒｅｆ＿ｌｉｎｅ＿ｅｎｄ，ｙｒｅｆ＿ｌｉｎｅ＿ｅｎｄ）が同じスライス及び同じタイル内にあることを検証する。つまり、エンコーダは、現在のブロックの左上位置及び参照ラインの終了位置が、同じスライス内及び同じタイル内にあることを検証する。２つの位置が異なるスライス又は異なるタイル内にある場合、第２の制約は満たされない。
【０１８５】
第１及び第２の制約に関して、複数のスライスが使用されない場合、チェックされる２つの位置は必然的に同じスライス内であり、スライスに関して第１及び第２の制約をチェックする必要はない。同様に、複数のタイルが使用されない場合、チェックされる２つの位置は必然的に同じタイル内であり、タイルに関して第１及び第２の制約をチェックする必要はない。現在のラインの全ての位置が、単一のスライス及び単一のタイル内にある。第１及び第２の制約が満たされる場合、参照ラインの全ての位置もそのスライス及びタイル内にある。エンコーダは、ＷＰＰが使用可能にされるか否かにかかわらず、第１及び第２の制約をチェックする。
【０１８６】
第３の制約。第３の制約に関して、エンコーダは、以下の３つの条件の１つが満たされることを検証する。エンコーダは、ＷＰＰが使用可能にされるか否かにかかわらず、第３の制約をチェックする。
【０１８７】
第３の制約の第１の条件。エンコーダは、ｙｒｅｆ＿ｌｉｎｅ＿ｅｎｄ／Ｓ＜ｙ０／Ｓであるか否かをチェックする。つまり、エンコーダは、参照ラインの下端又は下位置を含むＣＴＵ行を算出する：ｙｒｅｆ＿ｌｉｎｅ＿ｅｎｄ／Ｓ。エンコーダはまた、現在のブロックの上端を含むＣＴＵ行を算出する：ｙ０／Ｓ。次いで、エンコーダは、参照ラインの下端又は下位置を含むＣＴＵ行が、現在のブロックの上端を含むＣＴＵ行の上であるか否かをチェックする。上側である場合、参照ラインは必然的に、少なくともＷＰＰが使用可能にされないとき、事前に再構成されたサンプル値を含む。
【０１８８】
第３の制約の第２の条件。ｙｒｅｆ＿ｌｉｎｅ＿ｅｎｄ／Ｓ＝＝ｙ０／Ｓのとき、エンコーダは、ｘｒｅｆ＿ｌｉｎｅ＿ｅｎｄ／Ｓ＜ｘ０／Ｓであるか否かをチェックする。つまり、参照ラインの下端又は下位置を含むＣＴＵ行が現在のブロックの上端を含むＣＴＵ行に等しい場合（同じＣＴＵ行）、エンコーダは、（ａ）参照ラインの右端又は右位置を含むＣＴＵ列（ｘｒｅｆ＿ｌｉｎｅ＿ｅｎｄ／Ｓ）、及び（ｂ）現在のブロックの左端を含むＣＴＵ列（ｘ０／Ｓ）を算出する。次いで、エンコーダは、参照ラインの右端又は右位置を含むＣＴＵ列が、現在のブロックの左端を含むＣＴＵ列の左であるか否かをチェックする。左側である場合、参照ラインは必然的に、事前に再構成されたサンプル値を含む。
【０１８９】
第３の制約の第３の条件。ｙｒｅｆ＿ｌｉｎｅ＿ｅｎｄ／Ｓ＝＝ｙ０／Ｓ及びｘｒｅｆ＿ｌｉｎｅ＿ｅｎｄ／Ｓ＝＝ｘ０／Ｓのとき、エンコーダは、位置（ｘｒｅｆ＿ｌｉｎｅ＿ｅｎｄ，ｙｒｅｆ＿ｌｉｎｅ＿ｅｎｄ）のｚスキャン順序が、位置（ｘｃｕｒｒ＿ｌｉｎｅ＿ｓｔａｒｔ，ｙｃｕｒｒ＿ｌｉｎｅ＿ｓｔａｒｔ）のｚスキャン順序より小さいか否かをチェックする。つまり、参照ラインの下端又は下位置を含むＣＴＵ行が現在のブロックの上端を含むＣＴＵ行に等しく（同じＣＴＵ行）、参照ラインの右端又は右位置を含むＣＴＵ列が現在のブロックの左端を含むＣＴＵ列に等しい場合（同じＣＴＵ列）、エンコーダは、参照ラインの終了位置がｚスキャン順序において現在のラインの開始位置より早いか否かをチェックする。第３の条件は、現在のＣＵ内からの予測が許容される場合に適用される。現在のＣＵ内からの予測が許容されない場合、（ｘｃｕｒｒ＿ｌｉｎｅ＿ｓｔａｒｔ，ｙｃｕｒｒ＿ｌｉｎｅ＿ｓｔａｒｔ）は（ｘ０，ｙ０）であるべきである。
【０１９０】
第４の制約。エンコーダは、ＷＰＰが使用可能にされるときの第４の制約をチェックする。第４の制約に関して、エンコーダは、ｘｒｅｆ＿ｌｉｎｅ＿ｅｎｄ／Ｓ−ｘ０／Ｓ＜＝ｙ０／Ｓ−ｙｒｅｆ＿ｌｉｎｅ＿ｅｎｄ／Ｓであることを検証する。つまり、エンコーダは、参照ラインの右端又は右位置を含むＣＴＵ列と現在のブロックの左端を含むＣＴＵ列との差を算出する：ｘｒｅｆ＿ｌｉｎｅ＿ｅｎｄ／Ｓ−ｘ０／Ｓ。エンコーダはまた、現在のブロックの上端を含むＣＴＵ行と参照ラインの下端又は下位置を含むＣＴＵ行との差を算出する：ｙ０／Ｓ−ｙｒｅｆ＿ｌｉｎｅ＿ｅｎｄ／Ｓ。エンコーダは、第１の差（ＣＴＵ列間）が第２の差（ＣＴＵ行間）より小さいか又は等しいことを検証する。
【０１９１】
４．ＷＰＰが使用可能にされるときのイントラＳＣ予測のオフセット値に対する例示的な制約
このセクションは、ＷＰＰが使用可能にされるときにイントラＳＣ予測に対してエンコーダが強制することができる、制約の例を詳述する。現在のストリングについて、制約は、オフセット値及び長さ値によって示される候補参照ストリングが、ＷＰＰが使用可能にされるときであっても現在のストリングがエンコード又はデコードされるとき利用可能になる再構成されたサンプル値を含むことを、検証する。
【０１９２】
定義。現在のブロックは、現在ピクチャの左上位置に対して、位置（ｘ０，ｙ０）から始まる。現在のブロックの幅及び高さはそれぞれ、ｗｂｌｏｃｋ及びｈｂｌｏｃｋである。現在のブロックは現在のＣＵの一部である。ＣＴＵサイズはＳである。現在のストリングに対するオフセット値は（ｏｆｆｓｅｔｘ，ｏｆｆｓｅｔｙ）であり、現在のストリングに対するストリング長さ値はｌｅｎｇｔｈｓｔｒｉｎｇである。現在のブロックのうちＫピクセルが、イントラＳＣ予測を使用して既に処理されている。
【０１９３】
エンコーダは、現在のブロックの現在のストリングの開始及び終了位置を定義する。位置（ｘｃｕｒｒ＿ｓｔｒｉｎｇ＿ｓｔａｒｔ，ｙｃｕｒｒ＿ｓｔｒｉｎｇ＿ｓｔａｒｔ）は現在のストリングの開始位置であり、位置（ｘｃｕｒｒ＿ｓｔｒｉｎｇ＿ｅｎｄ，ｙｃｕｒｒ＿ｓｔｒｉｎｇ＿ｅｎｄ）は現在のストリングの終了位置である。エンコーダはまた、現在のストリングの開始位置と、現在のストリングの終了位置と、（ストリングスキャン順序において）現在のストリングの開始及び終了位置の間の任意の位置とを含む、境界長方形を定義する。境界長方形の左上位置は（ｘｃｕｒｒ＿ｒｅｃｔ＿ＴＬ，ｙｃｕｒｒ＿ｒｅｃｔ＿ＴＬ）である。境界長方形の右下位置は（ｘｃｕｒｒ＿ｒｅｃｔ＿ＢＲ，ｙｃｕｒｒ＿ｒｅｃｔ＿ＢＲ）である。エンコーダは、（参照ストリングを含む）参照長方形を、オフセット値で変位された境界長方形として定義する。参照長方形の左上位置は（ｘｒｅｆ＿ｒｅｃｔ＿ＴＬ，ｙｒｅｆ＿ｒｅｃｔ＿ＴＬ）である。境界長方形の右下位置は（ｘｒｅｆ＿ｒｅｃｔ＿ＢＲ，ｙｒｅｆ＿ｒｅｃｔ＿ＢＲ）である。
【０１９４】
水平ストリングスキャンが使用されるとき（現在のブロックの行内で左から右、上の行から下の行）、開始位置は：（ｘｃｕｒｒ＿ｓｔｒｉｎｇ＿ｓｔａｒｔ，ｙｃｕｒｒ＿ｓｔｒｉｎｇ＿ｓｔａｒｔ）＝（ｘ０＋Ｋ％ｗｂｌｏｃｋ，ｙ０＋Ｋ／ｗｂｌｏｃｋ）である。終了位置は：（ｘｃｕｒｒ＿ｓｔｒｉｎｇ＿ｅｎｄ，ｙｃｕｒｒ＿ｓｔｒｉｎｇ＿ｅｎｄ）＝（ｘ０＋（Ｋ＋ｌｅｎｇｔｈｓｔｒｉｎｇ−１）％ｗｂｌｏｃｋ，ｙ０＋（Ｋ＋ｌｅｎｇｔｈｓｔｒｉｎｇ−１）／ｗｂｌｏｃｋ）である。現在のストリングの開始位置及び終了位置が現在のブロックの同じ行にある場合、（ｘｃｕｒｒ＿ｒｅｃｔ＿ＴＬ，ｙｃｕｒｒ＿ｒｅｃｔ＿ＴＬ）＝（ｘｃｕｒｒ＿ｓｔｒｉｎｇ＿ｓｔａｒｔ，ｙｃｕｒｒ＿ｓｔｒｉｎｇ＿ｓｔａｒｔ）、及び（ｘｃｕｒｒ＿ｒｅｃｔ＿ＢＲ，ｙｃｕｒｒ＿ｒｅｃｔ＿ＢＲ）＝（ｘｃｕｒｒ＿ｓｔｒｉｎｇ＿ｅｎｄ，ｙｃｕｒｒ＿ｓｔｒｉｎｇ＿ｅｎｄ）である。そうでなければ、境界長方形の左上位置は（ｘｃｕｒｒ＿ｒｅｃｔ＿ＴＬ，ｙｃｕｒｒ＿ｒｅｃｔ＿ＴＬ）＝（ｘ０，ｙ０＋Ｋ／ｗｂｌｏｃｋ）であり、境界長方形の右下位置は（ｘｃｕｒｒ＿ｒｅｃｔ＿ＢＲ，ｙｃｕｒｒ＿ｒｅｃｔ＿ＢＲ）＝（ｘ０＋ｗｂｌｏｃｋ−１），ｙ０＋（Ｋ＋ｌｅｎｇｔｈｓｔｒｉｎｇ−１）／ｗｂｌｏｃｋ）である。
【０１９５】
垂直スキャンが使用されるとき（現在のブロックの列内で上から下、左の列から右の列）、開始位置は：（ｘｃｕｒｒ＿ｓｔｒｉｎｇ＿ｓｔａｒｔ，ｙｃｕｒｒ＿ｓｔｒｉｎｇ＿ｓｔａｒｔ）＝（ｘ０＋Ｋ／ｈｂｌｏｃｋ，ｙ０＋Ｋ％ｈｂｌｏｃｋ）である。終了位置は：（ｘｃｕｒｒ＿ｓｔｒｉｎｇ＿ｅｎｄ，ｙｃｕｒｒ＿ｓｔｒｉｎｇ＿ｅｎｄ）＝（ｘ０＋（Ｋ＋ｌｅｎｇｔｈｓｔｒｉｎｇ−１）／ｈｂｌｏｃｋ，ｙ０＋（Ｋ＋ｌｅｎｇｔｈｓｔｒｉｎｇ−１）％ｈｂｌｏｃｋ）である。現在のストリングの開始位置及び終了位置が現在のブロックの同じ列内にあるとき、（ｘｃｕｒｒ＿ｒｅｃｔ＿ＴＬ，ｙｃｕｒｒ＿ｒｅｃｔ＿ＴＬ）＝（ｘｃｕｒｒ＿ｓｔｒｉｎｇ＿ｓｔａｒｔ，ｙｃｕｒｒ＿ｓｔｒｉｎｇ＿ｓｔａｒｔ）、及び（ｘｃｕｒｒ＿ｒｅｃｔ＿ＢＲ，ｙｃｕｒｒ＿ｒｅｃｔ＿ＢＲ）＝（ｘｃｕｒｒ＿ｓｔｒｉｎｇ＿ｅｎｄ，ｙｃｕｒｒ＿ｓｔｒｉｎｇ＿ｅｎｄ）である。そうでなければ、境界長方形の左上位置は（ｘｃｕｒｒ＿ｒｅｃｔ＿ＴＬ，ｙｃｕｒｒ＿ｒｅｃｔ＿ＴＬ）＝（ｘ０＋Ｋ／ｈｂｌｏｃｋ，ｙ０）であり、境界長方形の右下位置は（ｘｃｕｒｒ＿ｒｅｃｔ＿ＢＲ，ｙｃｕｒｒ＿ｒｅｃｔ＿ＢＲ）＝（ｘ０＋（Ｋ＋ｌｅｎｇｔｈｓｔｒｉｎｇ−１）／ｈｂｌｏｃｋ），ｙ０＋ｈｂｌｏｃｋ−１）である。
【０１９６】
水平スキャンが使用されるか又は垂直スキャンが使用されるかにかかわらず、参照長方形の左上位置は、（ｘｒｅｆ＿ｒｅｃｔ＿ＴＬ，ｙｒｅｆ＿ｒｅｃｔ＿ＴＬ）＝（ｘｃｕｒｒ＿ｒｅｃｔ＿ＴＬ，ｙｃｕｒｒ＿ｒｅｃｔ＿ＴＬ）＋（ｏｆｆｓｅｔｘ，ｏｆｆｓｅｔｙ）であり、参照長方形の右下位置は、（ｘｒｅｆ＿ｒｅｃｔ＿ＢＲ，ｙｒｅｆ＿ｒｅｃｔ＿ＢＲ）＝（ｘｃｕｒｒ＿ｒｅｃｔ＿ＢＲ，ｙｃｕｒｒ＿ｒｅｃｔ＿ＢＲ）＋（ｏｆｆｓｅｔｘ，ｏｆｆｓｅｔｙ）である。最後に、参照ストリングの開始位置は、（ｘｒｅｆ＿ｓｔｒｉｎｇ＿ｓｔａｒｔ，ｙｒｅｆ＿ｓｔｒｉｎｇ＿ｓｔａｒｔ）＝（ｘｃｕｒｒ＿ｓｔｒｉｎｇ＿ｓｔａｒｔ，ｙｃｕｒｒ＿ｓｔｒｉｎｇ＿ｓｔａｒｔ）＋（ｏｆｆｓｅｔｘ，ｏｆｆｓｅｔｙ）である。
【０１９７】
エンコーダは、以下の制約の全てが満たされることを検証する。これらの制約のいくつかに関して、現在のブロックの左上位置（ｘ０，ｙ０）が考慮される。或いは、かかる制約に関して、現在のストリングの開始位置又は境界長方形の左上位置を、現在のブロックの左上位置（ｘ０，ｙ０）の代わりにチェックすることができる。
【０１９８】
第１の制約。エンコーダは、位置（ｘ０，ｙ０）及び位置（ｘｒｅｆ＿ｒｅｃｔ＿ＴＬ，ｙｒｅｆ＿ｒｅｃｔ＿ＴＬ）が同じスライス内及び同じタイル内にあることを検証する。つまり、エンコーダは、現在のブロックの左上位置及び参照長方形の左上位置が、同じスライス内及び同じタイル内にあることを検証する。２つの位置が異なるスライス又は異なるタイル内にある場合、第１の制約は満たされない。
【０１９９】
第２の制約。エンコーダは、位置（ｘ０，ｙ０）及び位置（ｘｒｅｆ＿ｒｅｃｔ＿ＢＲ，ｙｒｅｆ＿ｒｅｃｔ＿ＢＲ）が同じスライス及び同じタイル内にあることを検証する。つまり、エンコーダは、現在のブロックの左上位置及び参照長方形の右下位置が、同じスライス内及び同じタイル内にあることを検証する。２つの位置が異なるスライス又は異なるタイル内にある場合、第２の制約は満たされない。
【０２００】
第１及び第２の制約に関して、複数のスライスが使用されない場合、チェックされる２つの位置は必然的に同じスライス内であり、スライスに関して第１及び第２の制約をチェックする必要はない。同様に、複数のタイルが使用されない場合、チェックされる２つの位置は必然的に同じタイル内であり、タイルに関して第１及び第２の制約をチェックする必要はない。現在のストリングの全ての位置が、単一のスライス及び単一のタイル内にある。第１及び第２の制約が満たされる場合、参照長方形（また従って、参照ストリング）の全ての位置もそのスライス及びタイル内にある。エンコーダは、ＷＰＰが使用可能にされるか否かにかかわらず、第１及び第２の制約をチェックする。
【０２０１】
第３の制約。第３の制約に関して、エンコーダは、以下の条件のうち１つ以上が満たされることを検証する。エンコーダは、ＷＰＰが使用可能にされるか否かにかかわらず、第３の制約をチェックする。
【０２０２】
第３の制約の第１の条件。エンコーダは、ｙｒｅｆ＿ｒｅｃｔ＿ＢＲ／Ｓ＜ｙ０／Ｓであるか否かをチェックする。つまり、エンコーダは、参照長方形の下端を含むＣＴＵ行を算出する：ｙｒｅｆ＿ｒｅｃｔ＿ＢＲ／Ｓ。エンコーダはまた、現在のブロックの上端を含むＣＴＵ行を算出する：ｙ０／Ｓ。次いで、エンコーダは、参照長方形の下端を含むＣＴＵ行が、現在のブロックの上端を含むＣＴＵ行の上であるか否かをチェックする。上側である場合、参照長方形は必然的に、少なくともＷＰＰが使用可能にされないとき、事前に再構成されたサンプル値を含む。
【０２０３】
第３の制約の第２の条件。ｙｒｅｆ＿ｒｅｃｔ＿ＢＲ／Ｓ＝＝ｙ０／Ｓのとき、エンコーダは、ｘｒｅｆ＿ｒｅｃｔ＿ＢＲ／Ｓ＜ｘ０／Ｓであるか否かをチェックする。つまり、参照長方形の下端を含むＣＴＵ行が現在のブロックの上端を含むＣＴＵ行に等しい場合（同じＣＴＵ行）、エンコーダは、（ａ）参照長方形の右端を含むＣＴＵ列（ｘｒｅｆ＿ｒｅｃｔ＿ＢＲ／Ｓ）、及び（ｂ）現在のブロックの左端を含むＣＴＵ列（ｘ０／Ｓ）を算出する。次いで、エンコーダは、参照長方形の右端を含むＣＴＵ列が、現在のブロックの左端を含むＣＴＵ列の左であるか否かをチェックする。左側である場合、参照長方形は必然的に、事前に再構成されたサンプル値を含む。
【０２０４】
第３の制約の第３の条件。ｙｒｅｆ＿ｒｅｃｔ＿ＢＲ／Ｓ＝＝ｙ０／Ｓ及びｘｒｅｆ＿ｒｅｃｔ＿ＢＲ／Ｓ＝＝ｘ０／Ｓのとき、エンコーダは、位置（ｘｒｅｆ＿ｒｅｃｔ＿ＢＲ，ｙｒｅｆ＿ｒｅｃｔ＿ＢＲ）のｚスキャン順序が、位置（ｘ０，ｙ０）のｚスキャン順序より小さいか否かをチェックする。つまり、参照長方形の下端を含むＣＴＵ行が現在のブロックの上端を含むＣＴＵ行に等しく（同じＣＴＵ行）、参照長方形の右端を含むＣＴＵ列が現在のブロックの左端を含むＣＴＵ列に等しい場合（同じＣＴＵ列）、エンコーダは、参照長方形の右下位置がｚスキャン順序において現在のブロックの左上位置より早いか否かをチェックする。
【０２０５】
第３の制約の第４の条件。現在のＣＵ内からの予測が許容される場合、ｙｒｅｆ＿ｓｔｒｉｎｇ＿ｓｔａｒｔ＝＝ｙ０のとき、エンコーダは、ｘｒｅｆ＿ｓｔｒｉｎｇ＿ｓｔａｒｔ＜ｘ０であることをチェックする。つまり、現在のＣＵ内からの予測が許容される場合、現在のストリング及び参照ストリングが同じ行で始まり、参照ストリングが現在のストリングの左側で始まる場合に、第３の制約を満たすことができる。
【０２０６】
第４の制約。エンコーダは、ＷＰＰが使用可能にされるときの第４の制約をチェックする。第４の制約に関して、エンコーダは、ｘｒｅｆ＿ｒｅｃｔ＿ＢＲ／Ｓ−ｘ０／Ｓ＜＝ｙ０／Ｓ−ｙｒｅｆ＿ｒｅｃｔ＿ＢＲ／Ｓであることを検証する。つまり、エンコーダは、参照長方形の右端又は右位置を含むＣＴＵ列と現在のブロックの左端を含むＣＴＵ列との差を算出する：ｘｒｅｆ＿ｒｅｃｔ＿ＢＲ／Ｓ−ｘ０／Ｓ。エンコーダはまた、現在のブロックの上端を含むＣＴＵ行と参照長方形の下端又は下位置を含むＣＴＵ行との差を算出する：ｙ０／Ｓ−ｙｒｅｆ＿ｒｅｃｔ＿ＢＲ／Ｓ。エンコーダは、第１の差（ＣＴＵ列間）が第２の差（ＣＴＵ行間）より小さいか又は等しいことを検証する。
【０２０７】
第５の制約。第５の制約に関して、エンコーダは、Ｋ＋ｌｅｎｇｔｈｓｔｒｉｎｇ＜＝ｗｂｌｏｃｋ×ｈｂｌｏｃｋであることを検証する。つまり、エンコーダは、現在のブロックが、既に処理されている位置のカウントを考慮して、現在のストリングに対して十分な位置を含むことをチェックする。
【０２０８】
Ｆ．代替例及び変形例
本明細書に記載する例の多くでは、イントラコピー予測及び動き補償が別個のコンポーネント又はプロセスで実現され、オフセット推定及び動き推定が別個のコンポーネント又はプロセスで実現される。或いは、イントラコピー予測は、動き補償の特別な事例として実現することができ、オフセット推定は、現在ピクチャが参照ピクチャとして使用される、動き推定の特別な事例として実現することができる。かかる実装では、オフセット値をＭＶ値として信号伝達することができるが、ピクチャ間予測ではなく（現在のピクチャ内の）イントラコピー予測に使用される。本明細書で使用されるとき、「イントラコピー予測」という用語は、予測が、ピクチャ内予測モジュール、動き補償モジュール、又は他の何らかのモジュールのどれを使用して提供されるかにかかわらず、現在ピクチャ内の予測を示す。同様に、ＢＶ値又は他のオフセット値は、ＭＶ値を使用して、又は区別可能なタイプのパラメータ若しくはシンタックス要素を使用して表すことができ、オフセット推定は、ピクチャ内推定モジュール、動き推定モジュール、又は他の何らかのモジュールを使用して提供することができる。
【０２０９】
開示する発明の原理が適用されてもよい多くの可能な実施形態の観点で、例証される実施形態は本発明の好ましい実施例に過ぎず、本発明の範囲を限定するものとしてとらえられるべきでないことを認識すべきである。むしろ、本発明の範囲は以下の特許請求の範囲によって定義される。従って、本発明として、こうした請求項の範囲及び趣旨内にあるもの全てを請求する。
【図１】
2019154067.tif 000003
【図２ａ】
2019154067.tif 000004
【図２ｂ】
2019154067.tif 000005
【図３】
2019154067.tif 000006
【図４】
2019154067.tif 000007
【図５ａ】
2019154067.tif 000008
【図５ｂ】
2019154067.tif 000009
【図６】
2019154067.tif 000010
【図７】
2019154067.tif 000011
【図８】
2019154067.tif 000012
【図９】
2019154067.tif 000013
【図１０】
2019154067.tif 000014
【図１１】
2019154067.tif 000015
【図１２】
2019154067.tif 000016
【図１３】
2019154067.tif 000017
【図１４】
2019154067.tif 000018
【図１５】
2019154067.tif 000019
【図１６】
2019154067.tif 000020
【図１７】
2019154067.tif 000021
【図１８】
2019154067.tif 000022
【図１９】
2019154067.tif 000023
【図２０】
2019154067.tif 000024
【外国語明細書】
2019154067000001.pdf