本詳細説明は、波面並列処理(wavefront parallel processing)(「WPP」)が使用可能にされるときにピクチャ内(intra-picture)予測モードに対して強制される(enforced)規則におけるイノベーションを提示する。例えば、イノベーションの一部は、WPPが使用可能にされるときのパレットコーディング/デコーディングモードに対するパレットの予測に関する。他のイノベーションが、WPPが使用可能にされるとき、イントラコピーモード(イントラブロックコピーモード、イントララインコピーモード、又はイントラストリングコピーモード)の間に強制される制約に関する。本イノベーションは、WPPが使用可能にされるときのエンコーダ又はデコーダによるピクチャ内予測モードの使用を容易にする。
本明細書に記載する動作は、場合によっては、ビデオエンコーダ又はビデオデコーダによって実施されるものとして記載されるが、多くの場合、別のタイプのメディア処理ツール(例えば、画像エンコーダ又は画像デコーダ)によって動作を実施することができる。
本明細書に記載するイノベーションの一部は、H.265/HEVC規格の拡張に特有の用語を参照して例証される。例えば、H.265/HEVC規格の画面コンテンツコーディング/デコーディングの拡張の草案JCTVC-R1005、“High Efficiency Video Coding(HEVC) Screen Content Coding: Draft 1”、JCTVC-R1005_v2、2014年8月が参照される。本明細書に記載するイノベーションは、他の規格又は方式に対して実現することもできる。
本明細書に記載するイノベーションの多くは、画面キャプチャコンテンツなど、特定の「人工的に作成された」ビデオコンテンツをエンコードするときのレートひずみ性能を改善することができる。一般に、画面キャプチャビデオ(画面コンテンツビデオとも呼ばれる)は、カメラでキャプチャされるビデオコンテンツのみとは対照的に、描画テキスト、コンピュータグラフィックス、アニメーション生成コンテンツ、又はコンピュータディスプレイに描画されるときにキャプチャされる他の類似タイプのコンテンツを含むビデオである。画面キャプチャコンテンツは、典型的に、繰返し構造(例えば、グラフィックス、テキスト文字)を含む。画面キャプチャコンテンツは、通常、高いクロマサンプリング分解能を有するフォーマット(例えば、YUV4:4:4又はRGB4:4:4)でエンコードされるが、さらに、より低いクロマサンプリング分解能を有するフォーマット(例えば、YUV4:2:0)でエンコードされてもよい。画面キャプチャコンテンツのエンコーディング/デコーディングに関する一般のシナリオとしては、リモートデスクトップ会議、並びに加工していない(natural)ビデオ又は他の「混合コンテンツ」ビデオに対するグラフィカルオーバーレイのエンコーディング/デコーディングが挙げられる。本明細書に記載するイノベーションのいくつかは、画面コンテンツビデオ又は他の人工的に作成されたビデオのエンコーディングに適合される。これらのイノベーションは加工していないビデオに使用することもできるが、同じように有効でないことがある。
より一般には、本明細書に記載する例に対する様々な代替例が可能である。例えば、本明細書に記載する方法のいくつかは、記載する方法動作の順序を変更すること、特定の方法動作を分割し、繰返し、又は省略することなどによって、変更することができる。開示する技術の様々な態様は、組み合わせて又は別々に使用することができる。異なる実施形態が、記載するイノベーションの1つ以上を使用する。本明細書に記載するイノベーションのいくつかは、背景技術の項で言及した課題の1つ以上に対処する。典型的に、所与の技術/ツールが、かかる課題の全てを解決するものではない。
I.例示的なコンピューティングシステム
図1は、記載するイノベーションのいくつかが実現されてもよい、適切なコンピューティングシステム(100)の一般化した例を示している。イノベーションは種々の汎用又は専用コンピューティングシステムで実現されてもよいので、コンピューティングシステム(100)は、使用又は機能性の範囲に関して何らかの限定を提案しようとするものではない。
図1を参照すると、コンピューティングシステム(100)は、1つ以上の処理ユニット(110、115)とメモリ(120、125)とを含む。処理ユニット(110、115)はコンピュータ実行可能命令を実行する。処理ユニットは、汎用中央処理ユニット(「CPU」)、特定用途向け集積回路(「ASIC」)内のプロセッサ、又は他の任意のタイプのプロセッサであることができる。マルチ処理システムでは、複数の処理ユニットがコンピュータ実行可能命令を実行して処理力を増加させる。例えば、図1は、中央処理ユニット(110)、並びにグラフィックス処理ユニット又はコプロセシングユニット(115)を示している。有形のメモリ(120、125)は、処理ユニットがアクセス可能な、揮発性メモリ(例えば、レジスタ、キャッシュ、RAM)、不揮発性メモリ(例えば、ROM、EEPROM、フラッシュメモリなど)、又はその2つの何らかの組み合わせであってもよい。メモリ(120、125)は、WPPが使用可能にされるときにピクチャ内予測モードに対して強制される規則の1つ以上のイノベーションを実現するソフトウェア(180)を、処理ユニットが実行するのに適したコンピュータ実行可能命令の形式で記憶する。
コンピューティングシステムは追加の特徴を有してもよい。例えば、コンピューティングシステム(100)は、記憶装置(140)と、1つ以上の入力装置(150)と、1つ以上の出力装置(160)と、1つ以上の通信接続(170)とを含む。バス、コントローラ、又はネットワークなどの相互接続メカニズム(図示なし)が、コンピューティングシステム(100)のコンポーネントを相互接続する。典型的に、オペレーティングシステムソフトウェア(図示なし)が、コンピューティングシステム(100)で実行される他のソフトウェアに対するオペレーティング環境を提供し、コンピューティングシステム(100)のコンポーネントの活動を調整する。
有形の記憶装置(140)は、取外し可能又は取外し不能であってもよく、磁気ディスク、磁気テープ若しくはカセット、CD−ROM、DVD、又は情報を記憶するのに使用することができ、コンピューティングシステム(100)内でアクセスすることができる、他の任意の媒体を含む。記憶装置(140)は、WPPが使用可能にされるときにピクチャ内予測モードに対して強制される規則の1つ以上のイノベーションを実現するソフトウェア(180)の命令を記憶する。
入力装置(150)は、キーボード、マウス、ペン、若しくはトラックボールなどのタッチ入力装置、音声入力装置、スキャニング装置、又はコンピューティングシステム(100)に対する入力を提供する別の装置であってもよい。ビデオの場合、入力装置(150)は、カメラ、ビデオカード、テレビチューナーカード、画面キャプチャモジュール、又はビデオ入力をアナログ若しくはデジタル形式で受け入れる類似の装置、又はビデオ入力をコンピューティングシステム(100)へと読み出すCD−ROM若しくはCD−RWであってもよい。出力装置(160)は、ディスプレイ、プリンタ、スピーカー、CDライター、又はコンピューティングシステム(100)からの出力を提供する別の装置であってもよい。
通信接続(170)は、通信媒体を通じて別のコンピューティングエンティティに対して通信するのを可能にする。通信媒体は、コンピュータ実行可能命令、音声若しくはビデオの入力又は出力、或いは変調データ信号の形式の他のデータなど、情報を搬送する。変調データ信号は、信号中の情報をエンコードするような形で設定又は変更された、その特性のうち1つ以上を有する信号である。例として、非限定的に、通信媒体は、電気、光、RF、又は他のキャリアを使用することができる。
本イノベーションは、コンピュータ読取可能媒体の一般的文脈で説明することができる。コンピュータ読取可能媒体は、コンピューティング環境内でアクセスすることができる、任意の利用可能な有形の媒体である。例として、非限定的に、コンピューティングシステム(100)と共に、コンピュータ読取可能媒体は、メモリ(120、125)、記憶装置(140)、及び上述のいずれかの組み合わせを含む。
本イノベーションは、プログラムモジュールに含まれ、コンピューティングシステム内で対象の実在若しくは仮想プロセッサ上で実行されるものなど、コンピュータ実行可能命令の一般的文脈で説明することができる。一般に、プログラムモジュールは、特定のタスクを実施するか、又は特定の抽象データタイプを実現する、ルーチン、プログラム、ライブラリ、オブジェクト、クラス、コンポーネント、データ構造などを含む。プログラムモジュールの機能性は、様々な実施形態で所望に応じて、プログラムモジュール間で組み合わされるか又は分割されてもよい。プログラムモジュールのコンピュータ実行可能命令は、ローカル又は分散型コンピューティングシステム内で実行されてもよい。
「システム」及び「装置」という用語は、本明細書では交換可能に使用される。文脈による別段の明確な指示がない限り、どちらの用語もコンピューティングシステム又はコンピューティング装置のタイプに対する何らかの限定を示唆しない。一般に、コンピューティングシステム又はコンピューティング装置は、ローカル若しくは分散型であることができ、専用ハードウェア及び/又は汎用ハードウェアと、本明細書に記載の機能性を実現するソフトウェアとの任意の組み合わせを含むことができる。
記載する方法はまた、開示する方法のいずれかを実施するように構成された専用のコンピューティングハードウェアを使用して実現することができる。例えば、開示する方法は、開示する方法のいずれかを実現するように特別に設計若しくは構成された、集積回路(例えば、ASICデジタル信号プロセッサ(「DSP」)などのASIC、グラフィックス処理ユニット(「GPU」)、又はフィールドプログラマブルゲートアレイ(「FPGA」)などのプログラマブル論理装置(「PLD」))によって実現することができる。
提示の目的で、本詳細説明は、「決定する」及び「使用する」のような用語を使用して、コンピューティングシステムにおけるコンピュータ動作について記載する。これらの用語は、コンピュータによって実施される動作に関する高次の抽象化であり、人間が行う行為と混同すべきでない。これらの用語に対応する実際のコンピュータ動作は実装に応じて変動する。
II.例示的なネットワーク環境
図2a及び図2bは、ビデオエンコーダ(220)及びビデオデコーダ(270)を含む例示的なネットワーク環境(201、202)を示している。エンコーダ(220)及びデコーダ(270)は、適切な通信プロトコルを使用してネットワーク(250)を通じて接続される。ネットワーク(250)は、インターネット又は別のコンピュータネットワークを含むことができる。
図2aに示されるネットワーク環境(201)では、各リアルタイム通信(「RTC」)ツール(210)が、双方向通信のためにエンコーダ(220)及びデコーダ(270)の両方を含む。所与のエンコーダ(220)が、H.265/HEVC規格、SMPTE 421M規格、ISO/IEC 14496−10規格(H.264若しくはAVCとしても知られる)、別の規格、又は独自のフォーマットの変形又は拡張に準拠した出力を生成することができ、対応するデコーダ(270)が、エンコードされたデータをエンコーダ(220)から受け入れる。双方向通信は、ビデオ会議、ビデオ電話コール、又は他の二者若しくは多数(multi-party)通信シナリオの一部であることができる。図2aのネットワーク環境(201)は2つのリアルタイム通信ツール(210)を含むが、ネットワーク環境(201)はその代わりに、多数通信に関与する3つ以上のリアルタイム通信ツール(210)を含むことができる。
リアルタイム通信ツール(210)はエンコーダ(220)によるエンコーディングを管理する。図3は、リアルタイム通信ツール(210)に含むことができる例示的なエンコーダシステム(300)を示している。或いは、リアルタイム通信ツール(210)は別のエンコーダシステムを使用する。リアルタイム通信ツール(210)はまた、デコーダ(270)によるデコーディングを管理する。図4は、リアルタイム通信ツール(210)に含むことができる例示的なデコーダシステム(400)を示している。或いは、リアルタイム通信ツール(210)は別のデコーダシステムを使用する。
図2bに示されるネットワーク環境(202)では、エンコーディングツール(212)は、デコーダ(270)を含む複数の再生ツール(214)に配信するためにビデオをエンコードするエンコーダ(220)を含む。単方向通信は、ビデオ監視システム、ウェブカメラ監視システム、リモートデスクトップ会議プレゼンテーション、又はビデオがエンコードされ、1つの場所から他の1つ以上の場所に送られる他のシナリオのために提供することができる。図2bのネットワーク環境(202)は2つの再生ツール(214)を含むが、ネットワーク環境(202)は、より多数又はより少数の再生ツール(214)を含むことができる。一般に、再生ツール(214)は、エンコーディングツール(212)と通信して、再生ツール(214)が受信するビデオのストリームを決定する。再生ツール(214)は、ストリームを受信し、受信したエンコードされたデータを適切な期間の間バッファし、デコーディング及び再生を開始する。
図3は、エンコーディングツール(212)に含むことができる例示的なエンコーダシステム(300)を示している。或いは、エンコーディングツール(212)は別のエンコーダシステムを使用する。エンコーディングツール(212)はまた、1つ以上の再生ツール(214)との接続を管理するためのサーバ側コントローラ論理を含むことができる。図4は、再生ツール(214)に含むことができる例示的なデコーダシステム(400)を示している。或いは、再生ツール(214)は別のデコーダシステムを使用する。再生ツール(214)はまた、エンコーディングツール(212)との接続を管理するためのクライアント側コントローラ論理を含むことができる。
III.例示的なエンコーダシステム
図3は、記載するいくつかの実施形態が併せて実現されてもよい、例示的なエンコーダシステム(300)のブロック図である。エンコーダシステム(300)は、リアルタイム通信向けの低レイテンシエンコーディングモード、トランスコーディングモード、ファイル若しくはストリームからの再生向けにメディアを生成するより高いレイテンシのエンコーディングモードなど、複数のエンコーディングモードのいずれかで動作することができる、汎用エンコーディングツールであることができ、又は1つのかかるエンコーディングモードに適合された専用エンコーディングツールであることができる。エンコーダシステム(300)は、特定タイプのコンテンツ(例えば、画面キャプチャコンテンツ)のエンコーディングに適合させることができる。エンコーダシステム(300)は、オペレーティングシステムモジュールの一部として、アプリケーションライブラリの一部として、スタンドアロン型アプリケーションの一部として、又は専用ハードウェアを使用して実現することができる。概して、エンコーダシステム(300)は、ソースビデオピクチャ(311)のシーケンスをビデオソース(310)から受信し、エンコードされたデータをチャネル(390)に対する出力として生成する。チャネルに対して出力されるエンコードされたデータは、WPPが使用可能にされるときにピクチャ内予測モードに対して強制される規則を使用してエンコードされるコンテンツを含むことができる。
ビデオソース(310)は、カメラ、チューナーカード、記憶媒体、画面キャプチャモジュール、又は他のデジタルビデオソースであることができる。ビデオソース(310)は、ビデオピクチャのシーケンスを、例えば1秒当たり30フレームのフレームレートで生成する。本明細書で使用するとき、「ピクチャ」という用語は一般に、ソースの符号化され又は再構成された画像データを指す。プログレッシブスキャンビデオの場合、ピクチャはプログレッシブスキャンビデオフレームである。インターレースビデオの場合、例示的な実施形態では、インターレースビデオフレームはエンコーディングの前にインターレース解除されてもよい。或いは、2つの補完的なインターレースビデオフィールドが、単一のビデオフレームとして一緒にエンコードされるか、又は2つの別個にエンコードされるフィールドとしてエンコードされる。プログレッシブスキャンビデオフレーム又はインターレーススキャンビデオフレームを示す他に、「ピクチャ」という用語は、単一の非ペアビデオフィールド、補完的なビデオフィールドのペア、所与の時間のビデオオブジェクトを表すビデオオブジェクトプレーン、又はより大きい画像の関心領域を示すことができる。ビデオオブジェクトプレーン又は領域は、シーンの複数のオブジェクト又は領域を含む、より大きい画像の一部であることができる。
到着するソースピクチャ(311)は、複数のピクチャバッファ記憶エリア(321、322、…、32n)を含むソースピクチャ一時メモリ記憶エリア(320)に記憶される。ピクチャバッファ(321、322など)は、1つのソースピクチャをソースピクチャ記憶エリア(320)で保持する。ソースピクチャ(311)の1つ以上がピクチャバッファ(321、322など)に記憶された後、ピクチャセレクタ(330)が個々のソースピクチャをソースピクチャ記憶エリア(320)から選択する。ピクチャが、エンコーダ(340)への入力のためにピクチャセレクタ(330)によって選択される順序は、ピクチャがビデオソース(310)によって生成される順序とは異なっていてもよく、例えば、いくつかのピクチャのエンコードの順序が遅らされて、いくつかの後のピクチャが最初にエンコードされることを可能にし、結果として時間的後方予測を容易にしてもよい。エンコーダ(340)の前に、エンコーダシステム(300)は、エンコードする前に選択されたピクチャ(311)の前処理(例えば、フィルタリング)を実施するプリプロセッサ(図示なし)を含むことができる。前処理は、一次(例えば、ルマ)及び二次(例えば、赤色及び青色に向かうクロマ差)成分への色空間コンバージョン、並びにエンコーディングのためのリサンプリング処理(例えば、クロマ成分の空間分解能を低減する)を含むことができる。エンコードの前に、ビデオは、YUVなどの色空間にコンバートされてもよく、これにおいて、ルマ(Y)成分のサンプル値が明るさ又は明度値を表し、クロマ(U、V)成分のサンプル値が色差値を表す。色差値の精密な定義(及びYUV色空間とRGBなどの別の色空間との間でのコンバージョン動作)は、実装に依存する。一般に、本明細書で使用するとき、YUVという用語は、Y’UV、YIQ、Y’IQ、及びYDbDr、並びにYCbCr及びYCoCgなどの変形を含む、ルマ(又は、輝度)成分と1つ以上のクロマ(又は、クロミナンス)成分とを有する任意の色空間を示す。クロマサンプル値は、より低いクロマサンプリングレートへとサブサンプリングされてもよく(例えば、YUV4:2:0フォーマットの場合)、又はクロマサンプル値は、ルマサンプル値と同じ分解能を有してもよい(例えば、YUV4:4:4フォーマットの場合)。或いは、ビデオを別のフォーマット(例えば、RGB4:4:4フォーマット、GBR4:4:4フォーマット、又はBGR4:4:4フォーマット)でエンコードすることができる。特に、画面コンテンツビデオは、RGB4:4:4フォーマット、GBR4:4:4フォーマット、又はBGR4:4:4フォーマットでエンコードされてもよい。
エンコーダ(340)は、選択されたピクチャ(331)をエンコードして、符号化されたピクチャ(341)を生成し、また、メモリ管理制御動作(「MMCO」)信号(342)又は参照ピクチャセット(「RPS」)情報を生成する。RPSは、現在ピクチャ又は任意の後続ピクチャに対する動き補償において参照のために使用されてもよい、ピクチャのセットである。現在ピクチャが、エンコードされている第1のピクチャでない場合、そのエンコーディング処理を実施するとき、エンコーダ(340)は、デコード済みピクチャ一時メモリ記憶エリア(360)に記憶されている1つ以上の事前にエンコードされ/デコードされたピクチャ(369)を使用してもよい。かかる記憶されているエンコードされたピクチャ(369)は、現在のソースピクチャ(331)のコンテンツをピクチャ間(inter-picture)予測するための参照ピクチャとして使用される。MMCO/RPS情報(342)は、デコーダに対して、どの再構成されたピクチャが参照ピクチャとして使用されてもよく、従ってピクチャ記憶エリアに記憶されるべきであるかを示す。
一般に、エンコーダ(340)は、タイルへの区分化、ピクチャ内予測推定及び予測、動き推定及び補償、周波数変換、量子化、並びにエントロピー符号化などのエンコーディングタスクを実施する複数のエンコーディングモジュールを含む。エンコーダ(340)によって実施される正確な動作は、圧縮フォーマットに依存して変動し得る。出力されるエンコードされたデータのフォーマットは、H.265/HEVCフォーマット、ウィンドウズ(登録商標)メディアビデオフォーマット、VC−1フォーマット、MPEG−xフォーマット(例えば、MPEG−1、MPEG−2、若しくはMPEG−4)、H.26xフォーマット(例えば、H.261、H.262、H.263、H.264)、又は別のフォーマットの変形若しくは拡張であり得る。
エンコーダ(340)は、ピクチャを同じサイズ又は異なるサイズの複数のタイルへと区分することができる。例えば、エンコーダ(340)は、ピクチャ境界と共にピクチャ内のタイルの水平及び垂直方向の境界を画成する、タイル行及びタイル列に沿ってピクチャを分割し、各タイルは長方形領域である。タイルは、並列処理に関する選択肢を提供するのに使用される場合が多い。ピクチャはまた、1つ以上のスライスとして編成することができ、スライスはピクチャ全体又はピクチャのセクションであることができる。スライスは、ピクチャ内の他のスライスとは独立してデコードすることができ、それによって誤り耐性が改善される。スライス又はタイルのコンテンツは、エンコーディング及びデコーディングの目的のため、サンプル値のブロック又は他のセットへと更に区分される。特定ブロックの行(例えば、H.265/HEVC規格に従ったスライスの符号化ツリーユニットの行)を、以下で更に説明するように、WPPを使用して並列してエンコードすることができる。
H.265/HEVC規格に従ったシンタックスの場合、エンコーダは、ピクチャ(又はスライス若しくはタイル)のコンテンツを符号化ツリーユニットへと分割する。符号化ツリーユニット(「CTU」)は、ルマ符号化ツリーブロック(「CTB」)として編成されるルマサンプル値と、それに対応する、2つのクロマCTBとして編成されるクロマサンプル値とを含む。CTU(及びそのCTB)のサイズはエンコーダによって選択される。ルマCTBは、例えば、64×64、32×32、又は16×16のルマサンプル値を含むことができる。CTUは1つ以上の符号化ユニットを含む。符号化ユニット(「CU」)は、ルマ符号化ブロック(「CB」)及び2つの対応するクロマCBを有する。例えば、64×64ルマCTB及び2つの64×64クロマCTBを有するCTU(YUV4:4:4フォーマット)を、4つのCUへと分割することができ、各CUは、32×32ルマCB及び2つの32×32クロマCBを含み、各CUは、場合によってはより小さいCUへと更に分割される。或いは、別の例として、64×64ルマCTB及び2つの32×32クロマCTBを有するCTU(YUV4:2:0フォーマット)を、4つのCUへと分割することができ、各CUは、32×32ルマCB及び2つの16×16クロマCBを含み、各CUは、場合によってはより小さいCUへと更に分割される。CUの最小許容可能サイズ(例えば、8×8、16×16)がビットストリーム内で信号伝達されることができる。
一般に、CUはインター又はイントラなどの予測モードを有する。CUは、予測情報(予測モード詳細、変位値など)の信号伝達、及び/又は予測処理の目的で、1つ以上の予測ユニットを含む。予測ユニット(「PU」)は、ルマ予測ブロック(「PB」)及び2つのクロマPBを有する。H.265/HEVC規格に従って、イントラ予測されるCUの場合、CUが最小サイズ(例えば、8×8)を有さない限り、PUはCUと同じサイズを有する。その場合、CUは4つのより小さいPUへと分割することができ(例えば、ピクチャ内予測での最小CUサイズが8×8の場合、それぞれ4×4)、又はPUは、CUのシンタックス要素によって示されるように、最小CUサイズを有することができる。しかしながら、イントラBC予測で使用される対称又は非対称区分化の場合、より大きいCUを複数のPUへと分割することができる。
CUは、残差のコーディング/デコーディングを目的とする1つ以上の変換ユニットをさらに有し、その場合、変換ユニット(「TU」)はルマ変換ブロック(「TB」)及び2つのクロマTBを有する。イントラ予測CUのPUは、単一のTU(PUにサイズが等しい)又は複数のTUを含んでもよい。エンコーダは、ビデオをどのようにして、CTU、CU、PU、TUなどへと区分するかを決める。
H.265/HEVCの実装では、スライスは、単一のスライスセグメント(独立スライスセグメント)を含むことができ、又は複数のスライスセグメント(独立スライスセグメント及び1つ以上の従属スライスセグメント)へと分けることができる。スライスセグメントは、タイルスキャンにおいて連続して順序付けられた整数のCTUであり、単一のネットワーク抽象化レイヤ(「NAL」)ユニットに含まれる。独立スライスセグメントの場合、スライスセグメントヘッダが、独立スライスセグメントに該当するシンタックス要素の値を含む。従属スライスセグメントの場合、切り詰められたスライスセグメントヘッダが、その従属スライスセグメントに該当するシンタックス要素のいくつかの値を含み、従属スライスセグメントに対する他のシンタックス要素の値は、デコーディング順序において前の独立スライスセグメントの値から推論される。
本明細書で使用するとき、「ブロック」という用語は、文脈に応じて、マクロブロック、残差データユニット、CB、PB、若しくはTB、又は他の何らかのサンプル値のセットを示すことができる。「ユニット」という用語は、文脈に応じて、マクロブロック、CTU、CU、PU、TU、又は他の何らかのブロックのセットを示すことができ、或いは単一のブロックを示すことができる。
図3に戻ると、エンコーダは、ソースピクチャ(331)のイントラ符号化されたブロック、ライン、又はストリングを、そのピクチャ(331)における他の事前に再構成されたサンプル値からの予測という観点で表す。イントラコピー予測の場合、ピクチャ内推定器が、現在のブロック、ライン、又はストリングから、他の事前に再構成されたサンプル値における位置への変位を推定する。ピクチャ内のサンプル値の参照ブロック、ライン、又はストリングが、現在のブロック、ライン、又はストリングに対する予測値を作り出すのに使用される。例えば、イントラブロックコピー(「BC」)予測の場合、ピクチャ内推定器が、現在のブロックから、ピクチャ内の事前に再構成されたサンプル値におけるある位置への変位を推定する。参照ブロックが、現在のブロックに対するBC予測値を提供する、ピクチャ内のサンプル値のブロックである。参照ブロックは、ブロックベクトル(「BV」)値(BV推定で決定される)で示すことができる。別の例として、イントララインコピー(「LC」)予測の場合、ピクチャ内推定器が、(現在のブロックの)現在のラインから、ピクチャ内の事前に再構成されたサンプル値におけるある位置への変位を推定する。参照ラインが、現在のラインに対するLC予測値を提供する、ピクチャ内のサンプル値のラインである。参照ラインは、現在のラインから参照ラインへの変位を示すオフセット値で示すことができる。別の例として、イントラストリングコピー(「SC」)予測の場合、ピクチャ内推定器が、(現在のブロックの)現在のストリングから、ピクチャ内の事前に再構成されたサンプル値におけるある位置への変位を推定する。参照ストリングが、現在のストリングに対するSC予測値を作り出すのに使用される、ピクチャ内の一連のサンプル値である。参照ストリングは、オフセット値(現在のストリングから参照ストリングへの変位を示す)、及びストリング長さ値で示すことができる。実装に依存して、エンコーダは、入力されたサンプル値又は再構成されたサンプル値(同じピクチャの事前にエンコードされたサンプル値)を使用して、ブロック、ライン、又はストリングのオフセット推定を実施することができる。WPPが使用可能にされると、ピクチャ内推定器は、後述するように、参照領域の場所に対する制約と整合する変位(例えば、イントラBC予測のBV値に対して、又はイントラSC予測若しくはイントラLC予測のオフセット値に対して)を決定することができる。
ブロックに対するイントラ空間予測の場合、ピクチャ内推定器は、隣接する再構成されたサンプル値のブロックへの補外を推定する。
ピクチャ内推定器は、予測情報(イントラBC予測に対するBV値、イントラLC予測若しくはイントラSC予測に対するオフセット値、又はイントラ空間予測に対する予測モード(方向))を出力することができ、これはエントロピー符号化される。ピクチャ内予測予測器が、予測情報を適用してイントラ予測値を決定する。
パレット符号化モード(palette coding mode)の場合、エンコーダ(340)は、CU、又はパレットを使用する他のユニットの、サンプル値の少なくとも一部を表現する。パレットは、ユニットで使用される色を表す。例えば、パレットは、インデックス値0、1、2、…、pを対応する色に対してマッピングする。ユニットをエンコードする間、適切なインデックス値が、ユニット内の位置におけるサンプル値に取って代わる(replace)。ユニット内のレア値は、パレットのインデックス値を使用する代わりに、エスケープコード値及びリテラル値を使用してエンコードすることができる。パレットはユニット毎に変更することができ、パレットを指定する情報はビットストリーム内で信号伝達することができる。
エンコーダ(340)は、参照ピクチャからの予測という点で、ソースピクチャ(331)のピクチャ間符号化された予測ブロックを表す。動き推定器が、1つ以上の参照ピクチャ(369)に対するブロックの動きを推定する。複数の参照ピクチャが使用される場合、複数の参照ピクチャは、異なる時間方向又は同じ時間方向からのものであり得る。動き補償された予測参照領域が、現在ピクチャのサンプル値のブロックに対して動き補償された予測値を作り出すのに使用される、参照ピクチャ内のサンプル値の領域である。動き推定器は、動きベクトル(「MV」)情報などの動き情報を出力し、これはエントロピー符号化される。動き補償器は、MVを参照ピクチャ(369)に適用して、ピクチャ間予測に対する動き補償された予測値を決定する。
エンコーダは、ブロックの予測値(イントラ又はインター)と対応する元の値との間の差(ある場合)を決定することができる。これらの予測残差値は、周波数変換(周波数変換がスキップされない場合)、量子化、及びエントロピーエンコーディングを使用して更にエンコードされる。例えば、エンコーダ(340)は、ピクチャ、タイル、スライス、及び/又はビデオの他の部分に対する量子化パラメータ(「QP」)の値を設定し、変換係数を適宜量子化する。エンコーダ(340)のエントロピー符号器は、量子化された変換係数値、並びに特定のサイド情報(例えば、MV情報、BV情報、QP値、モード判断、パラメータ選択)を圧縮する。典型的なエントロピー符号化技術としては、指数ゴロム符号化、ゴロムライス符号化、算術符号化、差分符号化、ハフマン符号化、ランレングス符号化、可変長対可変長(「V2V」)符号化、可変長対固定長(「V2F」)符号化、レンペルジブ(「LZ」)符号化、辞書符号化、確率区間区分エントロピー符号化(「PIPE」)、及び上記の組み合わせが挙げられる。エントロピー符号器は、異なる種類の情報に対して異なる符号化技術を使用することができ、複数の技術を組み合わせて適用することができ(例えば、ゴロムライス符号化の後に算術符号化を適用することによる)、特定の符号化技術内の複数のコードテーブルの中から選ぶことができる。いくつかの実装では、周波数変換はスキップすることができる。この場合、予測残差値を量子化しエントロピー符号化することができる。パレット符号化モードが使用される場合、エントロピー符号器はパレットデータをエンコードすることができる。エンコーダ(340)は、後述するようにパレット予測を使用することができる。
適応デブロッキングフィルタが、エンコーダ(340)の動き補償ループ内に含まれて(即ち、「インループ」フィルタリング)、デコードされたピクチャにおけるブロック境界の行及び/又は列にわたる不連続性を平滑化する。その代わりに、又はそれに加えて、他のフィルタリング(デリンギングフィルタリング、適応ループフィルタリング(「ALF」)、又はサンプル適応オフセット(「SAO」)フィルタリングなど、図示なし)を、インループフィルタリング動作として適用することができる。
エンコーダ(340)によって生成されるエンコードされたデータは、ビットストリームシンタックスの様々なレイヤに対するシンタックス要素を含む。H.265/HEVC規格に従ったシンタックスの場合、例えば、ピクチャパラメータセット(「PPS」)が、ピクチャに関連付けられてもよいシンタックス要素を含むシンタックス構造である。PPSは単一のピクチャに使用することができ、又はPPSは、シーケンス内の複数ピクチャに対して再使用することができる。PPSは、典型的に、ピクチャに対するエンコードされたデータとは別個で信号伝達される(例えば、PPSに対する1つのネットワーク抽象化レイヤ(「NAL」)ユニット、及びピクチャのエンコードされたデータに対する1つ以上の他のNALユニット)。ピクチャのエンコードされたデータ内において、シンタックス要素が、どのPPSをピクチャに使用するかを示す。同様に、H.265/HEVC規格に従ったシンタックスの場合、シーケンスパラメータセット(「SPS」)が、ピクチャのシーケンスに関連付けられてもよいシンタックス要素を含むシンタックス構造である。ビットストリームは単一のSPS又は複数のSPSを含むことができる。SPSは、典型的に、シーケンスに対する他のデータとは別個で信号伝達され、他のデータ内のシンタックス要素が、どのSPSを使用するかを示す。
符号化されたピクチャ(341)及びMMCO/RPS情報(342)(又は、ピクチャに対する依存関係及び順序構造がエンコーダ(340)で既に知られていることによる、MMCO/RPS情報(342)と等価の情報)は、デコーディング処理エミュレータ(350)によって処理される。デコーディング処理エミュレータ(350)は、デコーダの機能性の一部、例えば、参照ピクチャを再構成するデコーディングタスクを実現する。MMCO/RPS情報(342)と整合する仕方で、デコーディング処理エミュレータ(350)は、エンコードされる後続ピクチャのピクチャ間予測における参照ピクチャとして使用するために、所与の符号化されたピクチャ(341)が再構成され記憶される必要があるか否かを決定する。符号化されたピクチャ(341)が記憶される必要がある場合、デコーディング処理エミュレータ(350)は、符号化されたピクチャ(341)を受信し、対応するデコードされたピクチャ(351)を生成するデコーダによって行われるであろうデコーディング処理を、モデル化する。それを行う際、エンコーダ(340)が、デコード済みピクチャ記憶エリア(360)に記憶されているデコードされたピクチャ(369)を使用している場合、デコーディング処理エミュレータ(350)は、記憶エリア(360)からのデコードされたピクチャ(369)をデコーディング処理の一部としてさらに使用する。
デコード済みピクチャ一時メモリ記憶エリア(360)は、複数のピクチャバッファ記憶エリア(361、362、…、36n)を含む。MMCO/RPS情報(342)と整合する仕方で、デコーディング処理エミュレータ(350)は、記憶エリア(360)のコンテンツを管理して、エンコーダ(340)による参照ピクチャとしての使用にもはや必要とされないピクチャを有する任意のピクチャバッファ(361、362など)を識別する。デコーディング処理のモデル化の後、デコーディング処理エミュレータ(350)は、このようにして識別されたピクチャバッファ(361、362など)に、新たにデコードされたピクチャ(351)を記憶する。
符号化されたピクチャ(341)及びMMCO/RPS情報(342)は、一時符号化済みデータエリア(370)にバッファされる。符号化済みデータエリア(370)に集約される符号化されたデータは、基本の符号化されたビデオビットストリームのシンタックスの一部として、1つ以上のピクチャに対するエンコードされたデータを含む。符号化済みデータエリア(370)に集約される符号化されたデータは、符号化されたビデオデータに関連するメディアメタデータを(例えば、1つ以上の付加拡張情報(「SEI」)メッセージ又はビデオユーザビリティ情報(「VUI」)メッセージにおける1つ以上のパラメータとして)さらに含むことができる。
一時符号化済みデータエリア(370)からの集約されたデータ(371)は、チャネルエンコーダ(380)によって処理される。チャネルエンコーダ(380)は、集約されたデータを伝送又は記憶のためにメディアストリームとして(例えば、ITU−T H.222.0|ISO/IEC 13818−1などのメディアプログラムストリーム若しくはトランスポートストリームフォーマット、又はIETF RFC 3550などのインターネットリアルタイムトランスポートプロトコルフォーマットに従って)パケット化及び/又は多重化することができ、その場合、チャネルエンコーダ(380)は、シンタックス要素をメディア伝送ストリームのシンタックスの一部として追加することができる。或いは、チャネルエンコーダ(380)は、集約されたデータをファイルとしての記憶のために(例えば、ISO/IEC 14496−12などのメディアコンテナフォーマットに従って)編成することができ、その場合、チャネルエンコーダ(380)は、シンタックス要素をメディア記憶ファイルのシンタックスの一部として追加することができる。或いは、より一般には、チャネルエンコーダ(380)は、1つ以上のメディアシステム多重化プロトコル又はトランスポートプロトコルを実現することができ、その場合、チャネルエンコーダ(380)は、シンタックス要素をプロトコルのシンタックスの一部として追加することができる。チャネルエンコーダ(380)は、チャネル(390)に対する出力を提供し、該チャネルは、記憶装置、通信接続、又は出力のための別のチャネルを表す。チャネルエンコーダ(380)又はチャネル(390)は、例えば、前方誤り訂正(「FEC」)エンコーディング及びアナログ信号変調のための、他の要素(図示なし)をさらに含んでもよい。
IV.例示的なデコーダシステム
図4は、記載するいくつかの実施形態が併せて実現されてもよい、例示的なデコーダシステム(400)のブロック図である。デコーダシステム(400)は、リアルタイム通信向けの低レイテンシデコーディングモード、及びファイル若しくはストリームからのメディア再生向けのより高いレイテンシのデコーディングモードなど、複数のデコーディングモードのいずれかで動作することができる、汎用デコーディングツールであることができ、又は1つのかかるデコーディングモードに適合された専用デコーディングツールであることができる。デコーダシステム(400)は、オペレーティングシステムモジュールの一部として、アプリケーションライブラリの一部として、スタンドアロン型アプリケーションの一部として、又は専用ハードウェアを使用して実現することができる。概して、デコーダシステム(400)は、符号化されたデータをチャネル(410)から受信し、再構成されたピクチャを出力先(490)に対する出力として生成する。受信するエンコードされたデータは、WPPが使用可能にされるときにピクチャ内予測モードに対して強制される規則を使用してエンコードされたコンテンツを含むことができる。
デコーダシステム(400)は、チャネル(410)を含み、該チャネルは、記憶装置、通信接続、又は入力としての符号化されたデータに対する別のチャネルを表すことができる。チャネル(410)は、チャネル符号化されている符号化されたデータを生成する。チャネルデコーダ(420)は、符号化されたデータを処理することができる。例えば、チャネルデコーダ(420)は、(例えば、ITU−T H.222.0|ISO/IEC 13818−1などのメディアプログラムストリーム若しくはトランスポートストリームフォーマット、又はIETF RFC 3550などのインターネットリアルタイムトランスポートプロトコルフォーマットに従って)伝送又は記憶のためにメディアストリームとして集約されているデータをパケット化解除し(de-packetizes)及び/又は多重分離し(demultiplexes)、その場合、チャネルデコーダ(420)は、メディア伝送ストリームのシンタックスの一部として追加されたシンタックス要素を構文解析する(parse)ことができる。或いは、チャネルデコーダ(420)は、(例えば、ISO/IEC 11496−12などのメディアコンテナフォーマットに従って)記憶のためにファイルとして集約されている符号化されたビデオデータを分離し、その場合、チャネルデコーダ(420)は、メディア記憶ファイルのシンタックスの一部として追加されたシンタックス要素を構文解析することができる。或いは、より一般には、チャネルデコーダ(420)は、1つ以上のメディアシステム多重分離プロトコル又はトランスポートプロトコルを実現することができ、その場合、チャネルデコーダ(420)は、プロトコルのシンタックスの一部として追加されたシンタックス要素を構文解析することができる。チャネル(410)又はチャネルデコーダ(420)は、例えば、FECデコーディング及びアナログ信号変調のための、他の要素(図示なし)をさらに含んでもよい。
チャネルデコーダ(420)から出力される符号化されたデータ(421)は、十分な量のかかるデータが受信されるまで、一時符号化済みデータエリア(430)に記憶される。符号化されたデータ(421)は、符号化されたピクチャ(431)及びMMCO/RPS情報(432)を含む。符号化済みデータエリア(430)の符号化されたデータ(421)は、基本の符号化されたビデオビットストリームのシンタックスの一部として、1つ以上のピクチャに対する符号化されたデータを含む。符号化済みデータエリア(430)の符号化されたデータ(421)は、エンコードされたビデオデータに関連するメディアメタデータを(例えば、1つ以上のSEIメッセージ又はVUIメッセージにおける1つ以上のパラメータとして)さらに含むことができる。
一般に、符号化済みデータエリア(430)は、符号化されたデータ(421)がデコーダ(450)によって使用されるまで、かかる符号化されたデータ(421)を一時的に記憶する。その時点で、符号化されたピクチャ(431)及びMMCO/RPS情報(432)に対する符号化されたデータは、符号化済みデータエリア(430)からデコーダ(450)に転送される。デコーディングが続くにつれて、新しい符号化されたデータが符号化済みデータエリア(430)に追加され、符号化済みデータエリア(430)に残っている最も古い符号化されたデータがデコーダ(450)に転送される。
デコーダ(450)は、符号化されたピクチャ(431)をデコードして、対応するデコードされたピクチャ(451)を生成する。ピクチャは、同じサイズ又は異なるサイズの複数のタイルへと区分することができる。ピクチャはまた、1つ以上のスライスとして編成することができる。スライス又はタイルのコンテンツは、サンプル値のブロック又は他のセットへと更に区分することができる。WPPが使用可能な状態で(WPPを使用して、或いはデコーディングの間WPPを使用するのと整合した仕方で)ピクチャがエンコードされた場合、更に後述するように、特定ブロックの行(例えば、H.265/HEVC規格に従ったCTUの行)を、WPPを使用して並列してデコードすることができる。
必要に応じて、デコーダ(450)は、そのデコード処理を実施しているとき、1つ以上の事前にデコードされたピクチャ(469)をピクチャ間予測の参照ピクチャとして使用してもよい。デコーダ(450)は、かかる事前にデコードされたピクチャ(469)を、デコード済みピクチャ一時メモリ記憶エリア(460)から読み出す。一般に、デコーダ(450)は、エントロピーデコーディング、ピクチャ内予測、動き補償されたピクチャ間予測、逆量子化、逆周波数変換(スキップしない場合)、及びタイルのマージなどのデコーディングタスクを実施する、複数のデコーディングモジュールを含む。デコーダ(450)によって実施される正確な動作は、圧縮フォーマットに依存して変動し得る。
例えば、デコーダ(450)は、圧縮されたピクチャ又はピクチャのシーケンスに対するエンコードされたデータを受信し、デコードされたピクチャ(451)を含む出力を生成する。デコーダ(450)では、バッファが、圧縮されたピクチャに対するエンコードされたデータを受信し、適時に、受信したエンコードされたデータをエントロピーデコーダに対して利用可能にする。エントロピーデコーダは、エントロピー符号化された量子化されたデータ並びにエントロピー符号化されたサイド情報をエントロピーデコードし、典型的に、エンコーダで実施されるエントロピーエンコーディングの逆を適用する。パレットデコーディングモード(palette decoding mode)が使用される場合、エントロピーデコーダはパレットデータをデコードすることができる。デコーダ(450)は、後述するようにパレット予測を使用することができる。
動き補償器が、動き情報を1つ以上の参照ピクチャに適用して、再構成されているピクチャの任意のインター符号化されたブロックに対して動き補償された予測値を形成する。ピクチャ内予測モジュールが、隣接する事前再構成されたサンプル値から、現在のブロックのサンプル値を空間予測することができる。或いは、イントラBC予測、イントラLC予測、又はイントラSC予測の場合、ピクチャ内予測モジュールは、変位値で示されるピクチャの参照ブロック、ライン、又はストリングの事前に再構成されたサンプル値を使用して、現在のブロック、ライン、又はストリングのサンプル値を予測することができる。具体的には、参照ブロック/ライン/ストリングは、BV値(イントラBC予測の場合)、オフセット値(イントラLC予測の場合)、又はオフセット値及びストリング長さ値(イントラSC予測の場合)を用いて示すことができる。WPPが使用可能にされると、変位(例えば、イントラBC予測のBV値に対して、又はイントラSC予測若しくはイントラLC予測のオフセット値に対して)は、後述するように、参照領域の場所に対する制約と整合する。
デコーダ(450)はさらに、予測残差値を再構成する。逆量子化器が、エントロピーデコードされたデータを逆量子化する。例えば、デコーダ(450)は、ビットストリーム内のシンタックス要素に基づいて、ピクチャ、タイル、スライス、及び/又はビデオの他の部分に対するQPの値を設定し、変換係数を適宜逆量子化する。逆周波数変換器が、量子化された周波数ドメインデータを空間ドメインデータへとコンバートする。いくつかの実装では、周波数変換をスキップすることができ、その場合、逆周波数変換もスキップされる。その場合、予測残差値をエントロピーデコードし、逆量子化することができる。ピクチャ間予測されたブロックに対して、デコーダ(450)は、再構成した予測残差値を動き補償された予測値と組み合わせる。デコーダ(450)は、同様に、予測残差値をピクチャ内予測からの予測値と組み合わせることができる。
パレットデコーディングモードの場合、デコーダ(450)は、CU又は他のユニットのサンプル値の少なくとも一部を表すパレットを使用する。パレットは、インデックス値を対応する色に対してマッピングする。デコーディングの間、ユニット内の位置に関して、パレットからのインデックス値が適切なサンプル値で置き換えられる(replaced)。ユニットのエスケープ符号化値が、エスケープコード値及びリテラル値を使用してデコードされることができる。パレットはユニット毎に変更することができ、パレットを指定する情報はビットストリーム内で信号伝達することができる。
適応デブロッキングフィルタが、ビデオデコーダ(450)の動き補償ループ内に含まれて、デコードされたピクチャ(451)におけるブロック境界の行及び/又は列にわたる不連続性を平滑化する。その代わりに、又はそれに加えて、他のフィルタリング(デリンギングフィルタリング、ALF、又はSAOフィルタリングなど、図示なし)を、インループフィルタリング動作として適用することができる。
デコード済みピクチャ一時メモリ記憶エリア(460)は、複数のピクチャバッファ記憶エリア(461、462、…、46n)を含む。デコード済みピクチャ記憶エリア(460)は、デコード済みピクチャバッファの一例である。デコーダ(450)は、MMCO/RPS情報(432)を使用して、デコードされたピクチャ(451)を記憶することができるピクチャバッファ(461、462など)を識別する。デコーダ(450)は、デコードされたピクチャ(451)を上記ピクチャバッファに記憶する。
出力シーケンサ(480)は、出力順序で生成される次のピクチャがデコード済みピクチャ記憶エリア(460)においていつ利用可能であるかを識別する。出力順序で生成される次のピクチャ(481)がデコード済みピクチャ記憶エリア(460)で利用可能になると、出力シーケンサ(480)によって読み出され、出力先(490)(例えば、ディスプレイ)に出力される。一般に、出力シーケンサ(480)によってピクチャがデコード済みピクチャ記憶エリア(460)から出力される順序は、ピクチャがデコーダ(450)によってデコードされる順序とは異なってもよい。
V.例示的なビデオエンコーダ
図5a及び図5bは、記載するいくつかの実施形態が併せて実現されてもよい、一般化されたビデオエンコーダ(500)のブロック図である。エンコーダ(500)は、現在ピクチャを含むビデオピクチャのシーケンスを入力ビデオ信号(505)として受信し、出力として符号化されたビデオビットストリーム(595)におけるエンコードされたデータを生成する。
エンコーダ(500)はブロックベースであり、実装に依存するブロックフォーマットを使用する。ブロックは、異なる段階で、例えば予測、周波数変換、及び/又はエントロピーエンコーディングの段階で、更に細分されてもよい。例えば、ピクチャを、64×64ブロック、32×32ブロック、又は16×16ブロックに分けることができ、それを次に、コーディング及びデコーディングのため、サンプル値のより小さいブロックに分けることができる。H.265/HEVC規格に対するエンコーディングの実装では、エンコーダは、ピクチャをCTU(CTB)、CU(CB)、PU(PB)、及びTU(TB)へと区分する。
エンコーダ(500)は、ピクチャ内符号化及び/又はピクチャ間符号化を使用してピクチャを圧縮する。エンコーダ(500)のコンポーネントの多くは、ピクチャ内符号化及びピクチャ間符号化の両方に使用される。それらのコンポーネントによって実施される正確な動作は、圧縮される情報のタイプに依存して変動し得る。
タイル化モジュール(510)が、場合により、ピクチャを同じサイズ又は異なるサイズの複数のタイルへと区分する。例えば、タイル化モジュール(510)は、ピクチャ境界と共にピクチャ内のタイルの水平及び垂直方向の境界を画成する、タイル行及びタイル列に沿ってピクチャを分割し、各タイルは長方形領域である。H.265/HEVCの実装では、エンコーダ(500)は、ピクチャを1つ以上のスライスへと区分し、各スライスは1つ以上のスライスセグメントを含む。特定ブロックの行(例えば、H.265/HEVC規格に従ったスライスのCTUの行)が、より詳細に後述するように、WPPを使用して並列してエンコードされることができる。
一般エンコーディング制御(520)が、入力ビデオ信号(505)に対するピクチャ、並びにエンコーダ(500)の様々なモジュールからのフィードバック(図示なし)を受信する。概して、一般エンコーディング制御(520)は、制御信号(図示なし)を他のモジュール(タイル化モジュール(510)、変換器/スケーラ/量子化器(530)、スケーラ/逆変換器(535)、ピクチャ内推定器(540)、動き推定器(550)、及びイントラ/インタースイッチなど)に提供して、エンコーディングの間の符号化パラメータを設定し、変更する。特に、一般エンコーディング制御(520)は、エンコードする間、パレット予測、イントラBC予測、イントラLC予測、及びイントラSC予測を使用するか否か、またどのように使用するかを判断することができる。一般エンコーディング制御(520)はまた、エンコーディングの間の中間結果を評価して、例えば、レートひずみ解析を実施することができる。一般エンコーディング制御(520)は、エンコーディングの間に行われた判断を示す一般制御データ(522)を生成し、そのため、対応するデコーダが整合した判断を行うことができる。一般制御データ(522)は、ヘッダフォーマッタ/エントロピー符号器(590)に提供される。
現在ピクチャがピクチャ間予測を使用して予測される場合、動き推定器(550)が、1つ以上の参照ピクチャに対する入力ビデオ信号(505)の現在ピクチャのサンプル値のブロックの動きを推定する。デコード済みピクチャバッファ(570)が、参照ピクチャとして使用するため、1つ以上の再構成された事前符号化されたピクチャをバッファする。複数の参照ピクチャが使用される場合、複数の参照ピクチャは、異なる時間方向又は同じ時間方向からのものであり得る。動き推定器(550)は、サイド情報として、MVデータ、マージモードインデックス値、及び参照ピクチャ選択データなどの動きデータ(552)を生成する。動きデータ(552)は、ヘッダフォーマッタ/エントロピー符号器(590)、並びに動き補償器(555)に提供される。
動き補償器(555)は、MVを、デコード済みピクチャバッファ(570)からの再構成された参照ピクチャに適用する。動き補償器(555)は、現在ピクチャに対する動き補償された予測を生成する。
エンコーダ(500)内の別個の経路において、ピクチャ内推定器(540)は、入力ビデオ信号(505)の現在ピクチャのサンプル値のブロックに対して、ピクチャ内予測をどのように実施するかを決定する。現在ピクチャは、ピクチャ内符号化を使用して、全体的又は部分的に符号化することができる。現在ピクチャの再構成(538)の値を使用して、イントラ空間予測に関して、ピクチャ内推定器(540)は、現在ピクチャの隣接する事前再構成されたサンプル値から、現在ピクチャの現在のブロックのサンプル値をどのように空間予測するかを決定する。
或いは、イントラコピー予測の場合、ピクチャ内推定器(540)は、現在のブロック、ライン、又はストリングから、他の事前に再構成されたサンプル値における位置への変位を推定する。ピクチャにおけるサンプル値の参照ブロック、ライン、又はストリングが、現在のブロック、ライン、又はストリングに対する予測値を作り出すのに使用される。例えば、イントラBC予測の場合、ピクチャ内推定器(540)は、BV値を用いて示すことができる、現在のブロックから参照ブロックへの変位を推定する。別の例として、イントラLC予測の場合、ピクチャ内推定器(540)は、(現在のラインから参照ラインへの変位を示す)オフセット値を用いて示すことができる、(現在のブロックの)現在のラインから参照ラインへの変位を推定する。別の例として、イントラSC予測の場合、ピクチャ内推定器は、(現在のストリングから参照ストリングへの変位を示す)オフセット値とストリング長さ値とを用いて示すことができる、(現在のブロックの)現在のストリングから参照ストリングへの変位を推定する。WPPが使用可能にされると、ピクチャ内推定器(540)は、後述するように、参照領域の場所に対する制約と整合する、(例えば、イントラBC予測におけるBV値の場合、又はイントラSC予測若しくはイントラLC予測におけるオフセット値の場合の)変位を決定することができる。
実装に応じて、ピクチャ内推定器(540)は、入力サンプル値、インループフィルタリング前の再構成されたサンプル値、又はインループフィルタリング後の再構成されたサンプル値を使用して、現在のブロック、ライン、又はストリングに対するオフセット推定を実施することができる。一般に、オフセット推定に対する入力サンプル値又はフィルタされていない再構成されたサンプル値を使用することによって、ピクチャ内推定器(540)は、(オフセット推定/イントラコピー予測の前に、参照ブロック、ライン、ストリングなどの再構成されたサンプル値をフィルタリングすることから生じることがある)連続処理のボトルネックを回避することができる。他方で、フィルタされていない再構成されたサンプル値の記憶には追加のメモリを使用する。また、オフセット推定の前にインループフィルタリングが適用される場合、現在のブロック/ライン/ストリングがデコードされた後で適用されるフィルタリング処理と、オフセット推定/イントラコピー予測に使用されている領域との間で重なり合う影響領域があり得る。かかる事例では、オフセット推定/イントラコピー予測は、フィルタリング動作のその局面の前に適用されることになる。いくつかの実装では、エンコーダは、オフセット推定/イントラコピー予測の前にいくつかのインループフィルタリング動作を適用し、後の処理段階で追加の又は代替のフィルタリングを実施することができる。
ピクチャ内推定器(540)は、サイド情報としてイントラ予測データ(542)を生成し、該データは、例えば、イントラ予測が空間予測、イントラBC予測、イントラLC予測、又はイントラSC予測を使用するかどうか、予測モード方向(イントラ空間予測の場合)、BV値(イントラBC予測の場合)、オフセット値(イントラLC予測の場合)、又はオフセット値及び長さ値(イントラSC予測の場合)を示す情報などである。イントラ予測データ(542)は、ヘッダフォーマッタ/エントロピー符号器(590)、並びにピクチャ内予測器(545)に提供される。
イントラ予測データ(542)に従って、ピクチャ内予測器(545)は、現在ピクチャの現在のブロックのサンプル値を、現在ピクチャの隣接する事前再構成されたサンプル値から空間予測する。或いは、イントラコピー予測の場合、ピクチャ内予測器(545)は、現在のブロック、ライン、ストリングなどに対する変位(BV値、オフセット値など)によって示される、参照ブロック、ライン、ストリング、又は他のセクションの事前に再構成されたサンプル値を使用して、現在のブロック、ライン、ストリング、又は他のセクションのサンプル値を予測する。いくつかの事例では、BV値(又は他のオフセット値)は予測値であることができる。他の事例では、BV値(又は他のオフセット値)はその予測値とは異なることができ、その場合、差分は予測値とBV値(又は他のオフセット値)との差を示す。イントラSCモードの場合、ピクチャ内予測器(545)は、現在のストリングのサンプル値を予測するとき、ストリング長さ値をさらに使用する。
パレット符号化モードの場合、エンコーダ(500)は、パレットを使用してCU又は他のユニットのサンプル値の少なくとも一部を表す。パレットは、ユニットで使用される色を表す。例えば、パレットは、インデックス値0、1、2、…、pを対応する色に対してマッピングし、対応する色は、RGB4:4:4フォーマット、BGR4:4:4フォーマット、GBR4:4:4フォーマット、YUV4:4:4フォーマット、又は別のフォーマット(色空間、色サンプリングレート)であることができる。インデックス値が、ピクセルに対するRGBトリプレット、BGRトリプレット、又はGBRトリプレットを表すことができ、ピクセルは、コロケートされたサンプル値のセットである。ユニットのエンコーディングの場合、インデックス値が、ユニット内のピクセルのサンプル値に取って代わる。ユニットのレア値が、パレットのインデックス値を使用する代わりに、エスケープコード値及びリテラル値を使用してエンコードされることができる。パレットはユニット毎に変更することができ、パレットを指定するパレットデータはビットストリーム内で信号伝達することができる。
イントラ/インタースイッチは、所与のブロックに対する予測(558)が動き補償された予測になるか又はピクチャ内予測になるかを選択する。
いくつかの例示的な実装では、パレット符号化モード又はイントラコピーモード(イントラBC予測、イントラLC予測、若しくはイントラSC予測)でエンコードされるユニットに対して残差が算出されない。その代わりに、残差符号化はスキップされ、予測されたサンプル値が再構成されたサンプル値として使用される。
残差符号化がスキップされない場合、予測(558)のブロックと、それに対応する、入力ビデオ信号(505)の元の現在ピクチャの一部との間の差(ある場合)によって、残差(518)の値が提供される。現在ピクチャの再構成の間、残差値がエンコードされ/信号伝達されていると、再構成された残差値が予測(558)と組み合わされて、ビデオ信号(505)からの元のコンテンツの近似的又は正確な再構成(538)が生成される(不可逆圧縮では、一部の情報がビデオ信号(505)から失われる)。
残差符号化の一部として、変換器/スケーラ/量子化器(530)において、周波数変換がスキップされない場合、周波数変換器が、空間ドメインビデオ情報を周波数ドメイン(即ち、スペクトルの、変換)データへとコンバートする。ブロックベースのビデオ符号化の場合、周波数変換器は、離散コサイン変換(「DCT」)、その整数近似、又は別のタイプの前方ブロック変換(例えば、離散サイン変換若しくはその整数近似)を、予測残差データ(又は予測(558)がヌルの場合のサンプル値データ)のブロックに適用して、周波数変換係数のブロックを生成する。変換器/スケーラ/量子化器(530)は、可変ブロックサイズの変換を適用することができる。この場合、変換器/スケーラ/量子化器(530)は、どのブロックサイズの変換を現在のブロックの残差値に使用するかを決定することができる。スケーラ/量子化器は、変換係数をスケーリングし(scales)、量子化する。例えば、量子化器は、デッドゾーンスケーラ量子化を、ピクチャ毎の基準、タイル毎の基準、スライス毎の基準、ブロック毎の基準、周波数特異的な基準、又は他の基準で変動する量子化ステップサイズで、周波数ドメインデータに適用する。量子化された変換係数データ(532)が、ヘッダフォーマッタ/エントロピー符号器(590)に提供される。周波数変換がスキップされる場合、スケーラ/量子化器は、予測残差データ(又は予測(558)がヌルの場合のサンプル値データ)のブロックをスケーリングし、量子化して、ヘッダフォーマッタ/エントロピー符号器(590)に提供される量子化された値を生成することができる。
残差値を再構成するため、スケーラ/逆変換器(535)では、スケーラ/逆量子化器が、量子化された変換係数に対して逆スケーリング及び逆量子化を実施する。変換段階がスキップされていない場合、逆周波数変換器が逆周波数変換を実施して、再構成された予測残差値又はサンプル値のブロックを生成する。変換段階がスキップされている場合、逆周波数変換もスキップされる。この場合、スケーラ/逆量子化器は、予測残差データ(又はサンプル値データ)のブロックに対して逆スケーリング及び逆量子化を実施して、再構成された値を生成することができる。残差値がエンコードされ/信号伝達されている場合、エンコーダ(500)は、再構成された残差値を予測(558)の値(例えば、動き補償された予測値、ピクチャ内予測値)と組み合わせて、再構成(538)を形成する。残差値がエンコードされ/信号伝達されていない場合、エンコーダ(500)は予測(558)の値を再構成(538)として使用する。
ピクチャ内予測の場合、再構成(538)の値を、ピクチャ内推定器(540)及びピクチャ内予測器(545)にフィードバックすることができる。再構成(538)の値を、後続ピクチャの動き補償された予測に使用することができる。再構成(538)の値を更にフィルタリングすることができる。フィルタリング制御(560)が、ビデオ信号(505)の所与のピクチャに関して、再構成(538)の値に対するデブロックフィルタリング及びSAOフィルタリングをどのように実施するかを決定する。フィルタリング制御(560)はフィルタ制御データ(562)を生成し、それがヘッダフォーマッタ/エントロピー符号器(590)及びマージ器/フィルタ(565)に提供される。
マージ器/フィルタ(565)では、エンコーダ(500)は、異なるタイルからのコンテンツを、ピクチャの再構成されたバージョンにマージする。エンコーダ(500)は、フィルタ制御データ(562)及びフィルタ適応の規則に従って、デブロックフィルタリング及びSAOフィルタリングを選択的に実施して、ピクチャの境界にわたる不連続性を適応的に平滑化する。その代わりに、又はそれに加えて、他のフィルタリング(デリンギングフィルタリング又はALFなど、図示なし)を適用することができる。タイル境界は、エンコーダ(500)の設定に依存して、選択的にフィルタリングされるか又は全くフィルタリングされないことが可能であり、エンコーダ(500)は、符号化されたビットストリーム内にシンタックス要素を提供して、かかるフィルタリングが適用されたか否かを示してもよい。デコード済みピクチャバッファ(570)は、後続の動き補償された予測で使用するため、再構成された現在ピクチャをバッファする。
ヘッダフォーマッタ/エントロピー符号器(590)は、一般制御データ(522)、量子化された変換係数データ(532)、イントラ予測データ(542)、動きデータ(552)、及びフィルタ制御データ(562)をフォーマットし及び/又はエントロピー符号化する。動きデータ(552)の場合、ヘッダフォーマッタ/エントロピー符号器(590)はマージモードインデックス値を選択し、エントロピー符号化することができ、又は、デフォルトMV予測子が使用されることができる。場合によっては、ヘッダフォーマッタ/エントロピー符号器(590)はまた、(MV値のMV予測子に対する)MV値のMV差分を決定し、次いで、例えばコンテキスト適応バイナリ算術符号化を使用して、MV差分をエントロピー符号化する。イントラ予測データ(542)の場合、予測を使用してBV値(又は他のオフセット値)をエンコードすることができる。予測は、デフォルト予測子(例えば、1つ以上の隣接ブロックからのBV値若しくは他のオフセット値)を使用することができる。複数の予測子が可能な場合、予測子インデックスが、複数の予測子のうちどれをBV値(又は他のオフセット値)の予測に使用するかを示すことができる。ヘッダフォーマッタ/エントロピー符号器(590)は(イントラコピー予測に対する)予測子インデックス値を選択し、エントロピー符号化することができ、又は、デフォルト予測子が使用されることができる。場合によっては、ヘッダフォーマッタ/エントロピー符号器(590)はまた、(BV値若しくは他のオフセット値の予測子に対する)差分を決定し、次いで、例えばコンテキスト適応バイナリ算術符号化を使用して、差分をエントロピー符号化する。パレット符号化モードの場合、ヘッダフォーマッタ/エントロピー符号器(590)はパレットデータをエンコードすることができる。特に、ヘッダフォーマッタ/エントロピー符号器(590)は、後述するようにパレット予測を使用することができる。
ヘッダフォーマッタ/エントロピー符号器(590)は、符号化されたビデオビットストリーム(595)におけるエンコードされたデータを提供する。符号化されたビデオビットストリーム(595)のフォーマットは、H.265/HEVCフォーマット、ウィンドウズ(登録商標)メディアビデオフォーマット、VC−1フォーマット、MPEG−xフォーマット(例えば、MPEG−1、MPEG−2、若しくはMPEG−4)、H.26xフォーマット(例えば、H.261、H.262、H.263、H.264)、又は別のフォーマットの変形若しくは拡張であり得る。
実装及び所望される圧縮のタイプに応じて、エンコーダ(500)のモジュールを追加し、省略し、複数のモジュールへと分割し、他のモジュールと組み合わせ、かつ/あるいは同様のモジュールと置き換えることができる。代替実施形態では、異なるモジュール及び/又はモジュールの他の構成を有するエンコーダが、記載する技術の1つ以上を実施する。エンコーダの具体的な実施形態は、典型的に、エンコーダ(500)の変形又は補足されたバージョンを使用する。エンコーダ(500)内のモジュール間の図示される関係は、エンコーダ内の情報の一般的なフローを示し、他の関係は、簡潔さのために図示されない。
VI.例示的なビデオデコーダ
図6は、記載するいくつかの実施形態が併せて実現されてもよい、一般化されたデコーダ(600)のブロック図である。デコーダ(600)は、符号化されたビデオビットストリーム(605)におけるエンコードされたデータを受信し、再構成されたビデオ(695)のピクチャを含む出力を生成する。符号化されたビデオビットストリーム(605)のフォーマットは、H.265/HEVCフォーマット、ウィンドウズ(登録商標)メディアビデオフォーマット、VC−1フォーマット、MPEG−xフォーマット(例えば、MPEG−1、MPEG−2、若しくはMPEG−4)、H.26xフォーマット(例えば、H.261、H.262、H.263、H.264)、又は別のフォーマットの変形若しくは拡張であり得る。
ピクチャは、同じサイズ又は異なるサイズの複数のタイルとして編成することができる。ピクチャはまた、1つ以上のスライスとして編成することができる。スライス又はタイルのコンテンツは、サンプル値のブロック又は他のセットとして更に編成することができる。デコーダ(600)はブロックベースであり、実装に依存するブロックフォーマットを使用する。ブロックは、異なる段階で更に細分されてもよい。例えば、ピクチャを、64×64ブロック、32×32ブロック、又は16×16ブロックへと分けることができ、それを次に、サンプル値のより小さいブロックへと分けることができる。H.265/HEVC規格に対するデコーディングの実装では、ピクチャは、CTU(CTB)、CU(CB)、PU(PB)、及びTU(TB)へと区分される。WPPが使用可能な状態で(WPPを使用して、又はデコーディングの間WPPを使用するのと整合した仕方で)ピクチャがエンコードされた場合、更に後述するように、特定ブロックの行(例えば、H.265/HEVC規格に従ったCTUの行)を、WPPを使用して並列してデコードすることができる。
デコーダ(600)は、ピクチャ内デコーディング及び/又はピクチャ間デコーディングを使用してピクチャを伸張する。デコーダ(600)のコンポーネントの多くは、ピクチャ内デコーディング及びピクチャ間デコーディングの両方に使用される。それらのコンポーネントによって実施される正確な動作は、伸張される情報のタイプに依存して変動し得る。
バッファは、符号化されたビデオビットストリーム(605)におけるエンコードされたデータを受信し、受信したエンコードされたデータをパーサー/エントロピーデコーダ(610)に対して利用可能にする。パーサー/エントロピーデコーダ(610)は、エントロピー符号化されたデータをエントロピーデコードして、典型的に、エンコーダ(500)で実施したエントロピー符号化の逆を適用する(例えば、コンテキスト適応バイナリ算術デコーディング)。構文解析及びエントロピーデコーディングの結果として、パーサー/エントロピーデコーダ(610)は、一般制御データ(622)、量子化された変換係数データ(632)、イントラ予測データ(642)、動きデータ(652)、及びフィルタ制御データ(662)を生成する。イントラ予測データ(642)では、予測子インデックス値が信号伝達される場合、パーサー/エントロピーデコーダ(610)は、例えばコンテキスト適応バイナリ算術デコーディングを使用して、予測子インデックス値をエントロピーデコードすることができる。場合によっては、パーサー/エントロピーデコーダ(610)はまた、BV値又は他のオフセット値に対する差分を(例えば、コンテキスト適応バイナリ算術デコーディングを使用して)エントロピーデコードし、次いで、差分を対応する予測子と組み合わせて、BV値(又は他のオフセット値)を再構成する。他の事例では、差分はビットストリームから省略され、BV値(又は他のオフセット値)は単に予測子である(例えば、予測子インデックス値を用いて示される)。パレットデコーディングモードの場合、パーサー/エントロピーデコーダ(610)はパレットデータをデコードすることができる。特に、パーサー/エントロピーデコーダ(610)は、後述するようにパレット予測を使用することができる。
一般デコーディング制御(620)は、一般制御データ(622)を受信し、制御信号(図示なし)を他のモジュール(スケーラ/逆変換器(635)、ピクチャ内予測器(645)、動き補償器(655)、及びイントラ/インタースイッチなど)に提供して、デコーディングの間にデコーディングパラメータを設定し、変更する。
現在ピクチャがピクチャ間予測を使用して予測される場合、動き補償器(655)は、MVデータ、参照ピクチャ選択データ、及びマージモードインデックス値などの動きデータ(652)を受信する。動き補償器(655)は、MVを、デコード済みピクチャバッファ(670)からの再構成された参照ピクチャに適用する。動き補償器(655)は、現在ピクチャのインター符号化されたブロックに対する動き補償された予測を生成する。デコード済みピクチャバッファ(670)は、参照ピクチャとして使用する、1つ以上の事前に再構成されたピクチャを記憶する。
デコーダ(600)内の別個の経路において、ピクチャ内予測器(645)はイントラ予測データ(642)を受信し、該データは、例えば、ピクチャ内予測が空間予測、イントラBC予測、イントラLC予測、又はイントラSC予測を使用するかどうか、並びに予測モード方向(イントラ空間予測の場合)、BV値(イントラBC予測の場合)、オフセット値(イントラLC予測の場合)、又はオフセット値及び長さ値(イントラSC予測の場合)を示す情報などである。イントラ空間予測の場合、現在ピクチャの再構成(638)の値を使用して、予測モードデータに従って、ピクチャ内予測器(645)は、現在ピクチャの隣接する事前再構成されたサンプル値から、現在ピクチャの現在のブロックのサンプル値を空間予測する。或いは、イントラコピー予測の場合、ピクチャ内予測器(645)は、現在のブロック、ライン、ストリングなどの変位(BV値、オフセット値など)によって示される、参照ブロック、ライン、ストリング、又は他のセクションの事前に再構成されたサンプル値を使用して、現在のブロック、ライン、ストリング、又は他のセクションのサンプル値を予測する。場合によっては、BV値(又は他のオフセット値)は予測値であることができる。他の事例では、BV値(又は他のオフセット値)はその予測値とは異なることができ、その場合、BV値(又は他のオフセット値)は差分及び予測値を使用して再構成される。イントラSCモードの場合、ピクチャ内予測器(645)は、現在のストリングのサンプル値を予測するときにストリング長さ値をさらに使用する。
パレットデコーディングモードの場合、デコーダ(600)は、CU又は他のユニットのサンプル値の少なくとも一部を表すパレットを使用する。パレットは、インデックス値をユニットで使用される対応する色に対してマッピングする。例えば、パレットは、インデックス値0、1、2、…、pを対応する色に対してマッピングし、対応する色は、RGB4:4:4フォーマット、BGR4:4:4フォーマット、GBR4:4:4フォーマット、YUV4:4:4フォーマット、又は別のフォーマット(色空間、色サンプリングレート)であることができる。インデックス値は、ピクセルに対するRGBトリプレット、BGRトリプレット、又はGBRトリプレットを表すことができる。デコードする間、ユニット内の位置に関して、パレットからのインデックス値が適切なサンプリング値で置き換えられる。ユニットのエスケープ符号化値が、エスケープコード値及びリテラル値を使用してデコードされることができる。パレットは、ビットストリーム内で信号伝達されるパレットデータに基づいて、ユニット毎に変更することができる。
イントラ/インタースイッチは、所与のブロックに対する予測(658)として使用される、動き補償された予測又はピクチャ内予測の値を選択する。例えば、H.265/HEVCシンタックスに従う場合、イントラ/インタースイッチは、イントラ予測されたCU及びインター予測されたCUを含むことができるピクチャのCUに対してエンコードされたシンタックス要素に基づいて制御することができる。残差値がエンコードされ/信号伝達されている場合、デコーダ(600)は、予測(658)を再構成された残差値と組み合わせて、ビデオ信号からのコンテンツの再構成(638)を生成する。残差値がエンコードされ/信号伝達されていない場合、デコーダ(600)は、予測(658)の値を再構成(638)として使用する。
残差値がエンコードされ/信号伝達されている場合の残差を再構成するために、スケーラ/逆変換器(635)は、量子化された変換係数データ(632)を受信し、処理する。スケーラ/逆変換器(635)では、スケーラ/逆量子化器は、量子化された変換係数に対して逆スケーリング及び逆量子化を実施する。逆周波数変換器は、逆周波数変換を実施して、再構成された予測残差値又はサンプル値のブロックを生成する。例えば、逆周波数変換器は、逆ブロック変換を周波数変換係数に適用して、サンプル値データ又は予測残差データを生成する。逆周波数変換は、逆DCT、その整数近似、又は別のタイプの逆周波数変換(例えば、逆離散サイン変換又はその整数近似)であることができる。周波数変換がエンコーディングの間にスキップされた場合、逆周波数変換もスキップされる。この場合、スケーラ/逆量子化器は、予測残差データ(又はサンプル値データ)のブロックに対して逆スケーリング及び逆量子化を実施して、再構成された値を生成することができる。
ピクチャ内予測の場合、再構成(638)の値をピクチャ内予測器(645)にフィードバックすることができる。ピクチャ間予測の場合、再構成(638)の値を更にフィルタリングすることができる。マージ器/フィルタ(665)では、デコーダ(600)は、異なるタイルからのコンテンツを、ピクチャの再構成されたバージョンへマージする。デコーダ(600)は、フィルタ制御データ(662)及びフィルタ適応の規則に従って、デブロックフィルタリング及びSAOフィルタリングを選択的に実施して、ピクチャの境界にわたる不連続性を適応的に平滑化する。その代わりに、又はそれに加えて、他のフィルタリング(デリンギングフィルタリング又はALFなど、図示なし)を適用することができる。タイル境界は、デコーダ(600)の設定、又はエンコードされたビットストリームデータ内のシンタックス要素に依存して、選択的にフィルタリングするか又は全くフィルタリングしないことが可能である。デコード済みピクチャバッファ(670)は、後続の動き補償された予測で使用するため、再構成された現在ピクチャをバッファする。
デコーダ(600)は、後処理フィルタをさらに含むことができる。後処理フィルタ(608)は、デブロックフィルタリング、デリンギングフィルタリング、適応ウィナーフィルタリング、フィルム粒子再現フィルタリング、SAOフィルタリング、又は別の種類のフィルタリングを含むことができる。「インループ」フィルタリングは、動き補償ループ内のピクチャの再構成されたサンプル値に対して実施され、従って参照ピクチャのサンプル値に影響するが、後処理フィルタ(608)は、表示のために出力する前に、動き補償ループ外の再構成されたサンプル値に適用される。
実装及び所望される伸張のタイプに依存して、デコーダ(600)のモジュールを追加し、省略し、複数のモジュールへと分割し、他のモジュールと組み合わせ、かつ/あるいは同様のモジュールと置き換えることができる。代替実施形態では、異なるモジュール及び/又はモジュールの他の構成を有するデコーダが、記載する技術の1つ以上を実施する。デコーダの具体的な実施形態は、一般的に、デコーダ(600)の変形又は補足されたバージョンを使用する。デコーダ(600)内のモジュール間の図示される関係は、デコーダ内の情報の一般的なフローを示し、他の関係は、簡潔さのために図示されない。
VII.WPPが使用可能にされるときのピクチャ内予測モードの規則
このセクションでは、波面並列処理(「WPP」)が使用可能にされるときのピクチャ内予測モードに対する規則の例を提示する。本イノベーションは、WPPが使用可能にされるときの、エンコーダ又はデコーダによる、パレット予測モード、イントラブロックコピー(「BC」)モード、イントララインコピー(「LC」)モード、及びイントラストリングコピー(「SC」)モードなどのピクチャ内予測モードの使用を容易にする。
A.波面並列処理−序論
一般に、WPPは、ピクチャ内のユニットの行に対する処理の開始を差動的に遅延することによって、並列処理を容易にする符号化/デコーディングツールである。WPPが使用可能にされると、ピクチャ内のユニットの異なる行を並列してエンコード又はデコードすることができる。エンコーディング又はデコーディングの間、ユニットの第1の行を、左から右にユニット毎に(unit-after-unit)処理することができる。ユニットの第2の行の処理(エンコーディング又はデコーディング)は、ユニットの第1の行全体の処理が完了するのを待つ必要がない。その代わりに、第1の行のユニットのいくつかが処理を完了した後に、このことが第2の行の最初のユニットを処理するときに使用される情報を提供し、ユニットの第2の行の処理が始まることができる。同様に、ユニットの第3の行の処理は、第2の行のユニットのいくつかについて処理が完了した後に開始することができる。従って、WPPは、ユニットの異なる行の並列処理を容易にし、異なるスレッド又は処理コアが、交互的な時間遅延の方式でユニットの異なる行の処理を実施することができる。
例えば、H.265/HEVC規格に従って、WPPが使用可能にされると、スライスがCTUの行へと分けられる。エンコード又はデコードする間、CTUの第1の行をCTU毎に(CTU-after-CTU)処理することができる。第1の行のうち最初の2つのCTUについて処理が完了した後に、このことが第2の行の最初のCTUを処理するときに使用される情報(例えば、再構成されたサンプル値、再構成されたMV値又はBV値、コンテキストモデル情報)を提供し、CTUの第2の行の処理が始まることができる。同様に、CTUの第3の行の処理は、第2の行の最初の2つのCTUについて処理が完了した後に開始することができる。
図7は、H.265/HEVC規格に従った現在ピクチャ(710)に対するWPPのタイミング(700)を示している。ピクチャ(710)は、CTU列及びCTU行において編成されるCTUへと区分される。異なるCTU行を、WPPを使用して並列してエンコードし又はデコードすることができる。WPPのタイミングは、エンコード又はデコードする間のCTU間の依存関係(dependencies)を反映する。この例では、所与のCTUが、(1)その左側の隣接したCTU、(2)その左上の隣接したCTU、(3)所与のCTUの上側の隣接したCTU、及び(4)所与のCTUの右上の隣接したCTUからの情報(再構成されたサンプル値、再構成されたMV値若しくはBV値、コンテキストモデル情報など)に依存してもよく、その場合、かかる隣接したCTU(1)〜(4)は利用可能である(例えば、ピクチャ内、同じスライス及びタイル内である)。各隣接CTUは、次いで、利用可能な場合はそれに隣接したCTU(1)〜(4)に依存してもよい。図8は、第5のCTU行の最初のCTUに対するカスケード的依存関係を示している。第5のCTU行の最初のCTUは、第4のCTU行の最初の2つのCTUに依存し、それらは集合的に、第3のCTU行の最初の3つのCTUに依存し、その後も同様である。
図7を参照すると、WPPの場合、第1のCTU行(つまり、CTU行0)は、波0に対してCTU毎に処理される。波1の場合、CTU行1における最初のCTUの処理は、CTU行0における第2のCTUのエンコーディング/デコーディングが終了した後に開始することができる。同様に、波2の場合、CTU行2における最初のCTUの処理は、CTU行1における第2のCTUのエンコーディング/デコーディングが終了した後に開始することができる。波3の場合、CTU行3における最初のCTUの処理は、CTU行2における第2のCTUのエンコーディング/デコーディングが終了した後に開始することができ、波4の場合、CTU行4における最初のCTUの処理は、CTU行3における第2のCTUのエンコーディング/デコーディングが終了した後に開始することができる。
CTU行が並列で処理される場合であっても、この交互的な時間遅延処理によって、CTU行について処理が始まるときにCTU間の依存関係が満たされることが確保される。図7では、処理の間、各CTU行に対してCTU2つ分の進みが維持される。各CTU行に対して、現在のCTU(太い輪郭線で示される)の処理は、次のCTU行の現在のCTUの処理よりもCTU2つ分早い。しかしながら、実際は、所与のCTU行の処理が失速し又は減速して、上記所与のCTU行におけるCTUの処理の完了に(直接若しくは間接的に)依存する後のCTU行の処理においてカスケード的遅延が生じることがある。後のCTU行の所与のCTUに関して、依存関係は前のCTU行からカスケードする(cascade)。図8に示される例(800)では、フレーム(810)の第5のCTU行における最初のCTUに対して、第4のCTU行における最初の2つのCTUが処理されている。そうでなければ、第5のCTU行における最初のCTUの処理は開始することができない。転じて、第3のCTU行の第3のCTUが処理されているが、これは、そうでなければ第4のCTU行における第2のCTUの処理を開始することができなかったためである。同様に、第3のCTU行の第3のCTUに対する処理の事前条件として、第2のCTU行の第4のCTUが処理されている。最後に、第2のCTU行の第4のCTUに対する処理の事前条件として、第1のCTU行の第5のCTUが処理されている。従って、図8は、WPPが使用可能にされるときの波4(第5のCTU行)における最初のCTUの予測に利用可能であることを保証された、再構成されたコンテンツを示している。
対照的に、WPPが使用可能にされていないと、CTUは、CTU行内で左から右へ、CTU行毎に(CTU row after CTU row)ピクチャ(若しくは使用される場合、スライス及びタイル)の上から下へと処理される。所与のCTUに対して使用されるコンテキストモデル情報(CABACステータス情報若しくはエントロピー符号化情報とも呼ばれる)は、符号化/デコーディング順序においてより早いCTUである、ピクチャ(若しくはスライス/タイル)の同じCTU行における任意の前のCTU及び任意の前のCTU行の処理の結果を説明し(account for)得る。例えば、あるCTU行における第2のCTUの処理が、上記CTU行における第1のCTUの処理の結果に依存し、その後も同様である。別の例として、あるCTU行における最初のCTUの処理が、ピクチャ(若しくはスライス/タイル)内の前のCTU行における最後のCTUの処理の結果に依存する。
他方で、WPPが使用可能にされると、CTU行における最初のCTUの処理は、ピクチャ(若しくはスライス/タイル)内の前のCTU行における最後のCTUの処理の結果に依存しない。CTU行における最初のCTUの処理は、前のCTU行内の最後のCTUからのコンテキストモデル情報が利用不能であっても、ピクチャ(若しくはスライス/タイル)内の前のCTU行における第2のCTUについて処理が終了した後で開始することができる。前のCTU行における第3のCTUの処理は依然として、WPPが使用可能でないときと同じように、そのCTU行における第2のCTUの処理結果に依存する。
WPPが使用可能にされるとき、エンコーダは、エンコーディングの間WPPを実際に使用してもしなくてもよい。いずれにせよ、エンコーダは、WPPが実際に使用されるときに適用される制約及び予測規則を強制する。同様に、WPPが使用可能にされるとき、デコーダは、デコーディングの間WPPを実際に使用してもしなくてもよい。ビットストリーム内のシンタックス要素が、ビデオシーケンス、ピクチャのセット、又はピクチャに対してWPPが使用可能にされているか否かを示すことができる。例えば、シンタックス要素は、ビットストリーム内のSPS、PPS、又は他のシンタックス構造の形で信号伝達することができる。H.265/HEVCの実装では、例えば、PPSシンタックス構造において信号伝達されるシンタックス要素の値entropy_coding_sync_enabled_flagは、PPSシンタックス構造に関連付けられたピクチャに対してWPPが使用可能にされているか否かを示す。entropy_coding_sync_enabled_flagが1に等しい場合、WPPがピクチャに対して使用可能である。そうでなければ、WPPはピクチャに対して使用可能にされていない。
B.パレット符号化/デコーディングモード及びパレット予測−序論
一般に、パレット符号化/デコーディングモードは、パレットを使用して、ユニット(例えば、H.265/HEVCの実装におけるCU、又は他のユニット)のサンプル値の少なくともいくつかを表す。例えば、パレットは、インデックス値0、1、2、…、pを対応する色に対してマッピングし、対応する色は、RGB4:4:4フォーマット、BGR4:4:4フォーマット、GBR4:4:4フォーマット、YUV4:4:4フォーマット、又は別のフォーマット(色空間、色サンプリングレート)であることができる。インデックス値は、ピクセルに対するRGBトリプレット、BGRトリプレット、又はGBRトリプレットを表すことができる。図9は、パレットの2つの例を示している。現在のユニットに対するパレット(つまり、「現在のパレット」)は、RGBトリプレットに関連付けられたp個のインデックス値0、…、p−1を含む。前のユニットに対するパレット(「前のパレットデータ」で表される)は、RGBトリプレットに関連付けられたq個のインデックス値0、…、q−1を含む。p及びqの値は同じ又は別であることができる。エンコーディングの間、エンコーダは、インデックス値を使用してピクセルのサンプル値を置き換えることができ、インデックス値は、例えばエントロピー符号化を使用して、更にエンコードされてもよい。デコーディングの間、デコーダは、例えば、インデックス値のエントロピーデコーディングの後、パレットを使用してインデックス値からピクセルのサンプル値を復元することができる。
特に、パレット符号化/デコーディングモードは、ユニットが、画面コンテンツビデオの一般的な特性である、比較的少数の区別可能な色を含むときに有効であり得る。例えば、RGB4:4:4フォーマットの64×64CUは、64×64=4096ピクセルを含むが、それよりもはるかに少数の色(例えば、1〜20色)を含むことがある。ユニット内のレア色は、レア色をパレットに直接含む代わりに、(それぞれのサンプル値に対して)エスケープコード値及びリテラル値を使用してエンコードすることができる。
2つのユニットが同じパレットを使用することができるが、色は典型的に、ピクチャ内のユニットからユニットへと変化する。そのため、パレットは典型的に、ピクチャ内のユニットからユニットへと変化する。パレットに対して、エンコーダは、エントロピー符号化されてもよいパレットデータをビットストリームにおいて信号伝達する。デコーダは、パレットデータを受信し、構文解析し、必要であればそれをエントロピーデコードし、パレットを再構成する。エンコーダ及びデコーダは、パレット予測を使用して、信号伝達パレットデータに関連付けられたビットレートを低減することができる。
一般に、パレット予測は、エンコーディング又はデコーディングの間に使用される任意のアプローチであって、前のユニットの1つ以上のパレットからのパレットデータ(前のパレットデータ)を使用して現在のユニットのパレット(現在のパレット)の値を予測することができる。色は典型的にピクチャ内のユニットからユニットへと変化するが、多くの場合、所与のユニットにおける色の少なくともいくつかは隣接するユニットでさらに使用される。パレット予測は、その観察を活用して、パレットデータに対するビットレートを低減する。
図9は、パレット予測の簡素化した例(900)を示しており、現在のユニットのパレット(現在のパレット)が、前のユニットのパレット(前のパレットデータの形で表される)を使用して予測される。例えば、前のパレットデータは、前のユニットがパレット符号化/デコーディングモードを使用した場合、現在のユニットの前にエンコード又はデコードされた前のユニットによって使用されたパレットからのものであり得る。前のユニットがパレット符号化/デコーディングモードを使用しなかった場合、現在のユニットに対する前のパレットデータが前のユニットから「継承される」ことができる。即ち、前のユニットに対して利用可能であった前のパレットデータが、現在のユニットに対して利用可能な前のパレットデータとして再使用されることができる。(いくつかの例示的な実装では、前のパレットデータは、事実上、現在のユニットのステータス又は状態情報である。パレット符号化/デコーディングモードをそれ自体が使用しない所与のユニットが前のパレットデータを依然として有しており、それが次のユニットによって継承されてもよい。)従って、継承の連鎖を通して、現在のユニットに対する前のパレットデータは、パレット符号化/デコーディングモードを使用した最も直近の事前処理されたユニット(ある場合)のパレットからのパレットデータを含むことができる。
パレット予測に関して、エンコーダは、現在のパレットが前のパレットデータと同じであるか否かを決定することができる。同じである場合、エンコーダは単純に、前のパレットデータが現在のパレットとして再使用されるべきであることを示すことができる。そうではない(現在のパレットが前のパレットデータと異なる)場合、エンコーダは、前のパレットデータと現在のパレットとの間の変化を決定し、該変化を示すシンタックス要素を信号伝達する。例えば、図9に示されるように、現在のパレットの所与のインデックス値に関して、エンコーダは、所与のインデックス値の対応する色が前のパレットデータの色(「prev」)であるか又は新しい色(「new」)であるかを信号伝達する。対応する色が前のパレットデータの色である場合、エンコーダは、現在のパレットを埋める(populate)のに使用することができる、前のパレットデータの色に対する(前のパレットデータからの)インデックス値を信号伝達する。図9では、前のパレットデータのインデックス値1に対する色が、現在のパレットのインデックス値0に再割り当てされ、前のパレットデータのインデックス値0に対する色が、現在のパレットのインデックス値2に再割り当てされている。従って、色はパレットからパレットへと位置を変更することができ、そのため、例えば、最も一般的な色が最も低いインデックス値を有し、それによってエントロピー符号化の効率が改善されてもよい。所与のインデックス値の対応する色が新しい色である場合、エンコーダは新しい色に対するトリプレットを信号伝達する。図9では、例えば、現在のパレットのインデックス値1に関して、エンコーダは新しいトリプレット(215,170,200)を信号伝達し、それが現在のパレットを更新するのに使用される。
エンコーダによって信号伝達されたシンタックス要素に基づいて、デコーダは、現在のパレットが、デコーダで利用可能な前のパレットデータと同じであるか否かを決定することができる。同じである場合、デコーダは、前のパレットデータを現在のパレットとして再使用することができる。そうではない(現在のパレットが前のパレットデータと異なる)場合、デコーダは、前のパレットデータと現在のパレットとの間の変化を示すシンタックス要素を受信し、構文解析する。例えば、図9に示されるように、現在のパレットの所与のインデックス値に関して、デコーダは、所与のインデックス値の対応する色が前のパレットデータの色(「prev」)であるか又は新しい色(「new」)であるかを決定する。対応する色が前のパレットデータの色である場合、デコーダは、現在のパレットを埋めるのに使用することができる、前のパレットデータの色に対する(前のパレットデータからの)インデックス値を示すシンタックス要素を受信し、構文解析する。所与のインデックス値の対応する色が新しい色である場合、デコーダは新しい色を示すシンタックス要素を受信し、構文解析する。
現在のパレットを構成した後、エンコーダ及びデコーダは、次のユニットに対して前のパレットデータを更新して、現在のパレットからのパレットデータを記憶する。この新しい「前のパレットデータ」を使用して、次のユニットに対するパレットを予測することができる。
図9は、簡素化した例(900)を示している。実際は、パレットデータを信号伝達するのに使用されるシンタックス要素及び規則はより複雑な場合がある。例示的な実装におけるパレット符号化/デコーディング及びパレット予測に関する更なる詳細については、例えば、JCTVC-R1005のセクション7.3.8.8、7.4.9.6、及び8.4.1を参照されたい。或いは、別のアプローチがパレットデータを信号伝達するのに使用される。
C.WPPが使用可能にされるときのパレット予測
一般に、パレット予測を目的とした前のパレットデータは、現在のユニットのパレット(現在のパレット)を予測するのに使用される。例えば、前のパレットデータは、現在のユニットの前にエンコード又はデコードされた隣接ユニットからの実際のパレットデータである(隣接するユニットがパレット符号化/デコーディングモードを使用した場合)。或いは(隣接するユニットがパレット符号化/デコーディングモードを使用しなかった場合)、隣接ユニットに利用可能な前のパレットデータが、現在のユニットに対する前のパレットデータとして再使用される(又は、「継承される」)ことができる。
いくつかの例示的な実装では、WPPが使用可能にされない場合、現在の行内の最初のユニットに対して、前のパレットデータは、前の行内の最後のユニットから(例えば、最後のユニットがパレット符号化/デコーディングモードを使用した場合は、最後のユニットのパレットから、そうでなければ、最後のユニットに利用可能な前のパレットデータから)のものである。WPPが使用可能にされるとき、現在の行内の最初のユニットに対して、前の行内の最後のユニットからの前のパレットデータが利用可能でないことがある。しかしながら、ユニットの各行の始めにパレット予測をリセットすることは(現在のユニットにおける最初のユニットのパレット予測に対する予測子がない)、符号化効率に対して悪影響を有し得る。
その代わりに、WPPが使用可能にされるとき、エンコーダ又はデコーダは、現在の行内の最初のユニットの処理が始まるために既に処理されている、前の行内の最初の2つのユニットのうち1つ(例えば、前の行の最初の2つのCTUにおける最初の2つのCUのうち1つ)からの前のパレットデータを使用することができる。例えば、現在の行内の最初のユニットに対して、パレット予測を目的とした前のパレットデータは、前の行の第2のユニットからのもの(第2のユニットがパレット符号化/デコーディングモードを使用した場合、第2のユニットの実際のパレットデータ、又はそうでなければ、前の行の第2のユニットに利用可能な前のパレットデータ)である。従って、現在の行内の最初のユニットについて、上記第2のユニットがパレット符号化/デコーディングモードを使用しなかった場合、前のパレットデータは潜在的に、前の行内の第1のユニットからのパレットデータ(第1のユニットがパレット符号化/デコーディングモードを使用した場合)、又は、(前の行内の最初の2つのユニットがいずれもパレット符号化/デコーディングモードを使用しなかった場合は)前の行の第1のユニットからの前のパレットデータであり、該パレットデータは、前の行の前の行における第2のユニットに対するパレットに依存してもよく、その後も同様である。(或いは、前の行内の最初の2つのユニットがいずれもパレット符号化/デコーディングモードを使用しなかった場合、前のパレットデータは、ヌル(予測子なし)であるか又はデフォルト予測子を使用することができる。)現在の行内の最初のユニットの後、現在のユニットについて、パレット予測を目的とした前のパレットデータは、WPPが使用可能にされないときと同じように、現在のユニットの前にエンコード又はデコードされた隣接ユニットからのパレットデータ(隣接ユニットがパレット符号化/デコーディングモードを使用した場合)、又は、(隣接ユニットがパレット符号化/デコーディングモードを使用しなかった場合は)隣接ユニットに利用可能な前のパレットデータである。
図10は、いくつかの例示的な実施例による、WPPが使用可能にされた状態で処理される現在ピクチャ(1010)に対するパレット予測依存関係(1000)を示している。ピクチャ(1010)はCTU行及びCTU列によって編成される。図10の例では、各CTUは単一のCUを含む。より一般には、所与のCTUを複数のCUへと再帰的に分割することができる(例えば、単一のCUを4つのCUへと分割することができ、4つのCUの各々が、より小さいCUへと更に分割されてもよい)。処理の状態(例えば、現在のCTUがエンコード又はデコードされている)は、一般に、図7に示される処理の状態に対応する。図10の矢印は、WPPが使用可能にされるときのパレット予測の方向を示している。第1のCTU行における最初のCUに関して、予測子は存在しない。或いは、デフォルト予測子を使用することができる。第1のCTU行内のより後のCU各々に関して、前のパレットデータは、左側のCUからのものである。第1のCTU行の後の任意のCTU行における最初のCUに関して、前のパレットデータは、前の行の第2のCUからのものである。第1のCTU行の後の任意のCTU行内のより後のCU各々に関して、前のパレットデータは、同じ行内の前のCUからのものである。パレット符号化/デコーディングモードを使用する任意のCUに関して、そのパレットは、次のCUのパレットを予測するための前のパレットデータを構成するのに使用される。所与のCUがパレット符号化/デコーディングモードを使用しない場合、上記所与のCUに利用可能であった前のパレットデータは、次のCUの前のパレットデータとして保有される。
CTUが複数のCUを含むとき、現在のCUに対するパレット予測の目的で、前のCUはzスキャン順序においてより早いCUであり得る。より早いCUは、(CTUの第1のCUに対して)同じCTU又は異なるCTUにあることができる。セクションVII.Dは、図17を参照して、いくつかの例示的な実装におけるzスキャン順序の例を説明している。
エンコーダ及びデコーダは、メモリを使用して、パレット予測に使用される前のパレットデータを記憶することができる。前のパレットデータのために保存されるパレットデータの量は実装に依存する。一般に、前のパレットデータは、前のパレットデータにおける色のカウントCと、色に対するサンプル値の詳細(例えば、RGB4:4:4フォーマット、GBR4:4:4フォーマット、BGR4:4:4フォーマット、YUV4:4:4フォーマット、又は別のフォーマットの色トリプレット)とを含むことができる。エンコーダ及びデコーダは、前のパレットに対する全てのパレットデータを保存することができる。しかしながら、前のパレットに対する全てのパレットデータの保存は、大きいパレットの場合に相当量のメモリを消費する場合がある。或いは、いくつかの事例においてメモリ消費を低減するため、エンコーダ及びデコーダは閾値カウントによってCを制限し、ここで、閾値カウントは実装に依存する。この場合、エンコーダ及びデコーダは、前のパレットにおける最初のC個の異なる色について前のパレットデータを保存し、ここで、Cは閾値カウントによって制限される。例えば、閾値カウントは16又は32である。或いは、WPPが使用可能にされるとき、現在の行の最初のユニットに対するパレット予測に関して、エンコーダ及びデコーダは、最大で、最初のC1個の異なる色について前のパレットデータを保存する。その後、エンコーダ及びデコーダは、現在の行内のパレット予測に関して、最大で、最初のC2個の異なる色について前のパレットデータを保存する。例えば、C1は16又は32であり、C2は64である。
図11は、WPPが使用可能にされるときの、パレット予測を含むエンコーディングのための一般化された技術(1100)を示している。図3又は図5a及び5bに示されるエンコーダなどのエンコーダ、又は他のエンコーダが、技術(1100)を実施することができる。図12は、WPPが使用可能にされるときの、パレット予測を含むデコーディングのための一般化された技術(1200)を示している。図4又は図6に示されるデコーダなどのデコーダ、又は他のデコーダが、技術(1200)を実施することができる。
図11を参照すると、エンコーダが、WPPが使用可能にされた状態でピクチャをエンコードする(1110)。エンコーディング(1110)は、エンコードされたデータを生成する。エンコーディング(1110)の一部として、パレット符号化モードについて、エンコーダは、ピクチャの前のWPP行における前のユニットからの前のパレットデータを使用して、ピクチャの現在のWPP行における最初のユニットに対するパレットを予測する。エンコーダは、エンコードされたデータをビットストリームの一部として出力する(1120)。
図12を参照すると、デコーダが、エンコードされたデータをビットストリームの一部として受信する(1210)。デコーダは、WPPが使用可能にされた状態で、エンコードされたデータをデコードする(1220)。デコーディング(1220)は、ピクチャを再構成する。デコーディング(1220)の一部として、パレットデコーディングモードについて、デコーダは、ピクチャの前のWPP行における前のユニットからの前のパレットデータを使用して、ピクチャの現在のWPP行における最初のユニットに対するパレットを予測する。
いくつかの例示的な実装では、エンコーダ又はデコーダにおいて、現在のWPP行及び前のWPP行はCTUの行であり、最初のユニット及び前のユニットはCUである。或いは、WPP行は別のタイプのユニットの行であり、かつ/あるいは最初のユニット及び前のユニットは別のタイプのユニットである。ビットストリーム内のシンタックス要素が、ビデオシーケンス、ピクチャのセット、又はピクチャについてWPPが使用可能にされているかどうかを示すことができる。シンタックス要素は、SPSシンタックス構造、PPSシンタックス構造(例えば、H.265/HEVCの実装におけるシンタックス要素entropy_coding_sync_enabled_flag)、又はビットストリーム内の他のシンタックス構造において信号伝達することができる。
一般に、エンコーディング又はデコーディングの間、現在のWPP行における最初のユニットのパレットは、現在のWPP行内の最初のユニットで使用される少なくともいくつかの色を表す。前のWPP行内の前のユニットからの前のパレットデータは、前のWPP行の前のユニットのパレットで使用される少なくともいくつかの色を表してもよい(前のユニットがパレット符号化/デコーディングモードを使用した場合)。或いは(前のユニットがパレット符号化/デコーディングモードを使用しなかった場合)、前のWPP行内の前のユニットからの前のパレットデータは、より早いユニットから前のユニットによって継承されていてもよく、より早いユニットは、パレット符号化/デコーディングモードを使用しているか、又はそれ自体が前のパレットデータを継承していてもよい。パレットにおいて表されない色は、エスケープ符号化することができる。前のWPP行は、現在のWPP行のすぐ上のWPP行であり得る。前のWPP行における前のユニットは、現在のWPP行における最初のユニットの上であることができ(例えば、図10において、前の行における第1のユニット)、或いは、現在のWPP行における最初のユニットの右上であることができる(例えば、図10において、前の行の第2のユニット)。現在のWPP行における最初のユニットを処理した後、ピクチャの現在のWPP行における後続ユニットのパレットについて、エンコーダ又はデコーダは、現在のWPP行における最初のユニットのパレットからのパレットデータを使用して、(後続ユニットの)パレットを予測することができる。
エンコーディング又はデコーディングの間、パレット予測はいくつかの段階を含むことができる。例えば、エンコーディングの間、エンコーダは(現在のパレットと前のパレットデータとの比較に基づいて)、前のWPP行内の前のユニットからの前のパレットデータを現在のWPP行内の最初のユニットに対するパレット(現在のパレット)として再使用するか否かを決定することができる。デコーディングの間、デコーダは(エンコーダによって信号伝達された情報に基づいて)、前のWPP行内の前のユニットからの前のパレットデータを現在のWPP行内の最初のユニットに対するパレット(現在のパレット)として再使用するか否かを決定することができる。別の例として、エンコーディングの間、パレットに対する変更があるとき、エンコーダは、前のWPP行内の前のユニットからの前のパレットデータから1つ以上の色を選択して、現在のWPP行内の最初のユニットに対するパレット(現在のパレット)に含めることができる。エンコーダは、選択された色を示すシンタックス要素を信号伝達する。次いで、デコーディングの間、デコーダは、上記シンタックス要素を受信し、構文解析することができ、シンタックス要素に基づいて、前のWPP行内の前のユニットからの前のパレットデータから1つ以上の色を選択して、現在のWPP行内の最初のユニットに対するパレット(現在のパレット)に含めることができる。或いは、エンコーダ及びデコーダは、別のアプローチを使用してパレットデータを信号伝達することができる。
エンコーダ及びデコーダは、前のWPP行における前のユニットからの全ての前のパレットデータを記憶することができる。例えば、エンコーダ及びデコーダは、前のWPP行内の前のユニットからの前のパレットデータにおけるC個の色の各々について、1つ以上の色成分値を保存することができる。或いは、いくつかの事例においてメモリ消費を低減するため、エンコーダ及びデコーダは、前のパレットデータに対する閾値カウントによってCを制限することができ、したがって、閾値カウントによって制限される最初のC個の色に対するパレットデータが、パレット予測のために記憶される。
D.イントラコピー予測−序論
一般に、イントラコピーモードは、ピクチャの現在のブロック、ライン、ストリング、又は他のセクションが同じピクチャの参照ブロック、ライン、ストリング、又は他のセクションにおける事前に再構成されたサンプル値を使用して予測される、イントラコピー予測を使用する。例えば、イントラコピーモードは、イントラブロックコピー(「BC」)予測、イントララインコピー(「LC」)予測、又はイントラストリングコピー(「SC」)予測を使用することができる。
一般に、イントラBCモードは、ピクチャの現在のブロックのサンプル値が同じピクチャのサンプル値を使用して予測される、イントラBC予測を使用する。ブロックベクトル(「BV」)値は、現在のブロックから、予測に使用されるサンプル値を示すピクチャのブロック(「参照ブロック」)への変位を示す。参照ブロックは、現在のブロックに対する予測値を提供する。予測に使用されるサンプル値は事前に再構成されたサンプル値であり、従ってそれらは、エンコーディングの間エンコーダで、またデコーディングの間デコーダで利用可能である。BV値はビットストリームにおいて信号伝達され、デコーダは、BV値を使用して、予測に使用するピクチャの参照ブロックを決定することができる。
図13は、現在ピクチャ(1310)の現在のブロック(1330)に対するイントラBC予測の一例(1300)を示している。現在のブロックは、符号化ユニット(「CU」)の符号化ブロック(「CB」)、予測ユニット(「PU」)の予測ブロック(「PB」)、変換ユニット(「TU」)の変換ブロック(「TB」)、又は他のブロックであり得る。現在のブロックのサイズは、64×64、32×32、16×16、8×8、又は他の何らかのサイズであり得る。ブロックは、イントラBC予測の目的で、より小さいブロックへと対称的又は非対称的に区分することができる。より一般には、現在のブロックのサイズはm×nであり、m及びnは各々整数であり、m及びnは互いに等しいことが可能であり、又は異なる値を有することができる。従って、現在のブロックは正方形又は長方形であり得る。或いは、現在のブロックは他の何らかの形状を有することができる。
BV(1340)は、現在のブロック(1330)から、予測に使用されるサンプル値を含むピクチャの参照ブロック(1350)への変位(又はオフセット)を示す。参照ブロック(1350)は現在のブロック(1330)と同一であることができ、又は現在のブロック(1330)の近似であることができる。現在のブロックの左上位置が現在ピクチャの位置(x0,y0)にあるものと仮定し、参照ブロックの左上位置が現在ピクチャの位置(x1,y1)にあるものと仮定する。BVは変位(x1−x0,y1−y0)を示す。例えば、現在のブロックの左上位置が位置(256,128)にあり、参照ブロックの左上位置が位置(126,104)にある場合、BV値は(−130,−24)である。この例では、負の水平変位は現在のブロックの左側の位置を示し、負の垂直変位は現在のブロックの上側の位置を示す。
イントラBC予測は、BC動作を使用して冗長性(ピクチャ内部の繰返しパターンなど)を活用することによって、符号化効率を改善することができる。しかしながら、現在のブロックに対してマッチする参照ブロックを発見することは、エンコーダが評価し得る候補参照ブロックの数を考慮すると、計算的に複雑で時間のかかる場合がある。図14は、WPPが使用可能にされていないときの、現在ピクチャ(1410)の現在のブロック(1430)に対する候補参照ブロックのいくつかを例証する一例(1400)を示している。4つのBV(1441、1442、1443、1444)が、4つの候補参照ブロックに対する変位を示す。WPPが使用可能にされていない場合、候補参照ブロックは、現在ピクチャ(1410)の再構成されたコンテンツ内のいずれかの場所であり得る。(ブロックは、一般に、左から右に、次に上から下に符号化される。)BV(1443、1444)によって示される候補参照ブロックに関して示されるように、候補参照ブロックは他の候補参照ブロックと重なり合う場合がある。いくつかの例示的な実装では、参照ブロックは、現在のブロックと同じスライス及びタイル内にあるように制約される。かかるイントラBC予測は、他のスライス又はタイルにおけるサンプル値を使用しない。参照ブロックの場所は、後述するように、1つ以上の他の制約、例えばWPPが使用可能にされるときの制約の対象であってもよい。
イントラBC予測の予測モードを有するブロックは、CB、PB、又は他のブロックであり得る。ブロックがCBであるとき、ブロックのBVはCUレベルで信号伝達されることができる(また、CU内の他のCBは、同じBV又はそのスケーリングされたバージョンを使用する)。或いは、ブロックがPBであるとき、ブロックのBVはPUレベルで信号伝達されることができる(また、PUないの他のPBは、同じBV又はそのスケーリングされたバージョンを使用する)。より一般には、イントラBC予測ブロックのBVは、ブロックに対して適切なシンタックスレベルで信号伝達される。
一般に、イントラLCモードは、ピクチャの現在のブロックの現在のラインのサンプル値が同じピクチャ内のサンプル値を使用して予測される、イントラLC予測を使用する。オフセット値が、現在のラインから、予測に使用されるサンプル値を含むピクチャのライン(「参照ライン」)への変位を示す。オフセット値はビットストリームにおいて信号伝達され、デコーダは、オフセット値を使用して、予測に使用する参照ラインを決定することができる。
図15は、現在ピクチャの現在のブロック(1530)のラインに対するイントラLC予測の一例(1500)を示している。現在のブロックは、CUのCB、PUのPB、TUのTB、又は他のブロックであり得る。現在のブロックのサイズは、64×64、32×32、16×16、8×8、又は他の何らかのサイズであり得る。より一般には、現在のブロックのサイズはm×nであり、m及びnは各々整数であり、m及びnは互いに等しいことが可能であり、又は異なる値を有することができる。従って、現在のブロックは正方形又は長方形であり得る。イントラLC予測について、ブロックは水平ライン又は垂直ラインへと分割される。水平ラインは1サンプル分の高さを有し、現在のブロックの幅を有する。垂直ラインは1サンプル分の幅を有し、現在のブロックの高さを有する。
図15では、第1のオフセット(1551)が、現在のブロック(1530)の第1のライン(1541)から、第1のライン(1541)の予測に使用されるサンプル値を含む参照ライン(1561)への変位を示す。参照ラインは所与のラインと同一であることができ、又は所与のラインの近似であることができる。第2のオフセット(1552)が、現在のブロック(1530)の第2のライン(1542)から、第2のライン(1542)の予測に使用されるサンプル値を含む参照ライン(1562)への変位を示す。オフセット値(1551、1552)は、現在ピクチャ内における変位を示すという点でBV値と類似している。図15は水平ラインを示しているが、現在のブロック(1530)はその代わりに、イントラLC予測のために垂直ラインへと分割することができる。ブロック毎、ユニット毎、又はピクチャ毎のシンタックス要素が、イントラLC予測について水平ラインが使用されるか又は垂直ラインが使用されるかを示すことができる。
イントラLC予測は、LC動作を使用して冗長性(ピクチャ内部の繰返しパターンなど)を活用することによって、符号化効率を改善することができる。WPPが使用可能にされていない場合、候補参照ラインは、現在ピクチャの再構成されたコンテンツ内のいずれかの場所であり得る。候補参照ラインは、他の候補参照ラインと重なり合う場合がある。いくつかの例示的な実装では、参照ラインは、現在のラインと同じスライス及びタイル内であるように制約される。参照ラインの場所は、後述するように、1つ以上の他の制約、例えばWPPが使用可能にされるときの制約の対象であってもよい。
一般に、イントラSCモードは、ピクチャの現在のブロックの現在のストリングのサンプル値が同じピクチャ内のサンプル値を使用して予測される、イントラSC予測を使用する。オフセット値が、現在のストリングから、予測に使用されるサンプル値を含むピクチャのストリング(「参照ストリング」)への変位を示す。ストリング長さ値が、サンプル値の観点でストリングの長さを示す。オフセット値及びストリング長さ値はビットストリームにおいて信号伝達され、デコーダは、オフセット値及びストリング長さ値を使用して、予測に使用する参照ストリングを決定することができる。
図16は、現在ピクチャの現在のブロック(1630)のストリングに対するイントラSC予測の一例(1600)を示している。現在のブロックは、CUのCB、PUのPB、TUのTB、又は他のブロックであり得る。現在のブロックのサイズは、64×64、32×32、16×16、8×8、又は他の何らかのサイズであり得る。より一般には、現在のブロックのサイズはm×nであり、m及びnは各々整数であり、m及びnは互いに等しいことが可能であり、又は異なる値を有することができる。従って、現在のブロックは正方形又は長方形であり得る。イントラSC予測について、ブロックは1つ以上のストリングへと分割される。図16では、現在のブロック(1630)は3つのストリングへと分割される。ブロックのストリングは、所与の行内で左から右に、次いで次の行、またその後も同様に、水平方向にスキャンすることが可能である。或いは、ブロックのストリングは、所与の列内で上から下に、次いで次の行、またその後も同様に、垂直方向にスキャンすることが可能である。図16のストリングは水平方向にスキャンされている。
図16では、第1のオフセット(1651)が、現在のブロック(1630)の第1のストリング(1641)から、第1のストリング(1641)の予測に使用されるサンプル値を含む参照ストリング(1661)への変位を示す。第1のストリング(1641)及び対応する参照ストリング(1661)の各々の長さは、6サンプル値である。参照ストリングは所与のストリングと同一であることができ、又は所与のストリングの近似であることができる。第2のオフセット(1652)が、現在のブロック(1630)の第2のストリング(1642)から、第2のストリング(1642)の予測に使用されるサンプル値を含む参照ストリング(1662)への変位を示す。第2のストリング(1642)及び対応する参照ストリング(1662)の各々の長さは、14サンプル値である。44サンプルの長さを有する、現在のブロック(1630)の第3のストリングに対しては、オフセットが示されていない。BV値と同じく、オフセット値(1651、1652)は、現在ピクチャ内における変位を示す。図16は水平方向のスキャンを示しているが、現在のブロック(1630)はその代わりに、イントラSC予測のために垂直方向にスキャンされるストリングへと分割することができる。ブロック毎、ユニット毎、又はピクチャ毎のシンタックス要素が、イントラSC予測について水平方向のスキャン順序が使用されるか又は垂直方向のスキャン順序が使用されるかを示すことができる。
イントラSC予測は、SC動作を使用して冗長性(ピクチャ内部の繰返しパターンなど)を活用することによって、符号化効率を改善することができる。イントラSC予測は、イントラBC予測又はイントラLC予測よりも柔軟性が高い(固定の区分だけでなく任意のストリングへの区分化を許容する)が、より多くの情報(オフセット値に加えてストリング長さ値)を信号伝達する。WPPが使用可能にされていない場合、候補参照ストリングは、現在ピクチャの再構成されたコンテンツ内のいずれかの場所であり得る。候補参照ストリングは、他の候補参照ストリングと重なり合う場合がある。いくつかの例示の実装では、参照ストリングは、現在のストリングと同じスライス及びタイル内に制約される。参照ストリングの場所は、後述するように、1つ以上の他の制約、例えばWPPが使用可能にされるときの制約の対象であってもよい。
イントラBCモード、イントラLCモード、又はイントラSCモードに対するイントラコピー予測動作は、CB(BV値若しくは他のオフセット値が、CB若しくはその一部毎に信号伝達されるとき)、又はPB(BV値若しくは他のオフセットが、PB若しくはその一部毎に信号伝達されるとき)のレベルで適用することができる。この場合、参照領域は、現在の領域、又は現在の領域を含むブロックと重なり合わないように制約される。或いは、イントラコピー予測動作は、BV値又は他のオフセット値がPB若しくはCB(又はその一部)に対して信号伝達されるときであっても、PB又はCB内のより小さいセクションに対して適用することができる。例えば、ブロックの第1のセクションについて、参照領域はブロック外の位置を含む。しかしながら、ブロックの第2のセクションについて、イントラコピー予測動作に使用される参照領域は、同じブロックの事前に再構成された第1のセクション内の位置を含むことができる。このように、BV値又はオフセット値は、同じPB又はCB内の位置を参照することができる。イントラコピー予測動作をPB又はCB内のセクションに適用できるようにすることは、比較的小さい大きさのBV値又は他のオフセットの使用を容易にする。
現在のユニット内の現在の領域に対する参照領域が同じユニット内の位置を含む場合、エンコーダが、(同じスライス及び同じタイル内にある)現在の領域及び参照領域のzスキャン順序を考慮することによって、BV値又は他のオフセット値の妥当性をチェックすることができる。例えば、エンコーダは、参照領域の右下位置(x0+offsetx+m−1,y0+offsety+n−1)を含むブロックのzスキャン順序が、現在領域の左上位置(x0,y0)を含むブロックのzスキャン順序より小さいことをチェックし、これにおいて、offsetはオフセット値を示し、現在領域及び参照領域は寸法m×nを有する。その場合、参照領域の右下位置を含むブロックは事前に再構成されている(また従って、参照領域の残りもそうである)。エンコーダは、オフセット値が条件offsetx+m≦0及びoffsety+n≦0のうち少なくとも1つを満たすことをさらにチェックして、参照領域が現在の領域に重ならないことを確保することができる。
一般に、zスキャン順序は、ピクチャを区分するユニットの、連続的に指定された順序付けに従う。図17は、現在の領域(1730)、及び参照領域の右下位置を含むことがあるユニットに対する、例示的なzスキャン順序(1700)を示している。現在の領域(1730)は、CB、PB、若しくは他のブロック、ライン、又はストリングを含む長方形であり得る。zスキャン順序は、一般に、行内で左から右へと連続的にユニットに割り当てられ、続く行において上から下へと繰り返される。ユニットが分割されると、zスキャン順序は分割ユニット内で再帰的に割り当てられる。H.265/HEVC規格のエンコーディング/デコーディングの実装の場合、zスキャン順序は、CTUラスタスキャンパターン(CTU行内で左から右、続くCTU行で上から下へと繰り返す)に沿ってCTUからCTUへ進行する。CTUが分割される場合、zスキャン順序は、分割されたCTU内の四分木のCUに対するラスタスキャンパターンに従う。また、CUが(例えば、複数のCUへ、又は複数のPUへと)分割される場合、zスキャン順序は、分割されたCU内のブロックに対するラスタスキャンパターンに従う。
いくつかの例示的な実装では、BV値又は他のオフセット値が、CU、PU、又は他のユニットに対して信号伝達され、ユニットの全てのブロックに適用される。色空間及び色サンプリングレートに依存して、BV値又は他のオフセット値は、スケーリングせずに全てのブロックに使用することができ、又は異なる色成分のブロックに対してスケーリングすることができる。或いは、異なるBV値又は他のオフセット値が、ユニットの異なるブロックに対して信号伝達されることができる。いくつかの例示的な実装では、同じ予測モード(例えば、イントラBCモード)がユニットの全てのブロックに適用される。或いは、異なるブロックが異なる予測モードを有することができる。
E.WPPが使用可能にされるときのイントラコピー予測に関する制約
一般に、イントラBC予測、イントラLC予測、及びイントラSC予測は、ピクチャ内の事前に再構成されたサンプル値を使用して、同じピクチャの現在のブロック、ライン、又はストリングのサンプル値を予測する。規則として、WPPが使用可能にされるときの事前に再構成されたサンプル値を含むピクチャのエリアは、WPPが使用可能にされないときの事前に再構成されたサンプル値を含むピクチャのエリアとは異なる。イントラコピー予測について、参照領域の場所に対するいくつかの制約が、WPPが使用可能にされるか否かにかかわらず強制される。参照領域の場所に対する1つ以上の他の制約が、WPPが使用可能にされるときに適用される。参照領域の場所に対する制約は、イントラBC予測について許容されるBV値に対する制限、又はイントラLC予測若しくはイントラSC予測について許容されるオフセット値に対する制限の形態をとることができる。
図18は、いくつかの例示的な実装による、WPPが使用可能にされるときのピクチャ(1810)の現在領域(1830)についての参照領域の場所に対する制約の一例(1800)を示している。ピクチャ(1810)はCTU行及びCTU列によって編成される。
現在の領域(1830)は、イントラコピーモードを用いてエンコードされ、又はデコードされる。現在の領域(1830)は現在のCTUの一部である。現在のCTUに関して、依存関係は前のCTU行からカスケードする。WPPが使用可能にされるとき、現在のCTUの処理を開始するのに、同じ行内でその左側にあるCTUは処理されており、右上のCTUまでの前の行内のCTUは処理されている。同様に、これらの既に処理されたCTUのいずれか1つについて、同じ行内で左側にあるCTUと右上のCTUまでの前の行内のCTUとは、処理されている。図18に示されるように、これらの事前に処理されたCTUは、WPPが使用可能にされるときにイントラコピー予測に利用可能であることを保証された、再構成されたコンテンツを提供する。
図18は、現在ピクチャ(1810)の現在の領域(1830)に対する候補参照領域のいくつかを示している。4つのオフセット値(1841、1842、1843、1844)が、4つの参照領域に関する変位を示す。候補参照領域は、他の候補参照領域と重なり合う場合がある。候補参照領域は、現在ピクチャ(1810)の再構成されたコンテンツ内のいずれかの場所であり得る。WPPが使用可能にされないとき、現在ピクチャ(1810)の再構成されたコンテンツは、一般に、現在のCTUの左側のCTU、及び前のCTU行の全てのCTUを含む。しかしながら、WPPが使用可能にされるとき、図18に示されるように、利用可能な再構成されたコンテンツはより少ない。図18では、オフセット値のうち3つ(1841、1842、1843)は有効な参照領域を示す。これらの有効な参照領域は、WPPが使用可能にされるときにイントラコピー予測に利用可能であることを保証された、再構成されたコンテンツ内のサンプル値のみを含む。オフセット値の1つ(1844)は無効の参照領域を示し、該領域は、WPPが使用可能にされるときにイントラコピー予測に利用可能であることを保証された、再構成されたコンテンツの、外側の少なくともいくつかのサンプル値を含む。
1.WPPが使用可能にされるときのイントラコピーモードに対する制約を用いるエンコード及びデコード
図19は、WPPが使用可能にされるときにイントラコピーモードに対して規則が強制される、エンコーディングのための一般化された技術(1900)を示している。図3又は図5a及び図5bに示されるエンコーダ、又は他のエンコーダなどのエンコーダが、技術(1900)を実施することができる。図20は、WPPが使用可能にされるときにイントラコピーモードに対して規則が強制される、デコーディングのための一般化された技術(2000)を示している。図4又は図6に示されるデコーダ、又は他のデコーダなどのデコーダが、技術(2000)を実施することができる。
図19を参照すると、エンコーダが、WPPが使用可能にされた状態でピクチャをエンコードする(1910)。エンコード(1910)は、エンコードされたデータを生成する。エンコーディング(1910)の一部として、イントラコピーモード(例えば、イントラBC予測、イントラLC予測、又はイントラSC予測を使用するモード)について、エンコーダは、WPPに起因する1つ以上の制約を強制する。エンコーダは、エンコードされたデータをビットストリームの一部として出力する(1920)。
図20を参照すると、デコーダが、エンコードされたデータをビットストリームの一部として受信する(2010)。エンコードされたデータは、イントラコピーモード(例えば、イントラBC予測、イントラLC予測、又はイントラSC予測を使用するモード)について、WPPに起因する1つ以上の制約を満たす。デコーダは、WPPが使用可能にされた状態で、エンコードされたデータをデコードする(2020)。デコーディング(2020)は、ピクチャを再構成する。
ビットストリーム内のシンタックス要素が、ビデオシーケンス、ピクチャのセット、又はピクチャについてWPPが使用可能にされるかを示すことができる。シンタックス要素は、SPSシンタックス構造、PPSシンタックス構造(例えば、H.265/HEVCの実装におけるシンタックス要素entropy_coding_sync_enabled_flag)、又はビットストリーム内の他のシンタックス構造において信号伝達することができる。
イントラコピーモードはイントラBCモードであり得る。この場合、ピクチャ内の現在のブロックについて、オフセット値がピクチャ内の参照ブロックへの変位を示す。参照ブロックは事前に再構成されたサンプル値を含む。或いは、イントラコピーモードはイントラLCモードであり得る。この場合、ピクチャのブロック内の現在のラインについて、オフセット値がピクチャ内の参照ラインへの変位を示す。参照ラインは、水平又は垂直方向であり得るラインスキャン方向でスキャンされた、事前に再構成されたサンプル値を含む。或いは、イントラコピーモードはイントラSCモードであり得る。この場合、ピクチャのブロック内の現在のストリングについて、オフセット値がピクチャ内の参照ストリングへの変位を示す。参照ストリングは、水平又は垂直方向であり得るストリングスキャン順序でスキャンされた、事前に再構成されたサンプル値を含む。現在のストリングについて、長さ値が、現在のストリング及び参照ストリングの各々の長さを示す。或いは、イントラコピーモードは、ピクチャ内の現在のブロック、ライン、ストリング、又は他のセクションについて、同じピクチャ内の参照ブロック、ライン、ストリング、又は他のセクションを発見するのにオフセット値を使用する、他の何らかのモードであることができ、その場合、参照ブロック、ライン、ストリングなどは、事前に再構成されたサンプル値を含む。
WPPに起因する制約は、参照領域から現在の領域への水平変位値が、現在の領域から参照領域への垂直変位値より小さいか又は等しいという制約を含むことができる。例えば、水平変位値は、参照領域の右端を含むWPP列から、現在の領域の左端を含むWPP列までの差を測定し、垂直変位値は、現在の領域の上端を含むWPP行から、参照領域の下端を含むWPP行までの差を測定する。いくつかの例示的な実装では、WPP列の各々はCTUの列であり、WPP行の各々はCTUの行である。或いは、WPPに起因する制約は、1つ以上の他の及び/又は追加の制約を含む。
イントラコピーモードがイントラBCモードである場合、現在の領域は現在のブロックであり、参照領域は参照ブロックである。イントラコピーモードがイントラLCモードである場合、現在の領域は現在のラインであり、参照領域は参照ラインである。イントラコピーモードがイントラSCモードである場合、現在の領域は現在のストリングを含む長方形であり、参照領域は参照ストリングを含む長方形である。エンコーダ又はデコーダは、ストリングスキャン順序(例えば、水平、垂直)における、現在のストリングの開始位置と、現在のストリングの終了位置と、現在のストリングの開始位置と終了位置との間の任意の位置とを含む、長方形を識別することができる。エンコーダ又はデコーダは、現在のストリングを含む長方形に適用されるオフセット値を使用して、参照ストリングを含む長方形を識別することができる。
エンコーダはまた、WPPに起因しない1つ以上の他の制約を強制することができる。例えば、エンコーダは、現在の領域の左上位置及び参照領域の左上位置が、適用可能であれば同じスライス内に、また適用可能であれば同じタイル内にあることをチェックすることができる。別の例として、エンコーダは、現在の領域の左上位置及び参照領域の右下位置が、適用可能であれば同じスライス内に、また適用可能であれば同じタイル内にあることをチェックすることができる。更に別の例として、エンコーダは、次の3つの条件のうち1つが満たされることをチェックすることができる。(a)参照領域の下端を含むCTU行が、現在の領域の上端を含むCTU行の上であること、(b)参照領域の下端を含むCTU行が現在の領域の上端を含むCTU行に等しい場合、参照領域の右端を含むCTU列が現在の領域の左端を含むCTU列の左であること、及び(c)参照領域の下端を含むCTU行が現在の領域の上端を含むCTU行に等しい場合、及び参照領域の右端を含むCTU列が現在の領域の左端を含むCTU列に等しい場合、参照領域の右下位置がzスキャン順序において現在の領域の左上位置より早いこと。
以下のセクションは、いくつかの例示的な実装による、WPPが使用可能にされるときにエンコーダがイントラBC予測、イントラLC予測、及びイントラSC予測に対してそれぞれ強制することができる、制約の例について詳述する。
2.WPPが使用可能にされるときのイントラBC予測のBV値に対する例示的な制約
このセクションは、WPPが使用可能にされるときにエンコーダがイントラBC予測対して強制することができる、制約の例を詳述する。現在のブロックについて、制約は、BV値によって示される候補参照ブロックが、WPPが使用可能にされるときであっても現在のブロックがエンコード又はデコードされるとき利用可能になる再構成されたサンプル値を含むことを、検証する。
定義。現在のブロックは、現在ピクチャの左上位置に対して、位置(x0,y0)から始まる。現在のブロックの幅及び高さはそれぞれ、wblock及びhblockである。現在のブロックは現在のCUの一部である。CTUサイズはSである。現在のCUは、ピクチャの左上位置に対して(xCU,yCU)から始まる。ブロックベクトルは(BVx,BVy)である。
エンコーダは、以下の制約の全てが満たされていることを検証する。
第1の制約。エンコーダは、位置(x0,y0)及び位置(x0+BVx,y0+BVy)が、同じスライス内及び同じタイル内にあることを検証する。つまり、エンコーダは、現在のブロックの左上位置及び参照ブロックの左上位置が、同じスライス内及び同じタイル内にあることを検証する。2つの位置が異なるスライス又は異なるタイル内にある場合、第1の制約は満たされない。
第2の制約。エンコーダは、位置(x0,y0)及び位置(x0+BVx+wblock−1,y0+BVy+hblock−1)が、同じスライス及び同じタイル内にあることを検証する。つまり、エンコーダは、現在のブロックの左上位置及び参照ブロックの右下位置が、同じスライス内及び同じタイル内にあることを検証する。2つの位置が異なるスライス又は異なるタイル内にある場合、第2の制約は満たされない。
第1及び第2の制約に関して、複数のスライスが使用されない場合、チェックされる2つの位置は必然的に同じスライス内であり、スライスに対する第1及び第2の制約をチェックする必要はない。同様に、複数のタイルが使用されない場合、チェックされる2つの位置は必然的に同じタイル内であり、タイルに対する第1及び第2の制約をチェックする必要はない。現在のブロックの全ての位置が単一のスライス及び単一のタイル内にある。第1及び第2の制約が満たされる場合、参照ブロックの全ての位置もそのスライス及びタイル内にある。エンコーダは、WPPが使用可能にされるか否かにかかわらず、第1及び第2の制約をチェックする。
第3の制約。第3の制約に関して、エンコーダは、以下の3つの条件のうち1つが満たされることを検証する。エンコーダは、WPPが使用可能にされるか否かにかかわらず、第3の制約をチェックする。
第3の制約の第1の条件。エンコーダは、(y0+BVy+hblock−1)/S<y0/Sであるか否かをチェックする。つまり、エンコーダは、参照ブロックの下端を含むCTU行を算出する:(y0+BVy+hblock−1)/S。エンコーダはまた、現在のブロックの上端を含むCTU行を算出する:y0/S。エンコーダは、次いで、参照ブロックの下端を含むCTU行が、現在のブロックの上端を含むCTU行の上であるか否かをチェックする。上側である場合、参照ブロックは必然的に、少なくともWPPが使用可能にされないとき、事前に再構成されたサンプル値を含む。
第3の制約の第2の条件。(y0+BVy+hblock−1)/S==y0/Sのとき、エンコーダは、(x0+BVx+wblock−1)/S<x0/Sであるか否かをチェックする。つまり、参照ブロックの下端を含むCTU行が、現在のブロックの上端を含むCTU行に等しい場合(同じCTU行)、エンコーダは、(a)参照ブロックの右端を含むCTU列((x0+BVx+wblock−1)/S)、及び(b)現在のブロックの左端を含むCTU列(x0/S)を算出する。エンコーダは、次いで、参照ブロックの右端を含むCTU列が、現在のブロックの左端を含むCTU列の左であるか否かをチェックする。左側である場合、参照ブロックは必然的に、事前に再構成されたサンプル値を含む。
第3の制約の第3の条件。(y0+BVy+hblock−1)/S==y0/S及び(x0+BVx+wblock−1)/S==x0/Sのとき、エンコーダは、位置(x0+BVx+wblock−1,y0+yBV+hblock−1)のzスキャン順序が、位置(x0,y0)のzスキャン順序よりも小さいか否かをチェックする。つまり、参照ブロックの下端を含むCTU行が現在のブロックの上端を含むCTU行に等しい場合(同じCTU行)、及び参照ブロックの右端を含むCTU列が現在のブロックの左端を含むCTU列に等しい場合(同じCTU列)、エンコーダは、参照ブロックの右下位置がzスキャン順序において現在のブロックの左上位置より早いか否かをチェックする。第3の条件は、現在のCU内からの予測が許容される場合に適用される。現在のCU内からの予測が許容されない場合、(x0,y0)は(xCU,yCU)のはずである。
第4の制約。エンコーダは、WPPが使用可能にされるときの第4の制約をチェックする。第4の制約に関して、エンコーダは、(x0+BVx+wblock−1)/S−x0/S<=y0/S−(y0+BVy+hblock−1)/Sであることを検証する。つまり、エンコーダは、参照ブロックの右端を含むCTU列と現在のブロックの左端を含むCTU列との差を算出する:(x0+BVx+wblock−1)/S−x0/S。エンコーダはまた、現在のブロックの上端を含むCTU行と参照ブロックの下端を含むCTU行との差を算出する:y0/S−(y0+BVy+hblock−1)/S。エンコーダは、第1の差(CTU列間)が第2の差(CTU行間)より小さいか又は等しいことを検証する。図8又は図18において現在のCTUから上側及び右側の、CTUのギザギザの線に示されるように、上記のことは、参照ブロックが、WPPが使用可能にされるときに予測に利用可能であることを保証された、再構成されたコンテンツの一部であることを検証する。
3.WPPが使用可能にされるときのイントラLC予測のオフセット値に対する例示的な制約
このセクションは、WPPが使用可能にされるときにエンコーダがイントラLC予測に対して強制することができる、制約の例を詳述する。現在のラインについて、制約は、オフセット値によって示される候補参照ラインが、WPPが使用可能にされるときであっても現在のラインがエンコード又はデコードされるとき利用可能になる再構成されたサンプル値を含むことを、検証する。
定義。現在のブロックは、現在ピクチャの左上位置に対して、位置(x0,y0)から開始する。現在のブロックの幅及び高さはそれぞれ、wblock及びhblockである。現在のブロックは現在のCUの一部である。CTUサイズはSである。現在のラインに対するオフセット値は(offsetx,offsety)である。現在のブロックのうちLラインが既に処理されている。
エンコーダは、現在のブロックの現在のラインの開始及び終了位置を定義する。位置(xcurr_line_start,ycurr_line_start)は現在のラインの開始位置であり、位置(xcurr_line_end,ycurr_line_end)は現在のラインの終了位置である。水平スキャン(行モードとも呼ばれる)が使用されるとき、あらゆるラインが現在のブロックの行である:(xcurr_line_start,ycurr_line_start)=(x0,y0+L)、及び(xcurr_line_end,ycurr_line_end)=(x0+wblock−1,y0+L)。垂直スキャン(列モードとも呼ばれる)が使用されるとき、あらゆるラインが現在のブロックの列である:(xcurr_line_start,ycurr_line_start)=(x0+L,y0)、及び(xcurr_line_end,ycurr_line_end)=(x0+L,y0+hblock−1)。
エンコーダはまた、現在のラインを予測する候補参照ラインの開始及び終了位置を定義する。位置(xref_line_start,yref_line_start)は参照ラインの開始位置である。位置(xref_line_end,yref_line_end)は参照ラインの終了位置である。参照ラインは、行(水平スキャンが使用されるとき)又は列(垂直スキャンが使用されるとき)であり得る。水平スキャン(行モード)又は垂直スキャン(列モード)が使用される:(xref_line_start,yref_line_start)=(xcurr_line_start,ycurr_line_start)+(offsetx,offsety)、及び(xref_line_end,yref_end)=(xcurr_line_end,ycurr_line_end)+(offsetx,offsety)。
エンコーダは、以下の制約の全てが満たされていることを検証する。これらの制約のいくつかに関して、現在のブロックの左上位置(x0,y0)が考慮される。或いは、かかる制約に関して、現在のラインの開始位置(xcurr_line_start,ycurr_line_start)を、現在のブロックの左上位置(x0,y0)の代わりにチェックすることができる。
第1の制約。エンコーダは、位置(x0,y0)及び位置(xref_line_start,yref_line_start)が同じスライス内及び同じタイル内にあることを検証する。つまり、エンコーダは、現在のブロックの左上位置及び参照ラインの開始位置が、同じスライス内及び同じタイル内にあることを検証する。2つの位置が異なるスライス又は異なるタイル内にある場合、第1の制約は満たされていない。
第2の制約。エンコーダは、位置(x0,y0)及び位置(xref_line_end,yref_line_end)が同じスライス及び同じタイル内にあることを検証する。つまり、エンコーダは、現在のブロックの左上位置及び参照ラインの終了位置が、同じスライス内及び同じタイル内にあることを検証する。2つの位置が異なるスライス又は異なるタイル内にある場合、第2の制約は満たされない。
第1及び第2の制約に関して、複数のスライスが使用されない場合、チェックされる2つの位置は必然的に同じスライス内であり、スライスに関して第1及び第2の制約をチェックする必要はない。同様に、複数のタイルが使用されない場合、チェックされる2つの位置は必然的に同じタイル内であり、タイルに関して第1及び第2の制約をチェックする必要はない。現在のラインの全ての位置が、単一のスライス及び単一のタイル内にある。第1及び第2の制約が満たされる場合、参照ラインの全ての位置もそのスライス及びタイル内にある。エンコーダは、WPPが使用可能にされるか否かにかかわらず、第1及び第2の制約をチェックする。
第3の制約。第3の制約に関して、エンコーダは、以下の3つの条件の1つが満たされることを検証する。エンコーダは、WPPが使用可能にされるか否かにかかわらず、第3の制約をチェックする。
第3の制約の第1の条件。エンコーダは、yref_line_end/S<y0/Sであるか否かをチェックする。つまり、エンコーダは、参照ラインの下端又は下位置を含むCTU行を算出する:yref_line_end/S。エンコーダはまた、現在のブロックの上端を含むCTU行を算出する:y0/S。次いで、エンコーダは、参照ラインの下端又は下位置を含むCTU行が、現在のブロックの上端を含むCTU行の上であるか否かをチェックする。上側である場合、参照ラインは必然的に、少なくともWPPが使用可能にされないとき、事前に再構成されたサンプル値を含む。
第3の制約の第2の条件。yref_line_end/S==y0/Sのとき、エンコーダは、xref_line_end/S<x0/Sであるか否かをチェックする。つまり、参照ラインの下端又は下位置を含むCTU行が現在のブロックの上端を含むCTU行に等しい場合(同じCTU行)、エンコーダは、(a)参照ラインの右端又は右位置を含むCTU列(xref_line_end/S)、及び(b)現在のブロックの左端を含むCTU列(x0/S)を算出する。次いで、エンコーダは、参照ラインの右端又は右位置を含むCTU列が、現在のブロックの左端を含むCTU列の左であるか否かをチェックする。左側である場合、参照ラインは必然的に、事前に再構成されたサンプル値を含む。
第3の制約の第3の条件。yref_line_end/S==y0/S及びxref_line_end/S==x0/Sのとき、エンコーダは、位置(xref_line_end,yref_line_end)のzスキャン順序が、位置(xcurr_line_start,ycurr_line_start)のzスキャン順序より小さいか否かをチェックする。つまり、参照ラインの下端又は下位置を含むCTU行が現在のブロックの上端を含むCTU行に等しく(同じCTU行)、参照ラインの右端又は右位置を含むCTU列が現在のブロックの左端を含むCTU列に等しい場合(同じCTU列)、エンコーダは、参照ラインの終了位置がzスキャン順序において現在のラインの開始位置より早いか否かをチェックする。第3の条件は、現在のCU内からの予測が許容される場合に適用される。現在のCU内からの予測が許容されない場合、(xcurr_line_start,ycurr_line_start)は(x0,y0)であるべきである。
第4の制約。エンコーダは、WPPが使用可能にされるときの第4の制約をチェックする。第4の制約に関して、エンコーダは、xref_line_end/S−x0/S<=y0/S−yref_line_end/Sであることを検証する。つまり、エンコーダは、参照ラインの右端又は右位置を含むCTU列と現在のブロックの左端を含むCTU列との差を算出する:xref_line_end/S−x0/S。エンコーダはまた、現在のブロックの上端を含むCTU行と参照ラインの下端又は下位置を含むCTU行との差を算出する:y0/S−yref_line_end/S。エンコーダは、第1の差(CTU列間)が第2の差(CTU行間)より小さいか又は等しいことを検証する。
4.WPPが使用可能にされるときのイントラSC予測のオフセット値に対する例示的な制約
このセクションは、WPPが使用可能にされるときにイントラSC予測に対してエンコーダが強制することができる、制約の例を詳述する。現在のストリングについて、制約は、オフセット値及び長さ値によって示される候補参照ストリングが、WPPが使用可能にされるときであっても現在のストリングがエンコード又はデコードされるとき利用可能になる再構成されたサンプル値を含むことを、検証する。
定義。現在のブロックは、現在ピクチャの左上位置に対して、位置(x0,y0)から始まる。現在のブロックの幅及び高さはそれぞれ、wblock及びhblockである。現在のブロックは現在のCUの一部である。CTUサイズはSである。現在のストリングに対するオフセット値は(offsetx,offsety)であり、現在のストリングに対するストリング長さ値はlengthstringである。現在のブロックのうちKピクセルが、イントラSC予測を使用して既に処理されている。
エンコーダは、現在のブロックの現在のストリングの開始及び終了位置を定義する。位置(xcurr_string_start,ycurr_string_start)は現在のストリングの開始位置であり、位置(xcurr_string_end,ycurr_string_end)は現在のストリングの終了位置である。エンコーダはまた、現在のストリングの開始位置と、現在のストリングの終了位置と、(ストリングスキャン順序において)現在のストリングの開始及び終了位置の間の任意の位置とを含む、境界長方形を定義する。境界長方形の左上位置は(xcurr_rect_TL,ycurr_rect_TL)である。境界長方形の右下位置は(xcurr_rect_BR,ycurr_rect_BR)である。エンコーダは、(参照ストリングを含む)参照長方形を、オフセット値で変位された境界長方形として定義する。参照長方形の左上位置は(xref_rect_TL,yref_rect_TL)である。境界長方形の右下位置は(xref_rect_BR,yref_rect_BR)である。
水平ストリングスキャンが使用されるとき(現在のブロックの行内で左から右、上の行から下の行)、開始位置は:(xcurr_string_start,ycurr_string_start)=(x0+K%wblock,y0+K/wblock)である。終了位置は:(xcurr_string_end,ycurr_string_end)=(x0+(K+lengthstring−1)%wblock,y0+(K+lengthstring−1)/wblock)である。現在のストリングの開始位置及び終了位置が現在のブロックの同じ行にある場合、(xcurr_rect_TL,ycurr_rect_TL)=(xcurr_string_start,ycurr_string_start)、及び(xcurr_rect_BR,ycurr_rect_BR)=(xcurr_string_end,ycurr_string_end)である。そうでなければ、境界長方形の左上位置は(xcurr_rect_TL,ycurr_rect_TL)=(x0,y0+K/wblock)であり、境界長方形の右下位置は(xcurr_rect_BR,ycurr_rect_BR)=(x0+wblock−1),y0+(K+lengthstring−1)/wblock)である。
垂直スキャンが使用されるとき(現在のブロックの列内で上から下、左の列から右の列)、開始位置は:(xcurr_string_start,ycurr_string_start)=(x0+K/hblock,y0+K%hblock)である。終了位置は:(xcurr_string_end,ycurr_string_end)=(x0+(K+lengthstring−1)/hblock,y0+(K+lengthstring−1)%hblock)である。現在のストリングの開始位置及び終了位置が現在のブロックの同じ列内にあるとき、(xcurr_rect_TL,ycurr_rect_TL)=(xcurr_string_start,ycurr_string_start)、及び(xcurr_rect_BR,ycurr_rect_BR)=(xcurr_string_end,ycurr_string_end)である。そうでなければ、境界長方形の左上位置は(xcurr_rect_TL,ycurr_rect_TL)=(x0+K/hblock,y0)であり、境界長方形の右下位置は(xcurr_rect_BR,ycurr_rect_BR)=(x0+(K+lengthstring−1)/hblock),y0+hblock−1)である。
水平スキャンが使用されるか又は垂直スキャンが使用されるかにかかわらず、参照長方形の左上位置は、(xref_rect_TL,yref_rect_TL)=(xcurr_rect_TL,ycurr_rect_TL)+(offsetx,offsety)であり、参照長方形の右下位置は、(xref_rect_BR,yref_rect_BR)=(xcurr_rect_BR,ycurr_rect_BR)+(offsetx,offsety)である。最後に、参照ストリングの開始位置は、(xref_string_start,yref_string_start)=(xcurr_string_start,ycurr_string_start)+(offsetx,offsety)である。
エンコーダは、以下の制約の全てが満たされることを検証する。これらの制約のいくつかに関して、現在のブロックの左上位置(x0,y0)が考慮される。或いは、かかる制約に関して、現在のストリングの開始位置又は境界長方形の左上位置を、現在のブロックの左上位置(x0,y0)の代わりにチェックすることができる。
第1の制約。エンコーダは、位置(x0,y0)及び位置(xref_rect_TL,yref_rect_TL)が同じスライス内及び同じタイル内にあることを検証する。つまり、エンコーダは、現在のブロックの左上位置及び参照長方形の左上位置が、同じスライス内及び同じタイル内にあることを検証する。2つの位置が異なるスライス又は異なるタイル内にある場合、第1の制約は満たされない。
第2の制約。エンコーダは、位置(x0,y0)及び位置(xref_rect_BR,yref_rect_BR)が同じスライス及び同じタイル内にあることを検証する。つまり、エンコーダは、現在のブロックの左上位置及び参照長方形の右下位置が、同じスライス内及び同じタイル内にあることを検証する。2つの位置が異なるスライス又は異なるタイル内にある場合、第2の制約は満たされない。
第1及び第2の制約に関して、複数のスライスが使用されない場合、チェックされる2つの位置は必然的に同じスライス内であり、スライスに関して第1及び第2の制約をチェックする必要はない。同様に、複数のタイルが使用されない場合、チェックされる2つの位置は必然的に同じタイル内であり、タイルに関して第1及び第2の制約をチェックする必要はない。現在のストリングの全ての位置が、単一のスライス及び単一のタイル内にある。第1及び第2の制約が満たされる場合、参照長方形(また従って、参照ストリング)の全ての位置もそのスライス及びタイル内にある。エンコーダは、WPPが使用可能にされるか否かにかかわらず、第1及び第2の制約をチェックする。
第3の制約。第3の制約に関して、エンコーダは、以下の条件のうち1つ以上が満たされることを検証する。エンコーダは、WPPが使用可能にされるか否かにかかわらず、第3の制約をチェックする。
第3の制約の第1の条件。エンコーダは、yref_rect_BR/S<y0/Sであるか否かをチェックする。つまり、エンコーダは、参照長方形の下端を含むCTU行を算出する:yref_rect_BR/S。エンコーダはまた、現在のブロックの上端を含むCTU行を算出する:y0/S。次いで、エンコーダは、参照長方形の下端を含むCTU行が、現在のブロックの上端を含むCTU行の上であるか否かをチェックする。上側である場合、参照長方形は必然的に、少なくともWPPが使用可能にされないとき、事前に再構成されたサンプル値を含む。
第3の制約の第2の条件。yref_rect_BR/S==y0/Sのとき、エンコーダは、xref_rect_BR/S<x0/Sであるか否かをチェックする。つまり、参照長方形の下端を含むCTU行が現在のブロックの上端を含むCTU行に等しい場合(同じCTU行)、エンコーダは、(a)参照長方形の右端を含むCTU列(xref_rect_BR/S)、及び(b)現在のブロックの左端を含むCTU列(x0/S)を算出する。次いで、エンコーダは、参照長方形の右端を含むCTU列が、現在のブロックの左端を含むCTU列の左であるか否かをチェックする。左側である場合、参照長方形は必然的に、事前に再構成されたサンプル値を含む。
第3の制約の第3の条件。yref_rect_BR/S==y0/S及びxref_rect_BR/S==x0/Sのとき、エンコーダは、位置(xref_rect_BR,yref_rect_BR)のzスキャン順序が、位置(x0,y0)のzスキャン順序より小さいか否かをチェックする。つまり、参照長方形の下端を含むCTU行が現在のブロックの上端を含むCTU行に等しく(同じCTU行)、参照長方形の右端を含むCTU列が現在のブロックの左端を含むCTU列に等しい場合(同じCTU列)、エンコーダは、参照長方形の右下位置がzスキャン順序において現在のブロックの左上位置より早いか否かをチェックする。
第3の制約の第4の条件。現在のCU内からの予測が許容される場合、yref_string_start==y0のとき、エンコーダは、xref_string_start<x0であることをチェックする。つまり、現在のCU内からの予測が許容される場合、現在のストリング及び参照ストリングが同じ行で始まり、参照ストリングが現在のストリングの左側で始まる場合に、第3の制約を満たすことができる。
第4の制約。エンコーダは、WPPが使用可能にされるときの第4の制約をチェックする。第4の制約に関して、エンコーダは、xref_rect_BR/S−x0/S<=y0/S−yref_rect_BR/Sであることを検証する。つまり、エンコーダは、参照長方形の右端又は右位置を含むCTU列と現在のブロックの左端を含むCTU列との差を算出する:xref_rect_BR/S−x0/S。エンコーダはまた、現在のブロックの上端を含むCTU行と参照長方形の下端又は下位置を含むCTU行との差を算出する:y0/S−yref_rect_BR/S。エンコーダは、第1の差(CTU列間)が第2の差(CTU行間)より小さいか又は等しいことを検証する。
第5の制約。第5の制約に関して、エンコーダは、K+lengthstring<=wblock×hblockであることを検証する。つまり、エンコーダは、現在のブロックが、既に処理されている位置のカウントを考慮して、現在のストリングに対して十分な位置を含むことをチェックする。
F.代替例及び変形例
本明細書に記載する例の多くでは、イントラコピー予測及び動き補償が別個のコンポーネント又はプロセスで実現され、オフセット推定及び動き推定が別個のコンポーネント又はプロセスで実現される。或いは、イントラコピー予測は、動き補償の特別な事例として実現することができ、オフセット推定は、現在ピクチャが参照ピクチャとして使用される、動き推定の特別な事例として実現することができる。かかる実装では、オフセット値をMV値として信号伝達することができるが、ピクチャ間予測ではなく(現在のピクチャ内の)イントラコピー予測に使用される。本明細書で使用されるとき、「イントラコピー予測」という用語は、予測が、ピクチャ内予測モジュール、動き補償モジュール、又は他の何らかのモジュールのどれを使用して提供されるかにかかわらず、現在ピクチャ内の予測を示す。同様に、BV値又は他のオフセット値は、MV値を使用して、又は区別可能なタイプのパラメータ若しくはシンタックス要素を使用して表すことができ、オフセット推定は、ピクチャ内推定モジュール、動き推定モジュール、又は他の何らかのモジュールを使用して提供することができる。
開示する発明の原理が適用されてもよい多くの可能な実施形態の観点で、例証される実施形態は本発明の好ましい実施例に過ぎず、本発明の範囲を限定するものとしてとらえられるべきでないことを認識すべきである。むしろ、本発明の範囲は以下の特許請求の範囲によって定義される。従って、本発明として、こうした請求項の範囲及び趣旨内にあるもの全てを請求する。