詳細な説明は、イントラブロックコピー(「BC」)予測を用いたブロックの符号化又は復号の領域におけるイノベーションを提示している。例えば、本イノベーションのうちのいくつかは、イントラBC予測ブロックが、ブロックベクトル(「BV」)値により示され得る参照領域に対して反転されるブロック反転に関する。他のイノベーションは、現イントラBC予測ブロックが、シグナリングされたBV差分を使用するが残差データを有さないスキップモードのシグナリングに関する。多くの状況において、本イノベーションは、イントラBC予測ブロックの符号化効率を向上させる。
本明細書に記載のオペレーションは、ビデオエンコーダ又はビデオデコーダにより実行されるものとして所々で説明されるが、多くの場合、このようなオペレーションは、別のタイプのメディア処理ツール(例えば、画像エンコーダ又は画像デコーダ)により実行することができる。
本明細書に記載のイノベーションのうちのいくつかは、H.265/HEVC規格に固有のシンタックス要素及びオペレーションを参照して示される。例えば、H.265/HEVC規格のドラフトバージョンJCTVC−P1005(”High Efficiency Video Coding (HEVC) Range Extensions Text Specification: Draft 6”, JCTVC-P1005_v1, February 2014)を参照する。本明細書に記載のイノベーションはまた、他の規格又はフォーマットのためにも実装することができる。
本明細書に記載のイノベーションのうちのいくつか(例えば、ブロック反転)は、イントラBC予測を参照しながら説明される。本イノベーションはまた、他のコンテキスト(例えば、動き補償における参照領域についてのブロック反転)においても適用することができる。
より一般的に、本明細書に記載の例に対する様々な代替例が可能である。例えば、本明細書に記載の方法のうちのいくつかは、例えば、説明する方法動作の順番を変えることにより、所定の方法動作を分けることにより、所定の方法動作を繰り返すことにより、又は所定の方法動作を省略することにより、変更することができる。開示する技術の様々な態様が、組み合わせて又は別々に、使用され得る。様々な実施形態が、説明するイノベーションのうちの1以上を使用する。本明細書に記載のイノベーションのうちのいくつかは、背景技術において記した問題のうちの1以上に対処する。一般的に、所与の技術/ツールが、そのような問題の全てを解決するわけではない。
I.例示的なコンピューティングシステム
図1は、説明するイノベーションのうちのいくつかを実装することができる適切なコンピューティングシステム(100)の一般化された例を示している。コンピューティングシステム(100)は、使用又は機能の範囲に関して限定を示唆するよう意図するものではない。なぜならば、本イノベーションは、多様な汎用コンピューティングシステム又は専用コンピューティングシステムにおいて実施することができるからである。
図1を参照すると、コンピューティングシステム(100)は、1以上の処理装置(110、115)及びメモリ(120、125)を含む。処理装置(110、115)は、コンピュータ実行可能な命令を実行する。処理装置は、汎用中央処理装置(「CPU」)、特定用途向け集積回路(「ASIC」)におけるプロセッサ、又は任意の他のタイプのプロセッサとすることができる。マルチ処理システムにおいては、複数の処理装置が、処理能力を増大させるために、コンピュータ実行可能な命令を実行する。例えば、図1は、中央処理装置(110)に加えて、グラフィックス処理装置又は共処理装置(115)も示している。有体のメモリ(120、125)は、1以上の処理装置によりアクセス可能な、揮発性メモリ(例えば、レジスタ、キャッシュ、RAM)であってもよいし、不揮発性メモリ(例えば、ROM、EEPROM、フラッシュメモリ等)であってもよいし、これら2つの何らかの組合せであってもよい。メモリ(120、125)は、1以上の処理装置による実行に適したコンピュータ実行可能な命令の形態で、イントラBC予測におけるブロック反転及び/又はスキップモードのための1以上のイノベーションを実装するソフトウェア(180)を記憶する。
コンピューティングシステムは、さらなる特徴を有することができる。例えば、コンピューティングシステム(100)は、ストレージ(140)、1以上の入力デバイス(150)、1以上の出力デバイス(160)、及び1以上の通信接続(170)を含む。バス、コントローラ、又はネットワーク等の相互接続機構(図示せず)が、コンピューティングシステム(100)のコンポーネントを相互接続する。通常、オペレーティングシステムソフトウェア(図示せず)が、コンピューティングシステム(100)において実行される他のソフトウェアのための動作環境を提供し、コンピューティングシステム(100)のコンポーネントの動作を調整する。
有体のストレージ(140)は、着脱可能であっても着脱不可能であってもよく、磁気ディスク、磁気テープ、磁気カセット、CD−ROM、DVD、又は、情報を記憶するために使用することができ、コンピューティングシステム(100)内でアクセスされ得る任意の他の媒体を含む。ストレージ(140)は、イントラBC予測におけるブロック反転及び/又はスキップモードのための1以上のイノベーションを実装するソフトウェア(180)の命令を記憶する。
1以上の入力デバイス(150)は、キーボード、マウス、ペン、若しくはトラックボール等のタッチ入力デバイス、音声入力デバイス、スキャニングデバイス、又はコンピューティングシステム(100)への入力を提供する別のデバイスとすることができる。ビデオに関して、1以上の入力デバイス(150)は、カメラ、ビデオカード、TVチューナカード、スクリーンキャプチャモジュール、若しくはアナログ形態あるいはデジタル形態のビデオ入力を受け入れる同様のデバイス、又はビデオ入力をコンピューティングシステム(100)に読み込むCD−ROMあるいはCD−RWとすることができる。1以上の出力デバイス(160)は、ディスプレイ、プリンタ、スピーカ、CDライタ、又はコンピューティングシステム(100)からの出力を提供する別のデバイスとすることができる。
1以上の通信接続(170)は、通信媒体を介した別のコンピューティングエンティティとの通信を可能にする。通信媒体は、変調されたデータ信号により、コンピュータ実行可能な命令、オーディオ入力、ビデオ入力、オーディオ出力、ビデオ出力、又は他のデータ等の情報を伝達する。変調されたデータ信号とは、信号内の情報を符号化するように設定又は変更された特性のうちの1以上を有する信号である。限定ではなく例として、通信媒体は、電気、光、RF、又は他のキャリアを使用することができる。
本イノベーションは、コンピュータ読み取り可能な媒体の一般的なコンテキストにおいて説明され得る。コンピュータ読み取り可能な媒体は、コンピューティング環境内でアクセスされ得る任意の利用可能な有体の媒体である。限定ではなく例として、コンピューティングシステム(100)において、コンピュータ読み取り可能な媒体は、メモリ(120、125)、ストレージ(140)、及びこれらの任意の組合せを含む。
本イノベーションは、コンピュータ実行可能な命令の一般的なコンテキストにおいて説明され得る。コンピュータ実行可能な命令は、例えば、プログラムモジュールに含まれ、コンピューティングシステムにおいて、ターゲット実プロセッサ又は仮想プロセッサ上で実行される。一般に、プログラムモジュールは、特定のタスクを実行する又は特定の抽象データ型を実装するルーチン、プログラム、ライブラリ、オブジェクト、クラス、コンポーネント、データ構造等を含む。プログラムモジュールの機能は、様々な実施形態において、必要に応じて、組み合わされてもよいし、プログラムモジュール間で分割されてもよい。プログラムモジュールのコンピュータ実行可能な命令は、ローカルコンピューティングシステム又は分散コンピューティングシステム内で実行され得る。
「システム」及び「デバイス」という用語は、本明細書において置き換え可能に使用される。文脈が別途明確に示さない限り、これらの用語は、コンピューティングシステム又はコンピューティングデバイスのタイプに関していかなる限定も示すものではない。一般に、コンピューティングシステム又はコンピューティングデバイスは、局在することもあるし分散されることもあり、専用ハードウェア及び/又は汎用ハードウェアと、本明細書に記載の機能を実装するソフトウェアと、の任意の組合せを含み得る。
開示する方法は、開示する方法のいずれかを実行するよう構成された専用コンピューティングハードウェアを用いて実装することもできる。例えば、開示する方法は、開示する方法のいずれかを実行するよう特別に設計又は構成された集積回路(例えば、ASIC(ASICデジタル信号プロセッサ(「DSP」)等)、グラフィックス処理装置(「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)からの符号化データを受け入れることができる。双方向通信は、ビデオ会議、ビデオ通話、又は他の2パーティ若しくはマルチパーティ通信シナリオの一部であり得る。図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)は、再生ツール(214)が受信するビデオのストリームを判定するために、符号化ツール(212)と通信する。再生ツール(214)は、ストリームを受信し、受信した符号化データを適切な期間の間バッファし、復号及び再生を開始する。
図3は、符号化ツール(212)に含まれ得る例示的なエンコーダシステム(300)を示している。代替的に、符号化ツール(212)は、別のエンコーダシステムを使用してもよい。符号化ツール(212)はまた、1以上の再生ツール(214)との接続を管理するためのサーバサイドコントローラロジックも含み得る。図4は、再生ツール(214)に含まれ得る例示的なデコーダシステム(400)を示している。代替的に、再生ツール(214)は、別のデコーダシステムを使用してもよい。再生ツール(214)はまた、符号化ツール(212)との接続を管理するためのクライアントサイドコントローラロジックも含み得る。
III.例示的なエンコーダシステム
図3は、いくつかの説明する実施形態を協働して実装することができる例示的なエンコーダシステム(300)のブロック図である。エンコーダシステム(300)は、リアルタイム通信のための低遅延符号化モード、トランスコーディングモード、及びファイル又はストリームからの再生のためのメディアを生成するためのより高遅延の符号化モード等の複数の符号化モードのうちのいずれかで動作することができる汎用符号化ツールであってもよいし、そのような1つの符号化モードのために適合された専用符号化ツールであってもよい。エンコーダシステム(300)は、特定のタイプのコンテンツ(例えば、スクリーンキャプチャコンテンツ)を符号化するよう適合され得る。エンコーダシステム(300)は、オペレーティングシステムモジュールとして、アプリケーションライブラリの一部として、又はスタンドアロンアプリケーションとして、実装することができる。概して、エンコーダシステム(300)は、ビデオソース(310)から、一連のソースビデオフレーム(311)を受信し、チャネル(390)への出力として符号化データを生成する。チャネルに出力される符号化データは、本明細書で説明するように、イントラBC予測においてブロック反転及び/又はスキップモードを用いて符号化されたコンテンツを含み得る。
ビデオソース(310)は、カメラ、チューナカード、記憶媒体、スクリーンキャプチャモジュール、又は他のデジタルビデオソースとすることができる。ビデオソース(310)は、例えば、毎秒30フレームといったフレームレートで一連のビデオフレームを生成する。本明細書で使用されるとき、「フレーム」という用語は、一般に、ソースの符号化又は再構成された画像データを指す。プログレッシブスキャンビデオに関して、フレームは、プログレッシブスキャンビデオフレームである。インターレースビデオに関して、例示的な実施形態において、インターレースビデオフレームは、符号化の前にインターレース解除され得る(de-interlaced)。代替的に、2つの相補的インターレースビデオフィールドが、1つのビデオフレームとして一緒に符号化されてもよいし、2つの別々に符号化されるフィールドとして符号化されてもよい。プログレッシブスキャンビデオフレーム又はインターレーススキャンビデオフレームを示すかは別にして、「フレーム」又は「ピクチャ」という用語は、単一の対でないビデオフィールド、相補的な一対のビデオフィールド、所与の時間におけるビデオオブジェクトを表すビデオオブジェクトプレーン、又はより大きな画像における関心領域を示し得る。ビデオオブジェクトプレーン又は領域は、シーンの複数のオブジェクト又は領域を含むより大きな画像の一部であり得る。
到着ソースフレーム(311)は、複数のフレームバッファ記憶領域(321、322、...、32n)を含むソースフレーム一時メモリ記憶領域(320)に記憶される。フレームバッファ(321、322等)は、ソースフレーム記憶領域(320)内で1つのソースフレームを保持する。ソースフレーム(311)のうちの1以上がフレームバッファ(321、322等)に記憶された後、フレームセレクタ(330)が、ソースフレーム記憶領域(320)から個々のソースフレームを選択する。エンコーダ(340)への入力のためにフレームセレクタ(330)によりフレームが選択される順番は、ビデオソース(310)によりフレームが生成される順番とは異なり得る。例えば、いくつかの後続フレームが最初に符号化され、これにより、時間的後方予測を容易にすることを可能にするために、いくつかのフレームの符号化は、順に遅延されることがある。エンコーダ(340)の前に、エンコーダシステム(300)は、符号化の前に選択されたフレーム(331)の前処理(例えば、フィルタリング)を実行するプリプロセッサ(図示せず)を含み得る。前処理は、符号化のための、プライマリ(例えば、ルマ)成分及びセカンダリ(例えば、赤及び青に対するクロマ差)成分への色空間変換及び(例えば、クロマ成分の空間解像度を低減させるための)再サンプリング処理を含み得る。通常、符号化の前に、ビデオは、YUV等の色空間に変換されている。YUVでは、ルマ(Y)成分のサンプル値は、輝度値又は明度値を表し、クロマ(U、V)成分のサンプル値は、色差値を表す。色差値(及び、YUV色空間からRGB等の別の色空間への変換演算、RGB等の別の色空間からYUV色空間への変換演算)の正確な定義は、実装に依存する。一般に、本明細書で使用されるとき、YUVという用語は、1つのルマ(又はルミナンス)成分と1以上のクロマ(又はクロミナンス)成分とを有する任意の色空間を示し、Y’UV、YIQ、Y’IQ、及びYDbDrに加えて、YCbCr及びYCoCg等の変形を含む。クロマサンプル値は、(例えば、YUV4:2:0フォーマットに合わせるために)より低いクロマサンプリングレートにサブサンプリングされ得る、あるいは、クロマサンプル値は、(例えば、YUV4:4:4フォーマットに合わせるために)ルマサンプル値と同じ解像度を有し得る。あるいは、ビデオは、別のフォーマット(例えば、RGB4:4:4フォーマット)で符号化され得る。
エンコーダ(340)は、選択されたフレーム(331)を符号化して、符号化フレーム(341)を生成するとともに、メモリ管理制御操作(「MMCO」)信号(342)又は参照ピクチャセット(「RPS」)情報を生成する。RPSは、現フレーム又は任意の後続フレームのための動き補償における参照のために使用され得るフレームのセットである。現フレームが、符号化された最初のフレームではない場合、符号化プロセスを実行するとき、エンコーダ(340)は、復号フレーム一時メモリ記憶領域(360)に記憶されている1以上の以前に符号化/復号されたフレーム(369)を使用することができる。そのような記憶されている復号フレーム(369)は、現ソースフレーム(331)のコンテンツのインターフレーム予測(フレーム間予測)のための参照フレームとして使用される。MMCO/RPS情報(342)は、どの再構成フレームが、参照フレームとして使用され得るかを、したがって、フレーム記憶領域に記憶されるべきかを、デコーダに示す。
一般に、エンコーダ(340)は、タイルへの分割、イントラ予測推定及び予測、動き推定及び動き補償、周波数変換、量子化、並びにエントロピ符号化等の符号化タスクを実行する複数の符号化モジュールを含む。エンコーダ(340)により実行される正確なオペレーションは、圧縮フォーマットに応じて変わり得る。出力される符号化データのフォーマットは、H.265/HEVCフォーマットの変形又は拡張、Windows(登録商標) Media Videoフォーマット、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規格に従ったシンタックスに関して、エンコーダは、フレーム(又はスライス若しくはタイル)のコンテンツを、符号化ツリーユニットに分割する。符号化ツリーユニット(「CTU」)は、1つのルマ符号化ツリーブロック(「CTB」)として編成されるルマサンプル値と、2つのクロマCTBとして編成される対応するクロマサンプル値と、を含む。CTU(及びそのCTB)のサイズは、エンコーダにより選択され、例えば、64×64サンプル値、32×32サンプル値、又は16×16サンプル値であり得る。CTUは、1以上の符号化ユニットを含む。符号化ユニット(「CU」)は、1つのルマ符号化ブロック(「CB」)と2つの対応するクロマCBとを有する。例えば、1つの64×64ルマCTBと2つの64×64クロマCTBとを有するCTU(YUV4:4:4フォーマット)は、4つのCUに分割され得る。ここで、各CUは、1つの32×32ルマCBと2つの32×32クロマCBとを含み、各CUは、可能であれば、より小さなCUにさらに分割される。あるいは、別の例として、1つの64×64ルマCTBと2つの32×32クロマCTBとを有するCTU(YUV4:2:0フォーマット)は、4つのCUに分割され得る。ここで、各CUは、1つの32×32ルマCBと2つの16×16クロマCBとを含み、各CUは、可能であれば、より小さなCUにさらに分割される。CUの最小許容可能サイズ(例えば、8×8、16×16)が、ビットストリームに含められてシグナリングされ得る。
一般に、CUは、インター又はイントラ等の予測モードを有する。CUは、予測情報(例えば、予測モード詳細、変位値等)のシグナリング及び/又は予測処理のために、1以上の予測ユニットを含む。予測ユニット(「PU」)は、1つのルマ予測ブロック(「PB」)と2つのクロマPBとを有する。イントラ予測CUに関して、CUが最小サイズ(例えば、8×8)を有する場合を除いて、PUは、CUと同じサイズを有する。この場合、CUは、4つのより小さなPU(例えば、最小CUサイズが8×8である場合、それぞれ4×4である)に分割され得る、あるいは、PUは、CUについてのシンタックス要素により示される最小CUサイズを有し得る。CUはまた、残差符号化/復号のために、1以上の変換ユニットを有する。ここで、変換ユニット(「TU」)は、1つのルマ変換ブロック(「TB」)と2つのクロマTBとを有する。イントラ予測CU内のPUは、1つのTU(PUとサイズが等しい)又は複数のTUを含み得る。エンコーダは、ビデオをCTU、CU、PU、TU等にどのように分割するかを決定する。
H.265/HEVC実装において、スライスは、1つのスライスセグメント(独立スライスセグメント)を含み得る、又は、複数のスライスセグメント(1つの独立スライスセグメント及び1以上の従属スライスセグメント)に分割され得る。スライスセグメントは、1つのネットワーク抽象化レイヤ(「NAL」)ユニットに含まれる、タイルスキャンにおいて連続して順番付けられる整数個のCTUである。独立スライスセグメントに関して、スライスセグメントヘッダは、独立スライスセグメントについて適用されるシンタックス要素の値を含む。従属スライスセグメントに関して、短(truncated)スライスセグメントヘッダは、その従属スライスセグメントについて適用されるシンタックス要素の少しの値を含み、その従属スライスセグメントについての他のシンタックス要素の値は、復号順で先行する独立スライスセグメントについての値から推測される。
本明細書で使用されるとき、「ブロック」という用語は、文脈に応じて、マクロブロック、予測ユニット、残差データユニット、すなわち、CB、PB、若しくはTB、又は、サンプル値の何らかの他のセットを示し得る。
図3に戻ると、エンコーダは、ソースフレーム(331)内の他の以前に再構成されたサンプル値からの予測の観点でそのソースフレーム(331)のイントラ符号化ブロックを表現する。イントラBC予測に関して、イントラピクチャ推定部が、他の以前に再構成されたサンプル値に対する(又は、いくつかの実装においては、フレーム(331)内のオリジナルのサンプル値に対する)ブロックの変位を推定する。イントラフレーム予測参照領域とは、ブロックのためのBC予測値を生成するために使用される、フレーム内のサンプルの領域である。参照領域は、(ブロックベクトル(「BV」)推定において決定された)BV値により示され得る。参照領域は、本明細書で説明するように、ブロックについての予測領域に対して反転されているものであり得る。ブロックのためのイントラ空間予測に関して、イントラピクチャ推定部が、ブロックへの、隣接する再構成されたサンプル値の外挿(extrapolation)を推定する。イントラピクチャ推定部は、予測情報(イントラBC予測のためのBV値やイントラ空間予測のための予測モード(方向)等)を出力することができ、この予測情報が、エントロピ符号化される。イントラフレーム予測予測部は、イントラ予測値を決定するために、予測情報を適用する。
エンコーダ(340)は、参照フレームからの予測の観点でソースフレーム(331)のインターフレーム符号化予測ブロックを表現する。動き推定部は、1以上の参照フレーム(369)に対するブロックの動きを推定する。複数の参照フレームが使用される場合、複数の参照フレームは、異なる時間的方向からのものであってもよいし、同じ時間的方向からのものであってもよい。動き補償予測参照領域とは、現フレーム内のブロックのサンプル値のための動き補償予測値を生成するために使用される、1以上の参照フレーム内のサンプル値の領域である。参照領域は、本明細書で説明するように、ブロックについての予測領域に対して反転されているものであり得る。動き推定部は、動きベクトル(「MV」)情報等の動き情報を出力し、この動き情報が、エントロピ符号化される。動き補償部は、インターフレーム予測のための動き補償予測値を決定するために、MVを参照フレーム(369)に適用する。
エンコーダは、ブロックの予測値(イントラ又はインター)と対応するオリジナルの値との間の差(あれば)を決定することができる。このような予測残差値が、周波数変換、量子化、及びエントロピ符号化を用いて、さらに符号化される。例えば、エンコーダ(340)は、ピクチャ、タイル、スライス、及び/又はビデオの他の部分のための量子化パラメータ(「QP」)の値を設定し、それに従って変換係数を量子化する。エンコーダ(340)のエントロピ符号化部が、量子化された変換係数値に加えて、所定のサイド情報(例えば、MV情報、BV予測子のインデックス値、BV差分、QP値、モード決定、パラメータ選択)も圧縮する。一般的なエントロピ符号化技術は、指数ゴロム符号化、ゴロムライス符号化、算術符号化、差分符号化、ハフマン符号化、ランレングス符号化、「V2V(variable-length-to-variable-length)」符号化、「V2F(variable-length-to-fixed-length)」符号化、「LZ(Lempel-Ziv)」符号化、辞書符号化、「PIPE(probability interval partitioning entropy)」符号化、及びこれらの組合せを含む。エントロピ符号化部は、様々な種類の情報のための様々な符号化技術を使用することができ、複数の技術を組み合わせて適用することができ(例えば、ゴロムライス符号化を適用した後に算術符号化を適用することにより)、特定の符号化技術における複数の符号テーブルの中から選択することができる。
復号フレーム内のブロック境界行及び/又はブロック境界列にわたる不連続さを平滑化するために、適応デブロッキングフィルタが、エンコーダ(340)における動き補償ループ内に含まれる。代替的又は追加的に、他のフィルタリング(デリンギングフィルタリング、適応ループフィルタリング(「ALF」)、又はサンプル適応オフセット(「SAO」)フィルタリング等;図示せず)が、ループ内フィルタリングオペレーションとして、適用されてもよい。
エンコーダ(340)により生成された符号化データは、ビットストリームシンタックスの様々なレイヤについてのシンタックス要素を含む。H.265/HEVC規格に従ったシンタックスに関して、例えば、ピクチャパラメータセット(「PPS」)は、ピクチャに関連付けられ得るシンタックス要素を含むシンタックス構造である。PPSは、1つのピクチャについて使用されることもあるし、PPSは、シーケンス内の複数のピクチャについて再使用されることもある。PPSは、通常、ピクチャについての符号化データとは別にシグナリングされる(例えば、1つのNALユニットは、PPS用であり、1以上の他のNALユニットは、ピクチャについての符号化データ用である)。ピクチャについての符号化データにおいて、シンタックス要素は、ピクチャについてどのPPSを使用するかを示す。同様に、H.265/HEVC規格に従ったシンタックスに関して、シーケンスパラメータセット(「SPS」)は、ピクチャのシーケンスに関連付けられ得るシンタックス要素を含むシンタックス構造である。ビットストリームは、1つのSPS又は複数のSPSを含み得る。SPSは、通常、シーケンスについての他のデータとは別にシグナリングされ、他のデータにおけるシンタックス要素が、どのSPSを使用するかを示す。
符号化フレーム(341)及びMMCO/RPS情報(342)(又は、フレームについての依存関係及び順番構造がエンコーダ(340)において既に知られているため、MMCO/RPS情報(342)と同等の情報)が、復号プロセスエミュレータ(350)により処理される。復号プロセスエミュレータ(350)は、例えば、参照フレームを再構成する復号タスク等のデコーダの機能の一部を実装している。復号プロセスエミュレータ(350)は、MMCO/RPS情報(342)と整合するように、所与の符号化フレーム(341)が、符号化される後続フレームのインターフレーム予測において参照フレームとして使用するために再構成されて記憶される必要があるか否かを判定する。符号化フレーム(341)が記憶される必要がある場合、復号プロセスエミュレータ(350)は、符号化フレーム(341)を受信して対応する復号フレーム(351)を生成するデコーダにより行われるであろう復号プロセスを模擬する。そうする際に、エンコーダ(340)が、復号フレーム記憶領域(360)に記憶されている1以上の復号フレーム(369)を使用したとき、復号プロセスエミュレータ(350)は、復号プロセスの一部として、記憶領域(360)から1以上の復号フレーム(369)を使用する。
復号フレーム一時メモリ記憶領域(360)は、複数のフレームバッファ記憶領域(361、362、...、36n)を含む。復号プロセスエミュレータ(350)は、MMCO/RPS情報(342)と整合するように、参照フレームとして使用するためにエンコーダ(340)によりもはや必要とされなくなったフレームを有する任意のフレームバッファ(361、362等)を識別するために、記憶領域(360)のコンテンツを管理する。復号プロセスを模擬した後、復号プロセスエミュレータ(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)は、1以上のプロトコルのシンタックスの一部として、シンタックス要素を付加することができる。チャネルエンコーダ(380)は、チャネル(390)への出力を提供する。チャネル(390)は、ストレージ、通信接続、又は出力のための別のチャネルを表す。チャネルエンコーダ(380)又はチャネル(390)はまた、例えば、前方誤り訂正(「FEC」)符号化及びアナログ信号変調のための他の要素(図示せず)を含み得る。
IV.例示的なデコーダシステム
図4は、いくつかの説明する実施形態を協働して実装することができる例示的なデコーダシステム(400)のブロック図である。デコーダシステム(400)は、リアルタイム通信のための低遅延復号モード及びファイル又はストリームからのメディア再生のためのより高遅延の復号モード等の複数の復号モードのうちのいずれかで動作することができる汎用復号ツールであってもよいし、そのような1つの復号モードのために適合された専用復号ツールであってもよい。デコーダシステム(400)は、特定のタイプのコンテンツ(例えば、スクリーンキャプチャコンテンツ)を復号するよう適合され得る。デコーダシステム(400)は、オペレーティングシステムモジュールとして、アプリケーションライブラリの一部として、又はスタンドアロンアプリケーションとして、実装することができる。概して、デコーダシステム(400)は、チャネル(410)から符号化データを受信し、出力先(490)への出力として再構成フレームを生成する。符号化データは、本明細書で説明するように、イントラBC予測においてブロック反転及び/又はスキップモードを用いて符号化されたコンテンツを含み得る。
デコーダシステム(400)は、ストレージ、通信接続、又は入力としての符号化データのための別のチャネルを表し得るチャネル(410)を含む。チャネル(410)は、チャネル符号化された符号化データを生成する。チャネルデコーダ(420)は、符号化データを処理することができる。例えば、チャネルデコーダ(420)は、(例えば、ITU−T H.222.0|ISO/IEC 13818−1等のメディアプログラムストリーム若しくはトランスポートストリームフォーマット、又は、IETF RFC 3550等のインターネットリアルタイムトランスポートプロトコルフォーマットに従って)メディアストリームとして伝送又は記憶するために収集されたデータを逆パケット化及び/又は逆多重化する。そのような場合、チャネルデコーダ(420)は、メディア伝送ストリームのシンタックスの一部として付加されたシンタックス要素を解析することができる。あるいは、チャネルデコーダ(420)は、(例えば、ISO/IEC 14496−12等のメディアコンテナフォーマットに従って)ファイルとして記憶するために収集された符号化ビデオデータを分離する。そのような場合、チャネルデコーダ(420)は、メディア記憶ファイルのシンタックスの一部として付加されたシンタックス要素を解析することができる。あるいは、より一般的に、チャネルデコーダ(420)は、1以上のメディアシステム逆多重化プロトコル又はトランスポートプロトコルを実装することができる。そのような場合、チャネルデコーダ(420)は、1以上のプロトコルのシンタックスの一部として付加されたシンタックス要素を解析することができる。チャネル(410)又はチャネルデコーダ(420)はまた、例えば、FEC復号及びアナログ信号復調のための他の要素(図示せず)を含み得る。
十分な量のデータが受信されるまで、チャネルデコーダ(420)から出力される符号化データ(421)は、一時符号化データ領域(430)に記憶される。符号化データ(421)は、符号化フレーム(431)及びMMCO/RPS情報(432)を含む。符号化データ領域(430)内の符号化データ(421)は、エレメンタリ符号化ビデオビットストリームのシンタックスの一部として、1以上のピクチャの符号化データを含む。符号化データ領域(430)内の符号化データ(421)はまた、(例えば、1以上のSEIメッセージ又はVUIメッセージにおける1以上のパラメータとして、)符号化ビデオデータに関連するメディアメタデータを含み得る。
一般に、符号化データ(421)がデコーダ(450)により使用されるまで、符号化データ領域(430)は、そのような符号化データ(421)を一時的に記憶する。その時点で、符号化フレーム(431)及びMMCO/RPS情報(432)の符号化データが、符号化データ領域(430)からデコーダ(450)に伝送される。復号が進むにつれ、新たな符号化データが、符号化データ領域(430)に追加され、符号化データ領域(430)に残っている最も古い符号化データが、デコーダ(450)に伝送される。
デコーダ(450)は、符号化フレーム(431)を復号して、対応する復号フレーム(451)を生成する。必要に応じて、復号プロセスを実行するとき、デコーダ(450)は、インターフレーム予測のための参照フレームとして、1以上の以前に復号されたフレーム(469)を使用することができる。デコーダ(450)は、復号フレーム一時メモリ記憶領域(460)から、そのような以前に復号されたフレーム(469)を読み出す。一般に、デコーダ(450)は、エントロピ復号、イントラフレーム予測、動き補償インターフレーム予測、逆量子化、逆周波数変換、及びタイルのマージ等の復号タスクを実行する複数の復号モジュールを含む。デコーダ(450)により実行される正確なオペレーションは、圧縮フォーマットに応じて変わり得る。
例えば、デコーダ(450)は、圧縮フレーム又は一連のフレームの符号化データを受信し、復号フレーム(451)を含む出力を生成する。デコーダ(450)において、バッファは、圧縮フレームの符号化データを受け入れ、適切な時間に、受け入れた符号化データをエントロピ復号部に利用可能にする。エントロピ復号部は、通常はエンコーダにおいて実行されたエントロピ符号化の逆を適用することにより、エントロピ符号化された量子化されたデータに加えて、エントロピ符号化されたサイド情報もエントロピ復号する。動き補償部は、再構成されているフレームのインター符号化ブロックの動き補償予測値を形成するために、動き情報を1以上の参照フレームに適用する。インターフレーム参照領域は、本明細書で説明するように、ブロックについての予測領域に対して反転されているものであり得る。イントラフレーム予測モジュールは、隣接する以前に再構成されたサンプル値から、現ブロックのサンプル値を空間的に予測することができる、又は、イントラBC予測に関して、フレーム内のイントラフレーム予測領域の以前に再構成されたサンプル値を使用して、現ブロックのサンプル値を予測することができる。イントラフレーム参照領域は、BV値により示され得る。この参照領域は、本明細書で説明するように、ブロックについての予測領域に対して反転されているものであり得る。デコーダ(450)はまた、予測残差値を再構成する。逆量子化部は、エントロピ復号されたデータを逆量子化する。例えば、デコーダ(450)は、ビットストリームにおけるシンタックス要素に基づいて、ピクチャ、タイル、スライス、及び/又はビデオの他の部分のためのQPの値を設定し、それに従って変換係数を逆量子化する。逆周波数変換部は、量子化された周波数領域データを空間領域データに変換する。インターフレーム予測ブロックに関して、デコーダ(450)は、再構成された予測残差値を動き補償予測値と結合する。デコーダ(450)は、同様に、予測残差値を、イントラ予測からの予測値と結合することができる。復号フレーム(451)内のブロック境界行及び/又はブロック境界列にわたる不連続さを平滑化するために、適応デブロッキングフィルタが、ビデオデコーダ(450)における動き補償ループ内に含まれる。代替的又は追加的に、他のフィルタリング(デリンギングフィルタリング、ALF、又はSAOフィルタリング等;図示せず)が、ループ内フィルタリングオペレーションとして、適用されてもよい。
復号フレーム一時メモリ記憶領域(460)は、複数のフレームバッファ記憶領域(461、462、...、46n)を含む。復号フレーム記憶領域(460)は、復号ピクチャバッファの一例である。デコーダ(450)は、MMCO/RPS情報(432)を使用して、復号フレーム(451)を記憶することができるフレームバッファ(461、462等)を識別する。デコーダ(450)は、そのフレームバッファに復号フレーム(451)を記憶する。
出力シーケンサ(480)は、出力順で生成される次のフレームが復号フレーム記憶領域(460)内で利用可能になるときを識別する。出力順で生成される次のフレーム(481)が、復号フレーム記憶領域(460)内で利用可能になったとき、そのフレームが、出力シーケンサ(480)により読み出され、出力先(490)(例えば、ディスプレイ)に出力される。一般に、復号フレーム記憶領域(460)から出力シーケンサ(480)によりフレームが出力される順番は、デコーダ(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以上のスライスセグメントを含む。
一般符号化制御部(520)は、入力ビデオ信号(505)のピクチャに加えて、エンコーダ(500)の様々なモジュールからのフィードバック(図示せず)を受信する。概して、一般符号化制御部(520)は、符号化中に符号化パラメータを設定及び変更するために、他のモジュール(タイル化モジュール(510)、変換部/スケーリング部/量子化部(530)、スケーリング部/逆変換部(535)、イントラピクチャ推定部(540)、動き推定部(550)、及びイントラ/インタースイッチ等)に制御信号(図示せず)を供給する。詳細には、一般符号化制御部(520)は、符号化中に、イントラBC予測の態様(例えば、スキップモード、ブロック反転)を用いるかどうか及びイントラBC予測の態様(例えば、スキップモード、ブロック反転)をどのように用いるかを決定することができる。一般符号化制御部(520)はまた、例えば、レート歪み分析を実行して、符号化中に中間結果を評価することができる。一般符号化制御部(520)は、符号化中になされた決定を示す一般制御データ(522)を生成するので、対応するデコーダは、整合する決定を行うことができる。一般制御データ(522)は、ヘッダフォーマット化部/エントロピ符号化部(590)に提供される。
現ピクチャが、インターピクチャ予測を用いて予測される場合、動き推定部(550)は、1以上の参照ピクチャに対する、入力ビデオ信号(505)の現ピクチャ内のサンプル値のブロックの動きを推定する。動き推定部(550)は、以下で説明するように、インターピクチャ符号化ブロックについての所与の参照領域を反転することについてのオプションを評価することができる。復号ピクチャバッファ(570)は、参照ピクチャとして使用するために、1以上の以前に再構成された符号化ピクチャをバッファする。複数の参照ピクチャが使用される場合、複数の参照ピクチャは、異なる時間的方向からのものであってもよいし、同じ時間的方向からのものであってもよい。動き推定部(550)は、サイド情報として、MVデータ等の動きデータ(552)、マージモードインデックス値、参照ピクチャ選択データ、及びブロック反転が用いられているか否かを生成する。動きデータ(552)は、ヘッダフォーマット化部/エントロピ符号化部(590)及び動き補償部(555)に提供される。
動き補償部(555)は、復号ピクチャバッファ(570)からの1以上の再構成された参照ピクチャに、MVを適用する。動き補償部(555)は、現ピクチャのための動き補償予測を生成する。ブロック反転が用いられる場合、動き補償部(555)は、以下で説明するように、参照領域に対する(現ブロックについての)予測領域についての反転を考慮し得る。
エンコーダ(500)内の分離パス(separate path)において、イントラピクチャ推定部(540)は、入力ビデオ信号(505)の現ピクチャのサンプル値のブロックのためのイントラピクチャ予測をどのように実行するかを決定する。現ピクチャは、イントラピクチャ符号化を用いて、全体又は一部が符号化され得る。イントラ空間予測に関して、イントラピクチャ推定部(540)は、現ピクチャの再構成(538)の値を使用して、現ピクチャの隣接する以前に再構成されたサンプル値から、現ピクチャ内の現ブロックのサンプル値をどのように空間的に予測するかを決定する。あるいは、BV値を使用するイントラBC予測に関して、イントラピクチャ推定部(540)は、現ピクチャ内の異なる候補参照領域への、現ブロックのサンプル値の変位を推定する。候補参照領域は、再構成されたサンプル値、又は、BV推定のためのいくつかの実装においては、入力ビデオからのオリジナルのサンプル値を含み得る。イントラピクチャ推定値(540)は、以下で説明するように、それぞれの候補参照領域に対する(現ブロックについての)イントラBC予測領域の反転についての異なるオプションを評価することができる。
イントラピクチャ推定部(540)は、サイド情報として、イントラ予測が空間予測を使用するかイントラBC予測を使用するかを示す情報、予測モード方向(イントラ空間予測に関して)、BV値(イントラBC予測に関して)、及びブロック反転が用いられているかどうか(イントラBC予測に関して)等のイントラ予測データ(542)を生成する。イントラ予測データ(542)は、ヘッダフォーマット化部/エントロピ符号化部(590)及びイントラピクチャ予測部(545)に提供される。
イントラピクチャ予測部(545)は、イントラ予測データ(542)に従って、現ピクチャの隣接する以前に再構成されたサンプル値から、現ピクチャの現ブロックのサンプル値を空間的に予測する。あるいは、イントラBC予測に関して、イントラピクチャ予測部(545)は、現ブロックのBV値により示されるイントラフレーム予測参照領域の以前に再構成されたサンプル値を使用して、現ブロックのサンプル値を予測する。イントラBC予測に関して、イントラピクチャ予測部(545)は、以下で説明するように、参照領域に対する(現ブロックについての)イントラBC予測領域についての反転を考慮し得る。いくつかの場合において、BV値は、BV予測子(予測されたBV値)であり得る。他の場合において、BV値は、その予測されたBV値とは異なり得る。ピクチャについてのクロマデータが、ルマデータと同じ解像度を有する場合(例えば、フォーマットが、YUV4:4:4フォーマット又はRGB4:4:4フォーマットである場合)、クロマブロックについて適用されるBV値は、ルマブロックについて適用されるBV値と同じであり得る。一方、ピクチャについてのクロマデータが、ルマデータより低い解像度を有する場合(例えば、フォーマットが、YUV4:2:0フォーマットである場合)、クロマブロックについて適用されるBV値は、低減され、可能であれば、クロマ解像度における差を調整するために丸められ得る(例えば、BV値の垂直成分及び水平成分を2で除算して、それらを整数値に切り捨てる又は丸めることにより)。
イントラ/インタースイッチは、所与のブロックのための予測(558)が、動き補償予測であるか又はイントラピクチャ予測であるかを選択する。非スキップモードブロックに関して、予測(558)のブロックと、入力ビデオ信号(505)のオリジナルの現ピクチャの対応する部分と、の間の差(あれば)が、残差(518)の値を提供する。非スキップモードブロックに関して、現ピクチャの再構成中に、再構成された残差値が、予測(558)と結合されて、ビデオ信号(505)からのオリジナルのコンテンツのおおよその又は正確な再構成(538)が生成される。(損失圧縮(lossy compression)では、いくつかの情報が、ビデオ信号(505)から失われる。)
変換部/スケーリング部/量子化部(530)において、周波数変換部は、空間領域ビデオ情報を周波数領域(すなわち、スペクトル変換)データに変換する。ブロックベースのビデオ符号化に関して、周波数変換部は、離散コサイン変換(「DCT」)、その整数近似、又は別のタイプの順ブロック変換(例えば、離散サイン変換又はその整数近似)を予測残差データ(又は、予測(558)がヌルの場合にはサンプル値データ)のブロックに適用して、周波数変換係数のブロックを生成する。エンコーダ(500)はまた、そのような変換ステップがスキップされることを指示することができる。スケーリング部/量子化部は、変換係数をスケーリングして量子化する。例えば、量子化部は、フレームごとに、タイルごとに、スライスごとに、ブロックごとに、周波数固有の単位で、又は他の単位で変わる量子化ステップサイズで、デッドゾーン(dead-zone)スカラ量子化を周波数領域データに適用する。量子化された変換係数データ(532)は、ヘッダフォーマット化部/エントロピ符号化部(590)に提供される。
スケーリング部/逆変換部(535)において、スケーリング部/逆量子化部は、量子化された変換係数に対して、逆スケーリング及び逆量子化を実行する。逆周波数変換部は、逆周波数変換を実行して、再構成された予測残差値又はサンプル値のブロックを生成する。非スキップモードブロックに関して、エンコーダ(500)は、再構成された残差値を、予測(558)の値(例えば、動き補償予測値、イントラピクチャ予測値)と結合して、再構成(538)を生成する。スキップモードブロックに関して、エンコーダ(500)は、再構成(538)として、予測(558)の値を使用する。
イントラピクチャ予測に関して、再構成(538)の値は、イントラピクチャ推定部(540)及びイントラピクチャ予測部(545)にフィードバックされ得る。また、再構成(538)の値は、後続ピクチャの動き補償予測のためにも使用され得る。再構成(538)の値は、さらにフィルタリングされ得る。フィルタリング制御部(560)は、ビデオ信号(505)の所与のピクチャについて、再構成(538)の値に対して、デブロックフィルタリング及びSAOフィルタリングをどのように実行するかを決定する。フィルタリング制御部(560)は、フィルタリング制御データ(562)を生成する。フィルタリング制御データ(562)は、ヘッダフォーマット化部/エントロピ符号化部(590)及びマージ部/1以上のフィルタ(565)に提供される。
マージ部/1以上のフィルタ(565)において、エンコーダ(500)は、異なるタイルからのコンテンツを、ピクチャの再構成バージョンにマージする。エンコーダ(500)は、フレーム内の境界にわたる不連続さを適応的に平滑化するために、フィルタリング制御データ(562)に従って、デブロックフィルタリング及びSAOフィルタリングを選択的に実行する。代替的又は追加的に、他のフィルタリング(デリンギングフィルタリング又はALF等;図示せず)が、適用されてもよい。タイル境界は、エンコーダ(500)の設定に応じて、選択的にフィルタリングされ得る又はフィルタリングされず、エンコーダ(500)は、そのようなフィルタリングが適用されたか否かを示すシンタックスを、符号化ビットストリーム内に提供することができる。復号ピクチャバッファ(570)は、後続の動き補償予測において使用するために、再構成された現ピクチャをバッファする。
ヘッダフォーマット化部/エントロピ符号化部(590)は、一般制御データ(522)、量子化された変換係数データ(532)、イントラ予測データ(542)、動きデータ(552)、及びフィルタリング制御データ(562)をフォーマット化及び/又はエントロピ符号化する。イントラ予測データ(542)に関して、ヘッダフォーマット化部/エントロピ符号化部(590)は、BV予測子インデックス値を選択してエントロピ符号化することができる(イントラBC予測について)。ヘッダフォーマット化部/エントロピ符号化部(590)はまた、イントラBC予測(又は、動き補償)についてブロック反転が用いられているか否かを示すシンタックス要素をエントロピ符号化することができる。いくつかの場合において、ヘッダフォーマット化部/エントロピ符号化部(590)はまた、BV値のBV差分(BV値についてのBV予測子に対するBV差分)を決定し、次いで、例えば、コンテキスト適応バイナリ算術符号化を用いて、BV差分をエントロピ符号化する。詳細には、スキップモードイントラBC予測ブロックに関して、BV差分がシグナリングされる。
ヘッダフォーマット化部/エントロピ符号化部(590)は、符号化データを、符号化ビデオビットストリーム(595)内に提供する。符号化ビデオビットストリーム(595)のフォーマットは、H.265/HEVCフォーマットの変形又は拡張、Windows(登録商標) Media Videoフォーマット、VC−1フォーマット、MPEG−xフォーマット(例えば、MPEG−1、MPEG−2、又はMPEG−4)、H.26xフォーマット(例えば、H.261、H.262、H.263、H.264)、又は別のフォーマットであり得る。
実装及び所望の圧縮のタイプに応じて、エンコーダのモジュールを追加してもよいし、省略してもよいし、複数のモジュールに分割してもよいし、他のモジュールと結合してもよいし、且つ/又は同様のモジュールと置換してもよい。代替実施形態において、異なるモジュール及び/又はモジュールの他の構成を有するエンコーダは、説明した技術のうちの1以上を実行する。エンコーダの特定の実施形態は、通常、エンコーダ(500)の変形又は補完バージョンを使用する。エンコーダ(500)内のモジュール間の示された関係は、エンコーダ内の情報の一般的な流れを示すものである。他の関係は、簡潔さのため示されていない。
VI.例示的なビデオデコーダ
図6は、いくつかの説明する実施形態を協働して実装することができる一般化されたデコーダ(600)のブロック図である。デコーダ(600)は、符号化ビデオビットストリーム(605)内の符号化データを受信し、再構成ビデオ(695)のためのピクチャを含む出力を生成する。符号化ビデオビットストリーム(605)のフォーマットは、H.265/HEVCフォーマットの変形又は拡張、Windows(登録商標) Media Videoフォーマット、VC−1フォーマット、MPEG−xフォーマット(例えば、MPEG−1、MPEG−2、又はMPEG−4)、H.26xフォーマット(例えば、H.261、H.262、H.263、H.264)、又は別のフォーマットであり得る。
デコーダ(600)は、ブロックベースであり、実装に依存するブロックフォーマットを使用する。ブロックは、様々な段階において、さらに細分割され得る。例えば、ピクチャは、64×64ブロック、32×32ブロック、又は16×16ブロックに分割され得、今度は、それらのブロックが、サンプル値のより小さなブロックに分割され得る。H.265/HEVC規格のための復号の実装において、ピクチャは、CTU(CTB)、CU(CB)、PU(PB)、及びTU(TB)に分割される。
デコーダ(600)は、イントラピクチャ復号及び/又はインターピクチャ復号を用いて、ピクチャを伸張する。デコーダ(600)のコンポーネントの多くが、イントラピクチャ復号及びインターピクチャ復号の両方のために使用される。これらのコンポーネントにより実行される正確なオペレーションは、伸張される情報のタイプに応じて変わり得る。
バッファは、符号化ビデオビットストリーム(605)内の符号化データを受け入れ、受け入れた符号化データを解析部/エントロピ復号部(610)に利用可能にする。解析部/エントロピ復号部(610)は、通常はエンコーダ(500)において実行されたエントロピ符号化の逆(例えば、コンテキスト適応バイナリ算術復号)を適用することにより、エントロピ符号化されたデータをエントロピ復号する。解析及びエントロピ復号の結果として、解析部/エントロピ復号部(610)は、一般制御データ(622)、量子化された変換係数データ(632)、イントラ予測データ(642)、動きデータ(652)、及びフィルタリング制御データ(662)を生成する。イントラ予測データ(642)に関して、解析部/エントロピ復号部(610)は、BV予測子インデックス値をエントロピ復号する(イントラBC予測について)。解析部/エントロピ復号部(610)はまた、イントラBC予測(又は、動き補償)についてブロック反転が用いられているか否かを示すシンタックス要素をエントロピ復号する。いくつかの場合において、解析部/エントロピ復号部(610)はまた、(例えば、コンテキスト適応バイナリ算術復号を用いて)BV値のBV差分をエントロピ復号し、次いで、BV差分を、対応するBV予測子と結合して、BV値を再構成する。詳細には、スキップモードイントラBC予測ブロックに関して、BV差分が、ビットストリームから解析され、(例えば、BV予測子インデックス値により示される)BV予測子と結合されて、BV値が再構成される。
一般復号制御部(620)は、一般制御データ(622)を受信し、復号中に復号パラメータを設定及び変更するために、他のモジュール(スケーリング部/逆変換部(635)、イントラピクチャ予測部(645)、動き補償部(655)、及びイントラ/インタースイッチ等)に制御信号(図示せず)を供給する。
現ピクチャが、インターピクチャ予測を用いて予測される場合、動き補償部(655)は、MVデータ等の動きデータ(652)、参照ピクチャ選択データ、マージモードインデックス値、及び(動き補償について)ブロック反転が用いられているか否かを示すシンタックス要素を受信する。動き補償部(655)は、復号ピクチャバッファ(670)からの1以上の再構成された参照ピクチャに、MVを適用する。ブロック反転が用いられている場合、動き補償部(655)は、以下で説明するように、参照領域に対する(現ブロックについての)予測領域についての反転を考慮し得る。動き補償部(655)は、現ピクチャ内のインター符号化ブロックのための動き補償予測を生成する。復号ピクチャバッファ(670)は、参照ピクチャとして使用するために、1以上の以前に再構成されたピクチャを記憶する。
デコーダ(600)内の分離パスにおいて、イントラピクチャ予測予測部(645)は、イントラ予測が空間予測を使用するかイントラBC予測を使用するかを示す情報、予測モード方向(イントラ空間予測に関して)、BV値(イントラBC予測に関して)、及びブロック反転が用いられているか否かを示すシンタックス要素(イントラBC予測に関して)等のイントラ予測データ(642)を受信する。イントラ空間予測に関して、イントラピクチャ予測部(645)は、現ピクチャの再構成(638)の値を使用して、予測モードデータに従って、現ピクチャの隣接する以前に再構成されたサンプル値から、現ピクチャの現ブロックのサンプル値を空間的に予測する。あるいは、BV値を使用するイントラBC予測に関して、イントラピクチャ予測部(645)は、現ブロックのBV値により示されるイントラフレーム予測参照領域の以前に再構成されたサンプル値を使用して、現ブロックのサンプル値を予測する。イントラBC予測に関して、イントラピクチャ予測部(645)は、以下で説明するように、参照領域に対する(現ブロックについての)イントラBC予測領域についての反転を考慮し得る。
イントラ/インタースイッチは、所与のブロックのための予測(658)が、動き補償予測であるか又はイントラピクチャ予測であるかを選択する。例えば、H.265/HEVCシンタックスに従うと、イントラ/インタースイッチは、イントラ予測CU及びインター予測CUを含み得るピクチャ内のCUについて符号化された1以上のシンタックス要素に基づいて制御され得る。非スキップモードブロックに関して、デコーダ(600)は、予測(658)を、再構成された残差値と結合して、ビデオ信号からのコンテンツの再構成(638)を生成する。スキップモードブロックに関して、デコーダ(600)は、再構成(638)として、予測(658)の値を使用する。
非スキップモードブロックについて残差を再構成するために、スケーリング部/逆変換部(635)は、量子化された変換係数データ(632)を受信して処理する。スケーリング部/逆変換部(635)において、スケーリング部/逆量子化部は、量子化された変換係数に対して、逆スケーリング及び逆量子化を実行する。逆周波数変換部は、逆周波数変換を実行して、再構成された予測残差値又はサンプル値のブロックを生成する。例えば、逆周波数変換部は、逆ブロック変換を周波数変換係数に適用して、サンプル値データ又は予測残差データを生成する。逆周波数変換は、逆DCT、その整数近似、又は別のタイプの逆周波数変換(例えば、逆離散サイン変換又はその整数近似)であり得る。
イントラピクチャ予測に関して、再構成(638)の値は、イントラピクチャ予測部(645)にフィードバックされ得る。インターピクチャ予測に関して、再構成(638)の値は、さらにフィルタリングされ得る。マージ部/1以上のフィルタ(665)において、デコーダ(600)は、異なるタイルからのコンテンツを、ピクチャの再構成バージョンにマージする。デコーダ(600)は、フレーム内の境界にわたる不連続さを適応的に平滑化するために、フィルタリング制御データ(662)とフィルタ適応のためのルールとに従って、デブロックフィルタリング及びSAOフィルタリングを選択的に実行する。代替的又は追加的に、他のフィルタリング(デリンギングフィルタリング又はALF等;図示せず)が、適用されてもよい。タイル境界は、デコーダ(600)の設定又は符号化ビットストリームデータ内のシンタックスインジケーションに応じて、選択的にフィルタリングされ得る又はフィルタリングされない。復号ピクチャバッファ(670)は、後続の動き補償予測において使用するために、再構成された現ピクチャをバッファする。
デコーダ(600)はまた、後処理フィルタを含み得る。後処理フィルタ(608)は、デリンギングフィルタリング、適応ウィナーフィルタリング、フィルムグレイン再現フィルタリング(film-grain reproduction filtering)、SAOフィルタリング、又は別の種類のフィルタリングを含み得る。
実装及び所望の伸張のタイプに応じて、デコーダのモジュールを追加してもよいし、省略してもよいし、複数のモジュールに分割してもよいし、他のモジュールと結合してもよいし、且つ/又は同様のモジュールと置換してもよい。代替実施形態において、異なるモジュール及び/又はモジュールの他の構成を有するデコーダは、説明した技術のうちの1以上を実行する。デコーダの特定の実施形態は、通常、デコーダ(600)の変形又は補完バージョンを使用する。デコーダ(600)内のモジュール間の示された関係は、デコーダ内の情報の一般的な流れを示すものである。他の関係は、簡潔さのため示されていない。
VII.イントラブロックコピー予測におけるイノベーション
このセクションは、イントラブロックコピー(「BC」)予測の特徴を提示している。例えば、これらの特徴のうちのいくつかは、イントラBC予測ブロックが、ブロックベクトル(「BV」)値により示され得る参照領域に対して反転されるブロック反転に関する。他の特徴は、現イントラBC予測ブロックが、シグナリングされたBV差分を使用するが残差データを有さないスキップモードのシグナリングに関する。多くの状況において、これらの特徴は、イントラBC予測ブロックの符号化効率を向上させる。
詳細には、説明するイノベーションは、スクリーンキャプチャコンテンツ等の所定の「人工的に」作成されたビデオコンテンツを符号化する際のレート歪み性能を向上させることができる。スクリーンキャプチャコンテンツは、一般に、繰り返し構造(例えば、グラフィックス、テキスト文字)を含み、これは、イントラBC予測が性能を向上させる機会を提供する。スクリーンキャプチャコンテンツは、通常、高クロマサンプリング解像度のフォーマット(例えば、YUV4:4:4又はRGB4:4:4)で符号化されるが、より低いクロマサンプリング解像度のフォーマット(例えば、YUV4:2:0)で符号化されてもよい。スクリーンキャプチャコンテンツの符号化/復号についての一般的なシナリオは、リモートデスクトップ会議、及び、自然ビデオ又は他の「混合コンテンツ」ビデオ上のグラフィカルオーバーレイの符号化/復号を含む。
A.イントラBC予測モード、BV値、及びBV予測−序論
イントラBC予測に関して、ピクチャ内の現ブロックのサンプル値は、同じピクチャ内のサンプル値を使用して予測される。BV値は、現ブロックから、予測のために使用されるサンプル値を含む、ピクチャ内の領域(「参照領域」)への変位を示す。参照領域は、現ブロックについて予測された値(「イントラBC予測領域」)を提供する。予測のために使用されるサンプル値は、以前に再構成されたサンプル値であり、したがって、符号化中にエンコーダにおいて利用可能であり、復号中にデコーダにおいて利用可能である。BV値は、ビットストリームに含められてシグナリングされ得、デコーダは、BV値を使用して、予測のために使用する、ピクチャ内の参照領域(デコーダにおいて再構成されている)を決定することができる。イントラBC予測は、ピクチャ内予測の一形態であり、ピクチャ内のブロックについてのイントラBC予測は、同じピクチャ内のサンプル値以外のいずれのサンプル値も使用しない。
図7aは、現フレーム(710)内の現ブロック(760)についてのイントラBC予測を示している。現ブロックは、符号化ユニット(「CU」)の符号化ブロック(「CB」)、予測ユニット(「PU」)の予測ブロック(「PB」)、変換ユニット(「TU」)の変換ブロック(「TB」)、又は他のブロックであり得る。現ブロックのサイズは、64×64、32×32、16×16、8×8、又は何らかの他のサイズであり得る。より一般的に、現ブロックのサイズは、m×nであり、ここで、m及びnの各々は、整数であり、m及びnは、互いに等しいこともあるし、異なる値を有することもある。代替的に、現ブロックは、何らかの他の形状(例えば、非矩形形状の符号化ビデオオブジェクトの領域)を有してもよい。
BV(761)は、現ブロック(760)から、予測のために使用されるサンプル値を含む、ピクチャ内の参照領域(780)への変位(又はオフセット)を示す。BV(761)により示される参照領域(780)は、時として、現ブロック(760)についての「照合ブロック」と呼ばれる。照合ブロックは、現ブロック(760)と同じであることもあるし、現ブロック(760)の近似物(approximation)であることもある。現ブロックの左上位置が、現フレームにおいて位置(x0,y0)にあると仮定し、参照領域の左上位置が、現フレームにおいて位置(x1,y1)にあると仮定する。BVは、変位(x1−x0,y1−y0)を示す。例えば、現ブロックの左上位置が、位置(256,128)にあり、参照領域の左上位置が、位置(176,104)にあるとすると、BV値は、(−80,−24)である。この例において、負の水平変位は、現ブロックの左の位置を示し、負の垂直変位は、現ブロックの上の位置を示す。
イントラBC予測は、BCオペレーションを用いて冗長性(フレーム内部の繰り返しパターン等)を利用することにより、符号化効率を向上させることができる。現ブロックのサンプル値は、現ブロックのサンプル値を直接符号化する代わりに、BV値を使用して表現される。現ブロックのサンプル値が、BV値により示される参照領域のサンプル値に正確には合致しない場合であっても、この差は、無視できるほどのもの(知覚的に気付かれないもの)であり得る。あるいは、この差が大きい場合には、この差は、現ブロックについてのオリジナルのサンプル値よりも効率的に圧縮することができる残差データとして符号化され得る。
集合的に、イントラBC予測を用いて符号化されるブロックのBV値は、多数のビットを消費し得る。BV値は、ビットレートを低減させるために、エントロピ符号化され得る。BV値についてのビットレートをさらに低減させるために、エンコーダは、BV値の予測を用いることができる。BV値は、しばしば、冗長性を示す。すなわち、所与のブロックのBV値は、しばしば、ピクチャ内の以前のブロックのBV値と類似している、又は、ピクチャ内の以前のブロックのBV値と同じである場合さえある。BV予測に関して、所与のブロックのBV値は、BV予測子を使用して予測される。次いで、所与のブロックのBV値とBV予測子との差(すなわちBV差分)が、エントロピ符号化される。通常、BV差分は、BV値及びBV予測子の水平成分及び垂直成分について算出される。BV予測が良好に機能する場合、BV差分は、効率的なエントロピ符号化をサポートする確率分布を有する。H.265/HEVC規格の1つのドラフトバージョン(JCTVC−P1005)において、BV予測子は、現CTU内の最後に符号化されたCUのBV値である(すなわち、現CTU内の前のイントラBC予測ブロックのBV値である)。代替的に、BV予測子は、(例えば、現ブロック周囲の隣接領域における)複数の利用可能なBV値の中から選択される。
図7bは、フレーム内の現ブロック(760)のBV(761)及びフレーム(710)内の前のブロック(750)のBV(751)を示している。前のブロック(750)のBV(751)は、現ブロック(760)のBV(761)についてのBV予測子として使用される。例えば、BV値が(−80,−24)であり、BV予測子が(−80,−32)である場合、(0,8)というBV差分がエントロピ符号化される。
デコーダは、BV値のエントロピ符号化されたBV差分を受信してエントロピ復号する。デコーダはまた、BV値についてのBV予測子を決定する。デコーダにより決定されるBV予測子は、エンコーダにより決定されたBV予測子と同じである。デコーダは、BV予測子と復号されたBV差分とを結合して、BV値を再構成する。
B.イントラBC予測におけるブロック反転
イントラBC予測の以前のアプローチにおいて、BV値により示される参照領域は、現ブロックについてのイントラBC予測領域を提供する。すなわち、参照領域のサンプル値が、現ブロックについてのイントラBC予測値である。
本明細書に記載のイノベーションの一態様に従うと、現ブロックについてのイントラBC予測領域は、参照領域に対して反転される。現ブロックのBV値は、参照領域を示すことができる。現ブロックについてのイントラBC予測領域として参照領域を直接使用する代わりに、参照領域は、水平方向及び/又は垂直方向に反転され得る。特に、ブロック反転は、スクリーンキャプチャコンテンツのテキスト文字の符号化効率を向上させることができる。
1.ブロック反転の例
図8a〜図8d、図9a〜図9c、及び図10a〜図10cは、イントラBC予測におけるブロック反転の例を示している。
図8aは、現ピクチャ(810)内の現ブロック(860)を示している。現ブロック(860)は、図8bに詳細に示されるテキスト文字pを含む。現ブロック(860)のBV(861)は、現ピクチャ(810)内の参照領域(880)への変位を示す。参照領域(880)は、図8cに詳細に示されるテキスト文字dを含む。反転を用いないと、参照領域(880)は、現ブロック(860)についての良好でない予測子である。(現ブロック(860)と参照領域(880)とのサンプルごとの差が大きい。)
エンコーダ及びデコーダは、符号化効率を向上させるために、イントラBC予測においてブロック反転を用いることができる。例えば、参照領域(880)は、図8dの反転された参照領域(881)に示されるように、水平方向及び垂直方向に反転され得る。この例において、参照領域(880)が、水平方向及び/垂直方向に反転されると、反転された参照領域(881)は、現ブロック(860)に正確に合致する。(すなわち、このイントラBC予測領域は、現ブロック(860)に最適であり、残差は、ゼロ値のサンプルのみを含む。)
同様に、参照領域(880)は、水平方向に反転され得る。例えば、所与のブロックが、テキスト文字bを含む場合、参照領域(880)の水平方向の反転は、所与のブロックに正確に合致する反転された参照領域をもたらすことができる。あるいは、参照領域(880)は、垂直方向に反転され得る。例えば、所与のブロックが、テキスト文字qを含む場合、参照領域(880)の垂直方向の反転は、所与のブロックに正確に合致する反転された参照領域をもたらすことができる。
ブロック反転を用いると、多くのフォントに関して、テキスト文字のセット(例えば、b、d、p、及びqのセット、又は、u及びnのセット)内のテキスト文字を含むブロックは、テキスト文字の同じセット内の別のテキスト文字を含む参照領域から、正確に予測され得る。他のフォントに関して、テキスト文字のセット内のテキスト文字を含むブロックは、テキスト文字の同じセット内の別のテキスト文字を含む参照領域から、おおよそ予測され得る。より一般的に、ブロック反転は、スクリーンコンテンツ内の様々なアルファベットのテキスト文字又は他のパターンの符号化効率を向上させることができる。
したがって、ブロック反転を用いると、テキスト文字(又は他のパターン)を含むブロックは、そのテキスト文字(又は他のパターン)がピクチャ内に以前に出現していない場合であっても、イントラBC予測され得、これは、ブロックを符号化する他の方法と比較して、符号化効率を向上させることができる。あるいは、テキスト文字(又は他のパターン)がピクチャ内に以前に出現していない場合であっても、イントラBC予測は、同じテキスト文字(又は他のパターン)を含む参照領域よりもこのブロックに近い反転された参照領域を使用することができる。より近い反転された領域についてのBV値は、より離れた参照領域についてのBV値よりもはるかに効率的に符号化され得る。例えば、テキスト文字qを含む現ブロックに関して、同じテキスト文字qを含む第1の候補参照領域が、BV値(−280,−24)により示され得るのに対し、異なるテキスト文字pを含む第2の候補参照領域が、BV値(−32,0)により示され得ると仮定する。第2の候補参照領域は、現ブロックに正確に合致するように、水平方向に反転され得る。第2の候補参照領域についてのBV値は、ブロック反転を示すシンタックス要素のシグナリングを考慮しても、第1の候補参照領域についてのBV値よりも効率的に(少ないビットで)符号化され得る。
図9a〜図9cに示されるように、ブロック及び参照領域は、複数のテキスト文字を含むことがある。図9aは、テキスト文字群dlを含む現ブロック(960)を示している。現ブロック(960)のBV値は、同じピクチャ内の参照領域(980)への変位を示す。参照領域(980)は、図9bに詳細に示されるように、テキスト文字群lbを含む。反転を用いないと、参照領域(980)は、現ブロック(960)についての良好でない予測子である。しかしながら、参照領域(980)が、水平方向に反転された場合、反転された参照領域(981)は、現ブロック(960)に正確に合致する。
前述の例において、ブロック及び参照領域は、テキスト文字全体を含む。図10a〜図10cに示されるように、ブロック及び参照領域は、代わりに、テキスト文字、記号、又はシンボルの1以上の部分を含むことがある。図10aは、テキスト文字Lの部分を含む現ブロック(1060)を示している。現ブロック(1060)のBV値は、同じピクチャ内の参照領域(1080)への変位を示す。参照領域(1080)は、図10bに詳細に示されるように、テキスト文字Fの部分を含む。反転を用いないと、参照領域(1080)は、現ブロック(1060)についての良好でない予測子である。しかしながら、参照領域(1080)が、垂直方向に反転された場合、反転された参照領域(1081)は、現ブロック(1060)に正確に合致する。
2.例示的な反転オペレーション
ブロック反転が、イントラBC予測において用いられる場合、ブロックについてのイントラBC予測領域は、ブロックについての参照領域に対して反転される。ブロック反転オペレーションは、実装に応じて、様々な形で実施され得る。
ブロック反転オペレーションを実行する1つのアプローチに従うと、現ブロックについてのイントラBC予測領域を決定するとき、エンコーダ又はデコーダは、(a)参照領域を決定し、(b)参照領域を反転し、次いで、(c)反転された参照領域のそれぞれの位置におけるサンプル値を、イントラBC予測領域のそれらそれぞれの位置におけるサンプル値に割り当てる。例えば、16×16ブロックに関して、エンコーダ又はデコーダは、そのブロックのBV値により示される16×16参照領域を決定し、次いで、水平方向及び/又は垂直方向に16×16参照領域を反転する。これは、反転されている16×16参照領域のコピーを作成することを伴う。次いで、反転された参照領域の位置におけるサンプル値が、イントラBC予測領域の同じ位置におけるサンプル値に割り当てられる(例えば、反転された参照領域の位置(0,0)におけるサンプル値が、イントラBC予測領域の位置(0,0)におけるサンプル値に割り当てられ、反転された参照領域の位置(0,1)におけるサンプル値が、イントラBC予測領域の位置(0,1)におけるサンプル値に割り当てられる、等である)。
ブロック反転オペレーションを実行する第2のアプローチに従うと、現ブロックについてのイントラBC予測領域を決定するとき、エンコーダ又はデコーダは、(a)参照領域を決定し、(b)参照領域のそれぞれの位置におけるサンプル値を、イントラBC予測領域のそれらそれぞれの位置におけるサンプル値に割り当て、次いで、(c)イントラBC予測領域を反転する。例えば、16×16ブロックに関して、エンコーダ又はデコーダは、そのブロックのBV値により示される16×16参照領域を決定する。参照領域の位置におけるサンプル値が、イントラBC予測領域の同じ位置におけるサンプル値に割り当てられる(例えば、参照領域の位置(0,0)におけるサンプル値が、イントラBC予測領域の位置(0,0)におけるサンプル値に割り当てられ、参照領域の位置(0,1)におけるサンプル値が、イントラBC予測領域の位置(0,1)におけるサンプル値に割り当てられる、等である)。次いで、エンコーダ又はデコーダは、水平方向及び/又は垂直方向に16×16イントラBC予測領域を反転する。これは、反転されている16×16イントラBC予測領域のコピーを作成することを伴う。
ブロック反転オペレーションを実行する第3のアプローチに従うと、エンコーダ及びデコーダは、参照領域又はイントラBC予測領域の中間コピーを作成することを回避する。現ブロックについてのイントラBC予測領域を決定するとき、エンコーダ又はデコーダは、(a)参照領域を決定し、次いで、(b)参照領域のそれぞれの位置におけるサンプル値を、イントラBC予測領域の対応する位置におけるサンプル値に割り当て、ここで、対応する位置は、ブロック反転を考慮したものである。水平方向の反転が用いられる場合、参照領域の最初の列は、イントラBC予測領域の最後の列を提供し、参照領域の2番目の列は、イントラBC予測領域の最後から2番目の列を提供する、等である。垂直方向の反転が用いられる場合、参照領域の最初の行は、イントラBC予測領域の最後の行を提供し、参照領域の2番目の行は、イントラBC予測領域の最後から2番目の行を提供する、等である。水平方向の反転及び垂直方向の反転がともに用いられる場合、参照領域の位置は、サンプル値をイントラBC予測領域の位置に割り当てるときに、水平方向及び垂直方向に逆順に走査され得る。例えば、16×16ブロックに関して、エンコーダ又はデコーダは、そのブロックのBV値により示される16×16参照領域を決定する。参照領域の位置におけるサンプル値が、水平方向及び/又は垂直方向に逆順に、イントラBC予測領域の対応する位置におけるサンプル値に割り当てられる(例えば、参照領域の位置(0,0)におけるサンプル値が、イントラBC予測領域の位置(15,15)におけるサンプル値に割り当てられ、参照領域の位置(0,1)におけるサンプル値が、イントラBC予測領域の位置(15,14)におけるサンプル値に割り当てられる、等である)。
3.ブロック反転についての例示的なシグナリング
ブロック反転が、イントラBC予測について有効にされている場合、ブロック反転を用いるか否かの決定は、実装に応じて、様々な形でシグナリングされ得る。
ブロック反転は、ビデオのシーケンス、ピクチャ、又は他のユニットについて有効にされ得る。(例えば、SPS内の)シーケンスレイヤシンタックス要素、(例えば、PPS内の)ピクチャレイヤシンタックス要素、又は(例えば、スライスセグメントヘッダ内の)スライスヘッダレイヤシンタックス要素は、ブロック反転が有効にされているか無効にされているかを示すことができる。あるいは、ブロック反転は、符号化及び復号のいくつかのプロファイル又はレベルについて有効にされてもよい。ブロック反転を有効にする決定は、方向ごとになされ得る(例えば、水平方向のブロック反転のみ、垂直方向のブロック反転のみ、又は、水平方向のブロック反転及び垂直方向のブロック反転の両方)。ブロック反転が有効にされている場合、追加のシンタックス要素が、ブロック反転がいつ用いられどのように用いられるかをシグナリングする。
垂直方向の反転のみが有効にされている場合、フラグ値は、イントラBC予測中に垂直方向の反転が用いられているか否かを示すことができる。水平方向の反転のみが有効にされている場合、フラグ値は、イントラBC予測中に水平方向の反転が用いられているか否かを示すことができる。垂直方向の反転及び水平方向の反転の両方が有効にされている場合、2つのフラグ値は、イントラBC予測中に垂直方向の反転及び水平方向の反転について反転が用いられているか否かを示すことができ、各フラグは、反転の方向についての決定を示す。あるいは、複数の値を有する1つのシンタックス要素が使用されてもよい(例えば、取り得る値は、垂直方向の反転のみ、水平方向の反転のみ、垂直方向の反転及び水平方向の反転の両方、又は反転なしを示す)。
現ブロックについてブロック反転が用いられているか否かを示すシンタックス要素(例えば、フラグ値)は、現ブロックについての他のシンタックス要素とともに、ビットストリームに含められてシグナリングされ得る。例えば、PUについてのブロック反転に関する1以上のシンタックス要素が、PUについてシグナリングされる。あるいは、現ブロックについてブロック反転が用いられているか否かを示すシンタックス要素は、現ブロックを含むより大きなブロックについて、ビットストリームに含められてシグナリングされ得る。例えば、1以上のPUについてのブロック反転に関する1以上のシンタックス要素が、1以上のPUを含むCUについてシグナリングされる。代替的に、現ブロックについてブロック反転が用いられているか否かを示すシンタックス要素は、ビットストリームに含められて何らかの他のレベルでシグナリングされる。
現ブロックについてブロック反転が用いられているか否かを示すシンタックス要素は、エントロピ符号化され得る。例えば、現ブロックについてのフラグ値は、コンテキスト適応バイナリ算術符号化を用いて符号化され、コンテキスト適応バイナリ算術復号を用いて復号される。代替的に、異なる形態のエントロピ符号化が用いられてもよいし、あるいは、シンタックス要素が、固定長の値としてシグナリングされてもよい。
現ブロックについてブロック反転が用いられているか否かを示す1以上のシンタックス要素は、ビットストリームに含められて別々に条件付きでシグナリングされ得る。例えば、ブロック反転が用いられているか否かを示すフラグ値は、現ブロックがイントラBC予測されている場合にはシグナリングされ得るが、現ブロックがイントラBC予測されていない場合にはシグナリングされない。あるいは、現ブロックについてブロック反転が用いられているか否かを示す1以上のシンタックス要素は、ビットストリーム内の別のシンタックス要素とともに統合符号化され得る。例えば、ブロック反転が用いられているか否かを示すフラグ値は、現ブロックがイントラBC予測されているか否かを示すフラグ値とともに統合符号化され得る。
4.イントラBC予測においてブロック反転を用いる例示的な符号化
図11は、符号化中のイントラBC予測におけるブロック反転のための例示的な技術(1100)を示している。図3又は図5a〜図5bを参照して説明したエンコーダ等の画像エンコーダ又はビデオエンコーダが、技術(1100)を実行することができる。
エンコーダは、ピクチャ内の現ブロックについてのイントラBC予測領域を、ピクチャ内の参照領域に基づいて決定する(1110)。現ブロックは、PU、CU、又は他のブロックであり得る。BV推定において特定された、現ブロックのBV値は、ピクチャ内の参照領域への変位を示すことができる。イントラBC予測領域は、参照領域に対して反転されている。例えば、イントラBC予測領域は、参照領域に対して水平方向及び/又は垂直方向に反転されている。ブロック反転オペレーションを実行するアプローチの例は、上記で説明されている(セクションVII.B.2を参照されたい)。
エンコーダは、イントラBC予測領域を使用して、現ブロックを符号化し(1120)、ビットストリーム内に符号化されたデータを出力する(1130)。符号化されたデータは、イントラBC予測領域が参照領域に対して反転されているか否かのインジケーションを含む。例えば、インジケーションは、ビットストリーム内の1以上のシンタックス要素である。ブロック反転が用いられているか否かをシグナリングするアプローチの例は、上記で説明されている(セクションVII.B.3を参照されたい)。
エンコーダは、スライス、タイル、又はピクチャについて、ブロック反転を用いて又は用いないで、ブロックごとに、他のイントラBC予測ブロックを同様に符号化することができる。
5.イントラBC予測においてブロック反転を用いる例示的な復号
図12は、復号中のイントラBC予測におけるブロック反転のための例示的な技術(1200)を示している。図4又は図6を参照して説明したデコーダ等の画像デコーダ又はビデオデコーダが、技術(1200)を実行することができる。
デコーダは、ビットストリーム内の符号化されたデータを受信する(1210)。符号化されたデータは、ピクチャ内の現ブロックについてのイントラBC予測領域が、ピクチャ内の参照領域に対して反転されているか否かのインジケーションを含む。現ブロックは、PU、CU、又は他のブロックであり得る。例えば、インジケーションは、ビットストリーム内の1以上のシンタックス要素である。ブロック反転が用いられているか否かをシグナリングするアプローチの例は、上記で説明されている(セクションVII.B.3を参照されたい)。
デコーダは、ピクチャ内の現ブロックについてのイントラBC予測領域を、ピクチャ内の参照領域に基づいて決定する(1220)。現ブロックのBV値は、参照領域への変位を示すことができる。イントラBC予測領域は、参照領域に対して反転されている。例えば、イントラBC予測領域は、参照領域に対して水平方向及び/又は垂直方向に反転されている。ブロック反転オペレーションを実行するアプローチの例は、上記で説明されている(セクションVII.B.2を参照されたい)。デコーダは、イントラBC予測領域を使用して、現ブロックを復号する(1230)。
デコーダは、スライス、タイル、又はピクチャについて、ブロック反転を用いて又は用いないで、ブロックごとに、他のイントラBC予測ブロックを同様に復号することができる。
C.イントラBC予測についてのスキップモード
イントラBC予測のいくつかの以前のアプローチにおいて、現CUについてのフラグが、現CUがイントラBC予測モードで符号化されているか否かを示す。現CUがイントラBC予測モードで符号化されている場合、現CUについての第2のフラグが、現CUが残差データを有するか否かを示す。残差データを有さないイントラBC予測ブロックをシグナリングするこの方式は、多くのスクリーンコンテンツ符号化/復号シナリオにおいて、効率的ではない。
本明細書に記載のイノベーションの別の態様に従うと、エンコーダ及びデコーダは、残差データを有さないイントラBC予測ブロックをシグナリングするためのフラグを使用する。スキップモードにおいて、イントラBC予測ブロックは、BV差分がビットストリームに含められてシグナリングされるBV値を使用するが、ビットストリーム内に残差データを有さない。特に、スクリーンキャプチャコンテンツに関して、残差データを有さないイントラBC予測ブロックがよく起こる。残差データを有さないイントラBC予測ブロックをシグナリングするための(複数のフラグではなく)1つのフラグを使用することが、そのようなシナリオにおいて効率的である。
1.イントラBC予測スキップモードについての例示的なシグナリング
例示的な実装において、ビットストリーム内の1つのフラグが、現ブロックがスキップモードでのイントラBC予測ブロックであるか否かを示す。現ブロックが、スキップモードでのイントラBC予測ブロックではない場合、ビットストリーム内の第2のフラグが、現ブロックが(スキップモードではない)イントラBC予測ブロックであるか否かを示す。現ブロックが、イントラBC予測ブロックではない場合、ビットストリーム内の1以上の他のシンタックス要素が、現ブロックのモードを示す(例えば、時間的スキップモードか否かについてのフラグ、イントラ空間予測モードか否かについてのフラグ、インターピクチャモードか否かについてのフラグ、イントラ空間予測モードかインターピクチャモードかについてのフラグ)。現ブロックが、スキップモードでのイントラBC予測ブロックである場合、第2のフラグ及び他のシンタックス要素は、現ブロックについてビットストリーム内に存在しない。
現ブロックがスキップモードでのイントラBC予測ブロックであるか否かを示すフラグは、ブロックレベルでシグナリングされる。現ブロックは、サイズ2N×2Nを有するCUであり得る。例えば、16×16CUの場合、Nは8である。代替的に、現ブロックは、PU又は他のタイプのブロックであってもよい。現ブロックのモードを示す他のフラグ及びシンタックス要素も、ビットストリームに含められてブロックレベルでシグナリングされ得る。
いくつかの例示的な実装において、スキップモードでのイントラBC予測ブロックは、ビットストリーム内にBV差分を含むが残差データを有さない。代替的に、スキップモードでのイントラBC予測ブロックは、予測されたBV値を使用してもよい(したがって、ビットストリーム内にBV差分を含まない)。
2.イントラBC予測スキップモードを用いる例示的な符号化
図13は、スキップモードでイントラBC予測ブロックを符号化するための例示的な技術(1300)を示している。図3又は図5a〜図5bを参照して説明したエンコーダ等の画像エンコーダ又はビデオエンコーダが、技術(1300)を実行することができる。
エンコーダは、例えば、BV推定を用いて、ピクチャ内の現ブロック(例えば、CU、PU)のBV値を決定する(1310)。現ブロックのBV値は、ピクチャ内の参照領域への変位を示す。エンコーダは、次いで、現ブロックのBV値及び現ブロックのBV予測子を使用して、現ブロックのBV差分を決定する(1320)。BV予測子は、ルールにより選択されることもあるし、あるいは、エンコーダが、複数のBV予測子候補の中からBV予測子を選択することもある。
エンコーダは、BV値を使用するイントラBC予測を用いて、現ブロックを符号化する(1330)。例示的な実装において、イントラBC予測は、参照領域を使用して、現ブロックについてのイントラBC予測領域を決定することを含み得、ここで、イントラBC予測領域は、参照領域に対して反転されている。イントラBC予測領域は、参照領域に対して水平方向及び/又は垂直方向に反転されているものであり得る。ブロック反転オペレーションを実行すること及びブロック反転が用いられていることをシグナリングすることについてのオプションは、上記で説明されている。代替的に、エンコーダは、イントラBC予測においてブロック反転を用いない。
エンコーダは、ビットストリーム内に符号化されたデータを出力する(1340)。符号化されたデータは、現ブロックがイントラBC予測を用いてスキップモードで符号化されていることを示すフラグを含む。現ブロックは、スキップモードでのイントラBC予測ブロックであるので、ビットストリームは、現ブロックのBV差分を含むが、現ブロックの残差データを含まない。エンコーダが、複数のBV予測子候補の中からBV予測子を選択した場合、ビットストリームは、現ブロックのBV予測子として使用するための、選択されたBV予測子候補を示すインデックス値を含む。
図14は、イントラBC予測を用いてスキップモード及び/又は他のモードでピクチャ内のブロックを符号化するための例示的な技術(1400)を示している。図3又は図5a〜図5bを参照して説明したエンコーダ等の画像エンコーダ又はビデオエンコーダが、技術(1400)を実行することができる。
始めに、エンコーダは、次のブロックを取得し(1410)、イントラBC予測を用いてスキップモードでこのブロックを符号化するか否かを決定する(1420)。例えば、エンコーダは、イントラBC予測がブロックについて十分な符号化効率を提供するか否かを評価し、残差データが大きな値を含むか否かを評価する。代替的に、エンコーダは、他の基準を考慮する。
エンコーダは、ブロックがイントラBC予測を用いてスキップモードで符号化されているか否かを示すフラグをビットストリームに含めてシグナリングすることができる。スキップモードでのイントラBC予測ブロックに関して、エンコーダは、図13の段階(1310)〜段階(1330)に示される動作を用いて又は別のアプローチを用いて、イントラBC予測を用いてスキップモードでブロックを符号化する(1430)。スキップモードでのイントラBC予測ブロックであるので、このブロックは、ビットストリーム内にBV差分を有するが、ビットストリーム内に残差データを有さない。
そうでない場合(ブロックが、スキップモードでのイントラBC予測ブロックではない場合)、エンコーダは、別のモードでブロックを符号化する(1440)。別のモードは、イントラBC予測非スキップモード、イントラ空間予測モード、インターピクチャモード、又は他のモードであり得る。この場合、1以上の他のシンタックス要素が、ブロックのモードを示し得る。例えば、(段階(1420)における決定に応じた、)ブロックがイントラBC予測を用いてスキップモードで符号化されているか否かを示す第1のフラグの後、ブロックが、イントラBC予測を用いてスキップモードで符号化されていない場合、第2のフラグが、ブロックがイントラBC予測を用いて非スキップモードで符号化されているか否かを示す。ブロックが、イントラBC予測を用いて非スキップモードで符号化されていない場合、1以上の他のシンタックス要素が、ブロックの符号化モードを示す。例えば、あるフラグが、ブロックの予測モードがイントラ空間予測であるか又はインターピクチャ予測であるかを示す。
いくつかの例示的な実装において、ブロックがスキップモードでイントラBC予測されているか否かを示すフラグを使用することのさらなる利点が存在する。いくつかの場合において、イントラBC予測ブロックの分割モード(例えば、2N×2N、2N×N、N×2N、又はN×N)を示すシンタックス要素のシグナリングが回避され得る。例えば、ブロックが、イントラBC予測を用いて非スキップモードで符号化されている場合、エンコーダは、そのブロックの分割モードを示すシンタックス要素をビットストリームに含めてシグナリングする。一方、ブロックが、イントラBC予測を用いてスキップモードで符号化されている場合、エンコーダは、そのブロックの分割モードを示すシンタックス要素をビットストリームに含めてシグナリングすることをスキップし、そのブロックの分割モードが、代わりに、定められた値(例えば、2N×2N)を有するとみなされる。したがって、これらの場合において、スキップモードでイントラBC予測されたものとしてブロックをマーク付けする先のフラグが、ブロックの分割モードが定められた値を有するということもシグナリングする。
また、多くの場合において、ブロックの残差データの有無を示すフラグのシグナリングが回避され得る。もちろん、ブロックが、イントラBC予測を用いてスキップモードで符号化されている場合、エンコーダは、ブロックの残差データの有無を示すフラグをビットストリームに含めてシグナリングすることをスキップする。(スキップモードでイントラBC予測されたものとしてブロックをマーク付けする先のフラグが、そのような情報をシグナリングする。)ブロックの残差データは、ビットストリーム内に無いとみなされる。
残差データの有無を示すフラグのシグナリングは、別の場合にも回避され得る。詳細には、ブロックが、イントラBC予測を用いて非スキップモードで符号化されており、ブロックの分割モードが、定められた値(例えば、2N×2N)を有する場合、エンコーダは、ブロックの残差データの有無を示すフラグをビットストリームに含めてシグナリングすることをスキップする。この場合、ブロックの残差データは、ビットストリーム内に有るとみなされる。(ブロックの分割モードが、定められた値であり、ブロックが、残差データを有さない場合、ブロックは、先のフラグにより示されている、スキップモードでのイントラBC予測ブロックであろう。)最後に、ブロックが、イントラBC予測を用いて非スキップモードで符号化されており、ブロックの分割モードが、定められた値を有さない場合、エンコーダは、ブロックの残差データの有無を示すフラグをビットストリームに含めてシグナリングする。
エンコーダは、ピクチャ内の次のブロックに進むかどうかを決定する(1450)。次のブロックに進む場合、エンコーダは、次のブロックを取得し(1410)、符号化を続ける。
エンコーダは、ピクチャごとに、タイルごとに、スライスごとに、又は何らかの他の単位で、技術(1400)を繰り返すことができる。
3.イントラBC予測スキップモードを用いる例示的な復号
図15は、スキップモードでイントラBC予測ブロックを復号するための例示的な技術(1500)を示している。図4又は図6を参照して説明したデコーダ等の画像デコーダ又はビデオデコーダが、技術(1500)を実行することができる。
デコーダは、ビットストリームからの符号化されたデータを受信する(1510)。符号化されたデータは、ピクチャ内の現ブロック(例えば、CU、PU)がイントラBC予測を用いてスキップモードで符号化されていることを示すフラグを含む。現ブロックは、スキップモードでのイントラBC予測ブロックであるので、ビットストリームは、現ブロックのBV差分を含むが、現ブロックの残差データを含まない。
デコーダは、現ブロックのBV差分及び現ブロックのBV予測子を使用して、現ブロックのBV値を決定する(1520)。現ブロックのBV値は、ピクチャ内の参照領域への変位を示す。BV予測子は、ルールにより選択され得る。あるいは、デコーダは、現ブロックのBV予測子として使用するためにどのBV予測子候補を選択するかの、ビットストリーム内のインデックス値を使用して、複数のBV予測子候補の中からBV予測子を選択することができる。
デコーダは、BV値を使用するイントラBC予測を用いて、現ブロックを復号する(1530)。例示的な実装において、イントラBC予測は、参照領域を使用して、現ブロックについてのイントラBC予測領域を決定することを含み得、ここで、イントラBC予測領域は、参照領域に対して反転されている。イントラBC予測領域は、参照領域に対して水平方向及び/又は垂直方向に反転されているものであり得る。ブロック反転オペレーションを実行すること及びブロック反転が用いられていることをシグナリングすることについてのオプションは、上記で説明されている。代替的に、デコーダは、イントラBC予測においてブロック反転を用いない。
図16は、イントラBC予測を用いてスキップモード及び/又は他のモードでピクチャ内のブロックを復号するための例示的な技術(1600)を示している。図4又は図6を参照して説明したデコーダ等の画像デコーダ又はビデオデコーダが、技術(1600)を実行することができる。
始めに、デコーダは、次のブロックについての符号化されたデータを取得し(1610)、イントラBC予測を用いてスキップモードでこのブロックを復号するか否かを決定する(1620)。例えば、デコーダは、ビットストリーム内の、ブロックがイントラBC予測を用いてスキップモードで符号化されているか否かを示すフラグを受信して解析する。
スキップモードでのイントラBC予測ブロックに関して、デコーダは、図15の段階(1520)及び段階(1530)に示される動作を用いて又は別のアプローチを用いて、イントラBC予測を用いてスキップモードでブロックを復号する(1630)。スキップモードでのイントラBC予測ブロックであるので、このブロックは、ビットストリーム内にBV差分を有するが、ビットストリーム内に残差データを有さない。
そうでない場合(ブロックが、スキップモードでのイントラBC予測ブロックではない場合)、デコーダは、別のモードでブロックを復号する(1640)。別のモードは、イントラBC予測非スキップモード、イントラ空間予測モード、インターピクチャモード、又は他のモードであり得る。この場合、1以上の他のシンタックス要素が、ブロックのモードを示し得る。例えば、(段階(1620)における決定に応じた、)ブロックがイントラBC予測を用いてスキップモードで符号化されているか否かを示す第1のフラグの後、ブロックが、イントラBC予測を用いてスキップモードで符号化されていない場合、第2のフラグが、ブロックがイントラBC予測を用いて非スキップモードで符号化されているか否かを示す。ブロックが、イントラBC予測を用いて非スキップモードで符号化されていない場合、1以上の他のシンタックス要素が、ブロックの符号化モードを示す。例えば、あるフラグが、ブロックの予測モードがイントラ空間予測であるか又はインターピクチャ予測であるかを示す。
前のセクションで記したように、いくつかの例示的な実装において、ブロックがスキップモードでイントラBC予測されているか否かを示すフラグを使用することのさらなる利点が存在する。例えば、ブロックが、イントラBC予測を用いて非スキップモードで符号化されている場合、ビットストリームは、ブロックの分割モードを示すシンタックス要素を含む。一方、ブロックが、イントラBC予測を用いてスキップモードで符号化されている場合、ビットストリームは、ブロックの分割モードを示すシンタックス要素を含まない。デコーダは、ブロックの分割モードが、定められた値(例えば、2N×2N)であることを推測する。
また、多くの場合において、ブロックの残差データの有無を示すフラグのシグナリングが回避され得る。もちろん、ブロックが、イントラBC予測を用いてスキップモードで符号化されている場合、ビットストリームは、ブロックの残差データの有無を示すフラグを含まない。代わりに、デコーダは、スキップモードでイントラBC予測されたものとしてブロックをマーク付けする先のフラグから、ブロックの残差データがビットストリーム内に無いことを推測する。
残差データの有無を示すフラグのシグナリングは、別の場合にも回避され得る。詳細には、ブロックが、イントラBC予測を用いて非スキップモードで符号化されており、ブロックの分割モードが、定められた値(例えば、2N×2N)を有する場合、ビットストリームは、ブロックの残差データの有無を示すフラグを含まない。この場合、デコーダは、ブロックの残差データが、ビットストリーム内に有ると推測する。最後に、ブロックが、イントラBC予測を用いて非スキップモードで符号化されており、ブロックの分割モードが、定められた値を有さない場合、ビットストリームは、ブロックの残差データの有無を示すフラグを含む。
デコーダは、ピクチャ内の次のブロックに進むかどうかを決定する(1650)。次のブロックに進む場合、デコーダは、次のブロックについての符号化されたデータを取得し(1610)、復号を続ける。
デコーダは、ピクチャごとに、タイルごとに、スライスごとに、又は何らかの他の単位で、技術(1600)を繰り返すことができる。
4.符号化ユニットについての例示的なシンタックス
図17a及び図17bは、従来のアプローチに従った、符号化ユニット(「CU」)についてのシンタックス構造(1700)を示している。シンタックス構造(1700)内に示されるシンタックス要素は、JCTVC−P1005において規定されている。選択されたシンタックス要素について、ここでまとめる。
シンタックス要素intra_bc_flagは、イントラBC予測が有効にされている(これは、intra_block_copy_enabled_flagにより示される)場合、CUについてシグナリングされ得る。シンタックス要素intra_bc_flagは、CUがイントラBC予測モードで符号化されているか否かを示す。intra_bc_flagの値が1である場合、CUは、イントラBC予測モードで符号化されている。intra_bc_flagの値が0である場合、CUは、イントラBC予測モードで符号化されていない。この場合(intra_bc_flagが0である場合)、シンタックス要素pred_mode_flagが存在し、このシンタックス要素は、CUがインター予測モードで符号化されているか又はイントラ空間予測モードで符号化されているかを示す。
ブロックが、イントラBC予測されている場合(及び、数少ない他の場合)、ビットストリームは、CUについてのpart_modeシンタックス要素を含む。part_modeシンタックス要素は、CUの分割モード(すなわち、2N×2N、2N×N、N×2N、N×N)を示す。
次いで、CUシンタックス構造(1700)は、パーティションについてのBV値(CUがイントラBC予測されている場合)、イントラ予測方向情報(CUがイントラ空間予測されている場合)、又は予測ユニット情報(CUがインター予測されている場合)を含む。次いで、CUシンタックス構造(1700)は、いくつかの場合において、rqt_root_cbfシンタックス要素を含む。詳細には、CUがイントラBC予測されている場合、rqt_root_cbfシンタックス要素が存在する。rqt_root_cbfシンタックス要素は、transform_tree()シンタックス構造が、CUについて存在するか否かを示す。transform_tree()シンタックス構造は、CUについての残差データ用である。rqt_root_cbfが1である場合、transform_tree()シンタックス構造が、CUについて存在する。rqt_root_cbfが0である場合、transform_tree()シンタックス構造は、CUについて存在しない。rqt_root_cbfが存在しない場合、rqt_root_cbfの値は、1であると推測される。したがって、前述したように、このアプローチにおいては、スキップモードでのイントラBC予測ブロックを示すために、2つのフラグ(intra_bc_flag及びrqt_root_cbf)が使用される。
図18は、スキップモードでのイントラBC予測ブロックとして符号化され得る符号化ユニットについての新たなシンタックス構造(1800)を示している。図17a及び図17bに示されるシンタックス構造(1700)に対する変更が、図18においてハイライトされている。
intra_bc_skip_flagは、イントラBC予測が有効にされている(これは、intra_block_copy_enabled_flagにより示される)場合、CUについてシグナリングされ得る。シンタックス要素intra_bc_skip_flagは、CUがスキップモードでのイントラBC予測ブロックであるか否かを示す。CUがスキップモードでイントラBC予測されている場合(intra_bc_skip_flagが1である場合)、シンタックス要素rqt_root_cbfと同様に、シンタックス要素intra_bc_flag及びシンタックス要素pred_mode_flagは省かれる。また、この場合、CUの分割モードは、定められた値2N×2Nを有する。
一方、シンタックス要素intra_bc_skip_flagにより、CUがスキップモードでイントラBC予測されていないことが示される場合(intra_bc_skip_flagが0である場合)、シンタックス要素intra_bc_flagが存在する。シンタックス要素intra_bc_flagは、図17a及び図17bを参照して説明したように、CUがイントラBC予測モードで符号化されているか否かを示す。さらに、intra_bc_flagが0である場合、シンタックス要素pred_mode_flagが存在し、このシンタックス要素は、図17a及び図17bを参照して説明したように、CUがインター予測モードで符号化されているか又はイントラ空間予測モードで符号化されているかを示す。
ブロックが、非スキップモードでイントラBC予測されている場合(すなわち、intra_bc_skip_flagが0であり、intra_bc_flagが1である場合)、ビットストリームは、CUについてのpart_modeシンタックス要素を含む。part_modeシンタックス要素は、CUの分割モード(例えば、2N×2N、2N×N、N×2N、N×N)を示す。一方、ブロックが、スキップモードでイントラBC予測されている場合、part_modeシンタックス要素は、CUについて、ビットストリームに含められてシグナリングされない。代わりに、分割モードは、2N×2Nという定められた値を有すると推測される。したがって、そのようなブロックに関して、intra_bc_skip_flagは、CUの分割モードが、2N×2Nという定められた値を有するということをシグナリングし、part_modeシンタックス要素の別個のシグナリングが回避される。
図18から省かれているセクションにおいて、次いで、シンタックス構造(1800)は、パーティションについてのBV値(CUがイントラBC予測されている場合)、イントラ予測方向情報(CUがイントラ空間予測されている場合)、又は予測ユニット情報(CUがインター予測されている場合)を含む。
最後に、シンタックス構造(1800)は、いくつかの場合において、rqt_root_cbfシンタックス要素を含む。詳細には、CUが非スキップモードでイントラBC予測されている場合、CUの分割モードが2N×2Nという定められた値ではない限り、rqt_root_cbfシンタックス要素が存在する。rqt_root_cbfシンタックス要素が存在する場合、rqt_root_cbfシンタックス要素の値は、図17a及び図17bを参照して説明したように、transform_tree()シンタックス構造が、CUについて存在するか否かを示す。一方、(1)CUがスキップモードでイントラBC予測されている場合、又は、(2)CUがイントラBC予測されており、CUの分割モードが、2N×2Nという定められた値である場合、rqt_root_cbfシンタックス要素は存在しない。CUがスキップモードでイントラBC予測されている場合、rqt_root_cbfの値は、0であると推測される(CUについての残差データが無い)。あるいは、CUがイントラBC予測されており、CUの分割モードが、2N×2Nという定められた値である場合、rqt_root_cbfの値は、1であると推測される(CUについての残差データが有る)
開示した本発明の原理を適用することができる多くの可能な実施形態を鑑みると、例示した実施形態は、本発明の好ましい例に過ぎないことを認識すべきであり、本発明の範囲を限定するものとして解釈すべきではない。そうではなく、本発明の範囲は、請求項により定められる。したがって、我々は、請求項の範囲及び主旨に含まれる全てを、我々の発明として特許請求する。