【文献】
Bin Li et al.,Non-SCCE1: Unification of intra BC and inter modes,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 18th Meeting: Sapporo, JP, 30 June - 9 July 2014,ITU/ISO/IEC,2014年 6月29日,JCTVC-R0100-v2,pp.1-28
【文献】
Rajan Joshi et al.,High Efficiency Video Coding (HEVC) Screen Content Coding: Draft 1,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 18th Meeting: Sapporo, JP, 30 June - 9 July 2014,ITU/ISO/IEC,2014年 8月 9日,JCTVC-R1005-v1,pp.151-153
(58)【調査した分野】(Int.Cl.,DB名)
前記リファレンスピクチャリストは第1のリファレンスピクチャリストであり、前記方法はさらに、イントラブロックコピーモードが前記カレントピクチャのBスライスに関してイネーブルされることに基づいて、前記Bスライスに関する前記カレントピクチャを含む第2のリファレンスピクチャリストを構築することを備えた、または、
前記カレントピクチャは第1のピクチャであり、前記リファレンスピクチャリストは第1のリファレンスピクチャリストであり、前記方法はさらに、
イントラブロックコピーが第2のピクチャに関してイネーブルされるかどうかを示すシンタックス要素をビットストリームから取得することと、
前記第2のピクチャのIスライスに関する復号プロセスの一部として、イントラブロックコピーが前記Iスライスに関してイネーブルされる前記シンタックス要素に基づいた決定に応答して、第2のリファレンスピクチャリストを構築することと、前記第2のリファレンスピクチャリストは前記第2のピクチャを含む、
を備えた、または、
前記方法はさらに、イントラブロックコピーモード符号化ブロックに関する少なくとも1つの動きベクトル候補とインター予測モード符号化ブロックに関する少なくとも1つの候補を含む動きベクトル候補リストを生成することを備えた、請求項1の方法。
前記リファレンスピクチャリストは第1のリファレンスピクチャリストであり、前記方法はさらに、イントラブロックコピーモードが前記カレントピクチャのBスライスに関してイネーブルされることに基づいて、前記Bスライスに関する前記カレントピクチャを含む第2のリファレンスピクチャリストを構築することを備えた、または、
前記カレントピクチャは第1のピクチャであり、前記リファレンスピクチャリストは第1のリファレンスピクチャリストであり、前記方法はさらに、第2のピクチャのIスライスに関してイントラブロックコピーがイネーブルされるとき前記Iスライスに関して第2のリファレンスピクチャリストを構築することを備え、前記第2のリファレンスピクチャリストは前記第2のピクチャを含む、または、
前記方法はさらに、イントラブロックコピーモード符号化ブロックに関する少なくとも1つの動きベクトル候補とインター予測モード符号化ブロックに関する少なくとも1つの候補を含む動きベクトル候補リストを生成することを備えた、請求項4の方法。
前記リファレンスピクチャリストは第1のリファレンスピクチャリストであり、前記1つまたは複数のプロセッサは、イントラブロックコピーモードが前記カレントピクチャのBスライスに関してイネーブルされることに基づいて、前記Bスライスに関する前記カレントピクチャを含む第2のリファレンスピクチャリストを構築するようにさらに構成される、または、
前記カレントピクチャは第1のピクチャであり、前記リファレンスピクチャリストは第1のリファレンスピクチャリストであり、前記1つまたは複数のプロセッサは、
イントラブロックコピーが第2のピクチャに関してイネーブルされるかどうかを示すシンタックス要素をビットストリームから取得し、
前記第2のピクチャのIスライスに関する復号プロセスの一部として、イントラブロックコピーが前記Iスライスに関してイネーブルされる前記シンタックス要素に基づいた決定に応答して、第2のリファレンスピクチャリストを構築するようにさらに構成され、前記第2のリファレンスピクチャリストは前記第2のピクチャを含む、または、
前記1つまたは複数のプロセッサは、イントラブロックコピーモード符号化ブロックに関する少なくとも1つの動きベクトル候補とインター予測モード符号化ブロックに関する少なくとも1つの候補を含む動きベクトル候補リストを生成するようにさらに構成される、請求項7のデバイス。
前記リファレンスピクチャリストは第1のリファレンスピクチャリストであり、前記1つまたは複数のプロセッサは、イントラブロックコピーモードが前記カレントピクチャのBスライスに関してイネーブルされることに基づいて、前記Bスライスに関する前記カレントピクチャを含む第2のリファレンスピクチャリストを構築するようにさらに構成された、または、
前記カレントピクチャは第1のピクチャであり、前記リファレンスピクチャリストは第1のリファレンスピクチャリストであり、前記1つまたは複数のプロセッサは、第2のピクチャのIスライスに関してイントラブロックコピーがイネーブルされるとき前記Iスライスに関して第2のリファレンスピクチャリストを構築するようにさらに構成され、前記第2のリファレンスピクチャリストは前記第2のピクチャを含む、または、
前記1つまたは複数のプロセッサは、イントラブロックコピーモード符号化ブロックに関する少なくとも1つの動きベクトル候補とインター予測モード符号化ブロックに関する少なくとも1つの候補を含む動きベクトル候補リストを生成するようにさらに構成される、請求項11のデバイス。
【発明を実施するための形態】
【0016】
[0022]本開示の態様は、ビデオ符号化およびビデオ復号に関する技術に向けられている。例えば、ビデオコーダは、進化した動きベクトル予測(AVMP)を実行しながら、時間動きベクトル予測子を導出することができる。次に、ビデオコーダは任意のサブピクセル精度を除去するために時間動きベクトル予測子を右シフトすることができる。イントラブロックコピーモードは整数ピクセル精度を使用するので、時間動きベクトル予測子を変換することはコード化効率を増大することができる。これは、ビデオコーダは、そうでなければ、サブピクセル精度によりイントラブロックコピーモードに関して使用不可または非効率であり得る時間動きベクトル予測子を使用することができるためである。この開示の観点は、イントラブロックコピー(BC)に関するブロックベクトルコード化を改良する技術に向けられることができる。この開示の観点は、ビデオ符号化およびビデオ復号に関する統合されたインター予測プロセスの一部としてイントラBCを実行する技術に向けられることができる。ここに記載された技術はスクリーンコンテンツコード化(SCC)または、1つまたは複数の伝統的なコード化ツールが非効率である他のコンテンツに適用されることができる。
【0017】
[0023]インター予測(prediction)はカレントピクチャ以外のピクチャのデータエレメントに基づいてデータエレメントを予測する技術である。例えば、ビデオエンコーダはカレントピクチャの予測ユニット(PU)に関する予測ブロック(predictive block)を決定するためにインター予測を使用することができる。予測ブロックはリファレンスピクチャ(すなわち、カレントピクチャ以外のピクチャ)内のサンプルに基づいたサンブルのブロックである。PUの動きベクトルはPUの予測ブロック(prediction block)と予測ブロック(predictive block)との間の空間的変位(spatial displacement)を示すことができる。この例において、ビデオエンコーダは予測ブロック(predictive block)とPUの予測ブロック(prediction block)との間の差分を示す残差データ(すなわち、予測誤差)を生成することができる。ビデオエンコーダはビデオデータのコード化された表示を含むビットストリーム内の残差データを表すデータを含むことができる。ビデオデコーダは予測ブロック(predictive block)を決定するために動きベクトルを使用することができる。したがって、ビデオデコーダは予測ブロック(prediction block)を再構成するために残差データと予測ブロックの対応するサンプルを合計することができる。
【0018】
[0024]インター予測の他の例において、ビデオコーダは、リファレンスピクチャ内の時間動きベクトル予測子(TMVP)に基づいてカレントピクチャのカレントPUの動きベクトルを決定することができる。多くの例において、TMVPはPUの予測ブロック(prediction block)と少なくとも部分的にコロケートされた予測ブロック(prediction block)を有するPUの動きベクトルである。たとえば、ビデオコーダは、カレントPUの動きベクトルとしてTMVPを採用することができ、あるいはTMVPの動きベクトルに基づいてPUの動きベクトルを決定することができる。ビデオコーダは次に予測ブロックを決定するためにカレントPUの動きベクトルを使用することができる。
【0019】
[0025]イントラ予測は、同じ復号されたスライスの、サンプル値のような、データエレメントに基づいてデータエレメントを予測する技術である。イントラブロックコピー(すなわち、イントラBC)はコード化ユニット(CUs)またはPUsのようなビデオブロックを符号化するために使用されるイントラ予測の新しく開発されたフォームである。イントラBCを用いてカレントピクチャのカレントビデオブロックを符号化するために、ビデオエンコーダは、予測ブロックに関するカレントビデオブロックと同じカレントピクチャのスライス内のサーチ領域をサーチする。いくつかの例において、予測ブロックはカレントビデオブロックのサンプルのアレイに最も厳密にマッチするサンプルのアレイを備えるブロックであり得る。ビデオエンコーダはカレントビデオブロックと予測ブロック(predictive block)との間の変位(displacement)を示すブロックベクトルを生成する。インター予測と同じやり方で、ビデオエンコーダは残差データを生成するために予測ブロックを使用することができる。ビデオデコーダはカレントピクチャ内の予測ブロックを決定するためにカレントビデオブロックのブロックベクトルを使用することができる。ビデオデコーダはカレントビデオブロックの予測ブロックを再構成するために予測ブロックと残差データの対応するサンプルを合計することができる。
【0020】
[0026]一般に、インター予測に関して使用される動きベクトルはサブピクセル精度を有する。例えば、インター予測に使用される動きベクトルはハーフピクセルあるいは1/4ピクセル精度を有することができる。したがって、インター予測に使用される動きベクトルはピクチャの2つの実際のピクセル間のロケーションを示すことができる。実際のピクセルはピクチャのピクセルのアレイ内の割り当てられた整数座標なのでピクチャの実際のピクセルは整数ピクセルと呼ばれることができる。動きベクトルが2つの整数ピクセル間のロケーションを示す場合、ビデオコーダ(すなわち、ビデオエンコーダまたはビデオデコーダ)はサンプルの値を補間することができる。対照的にイントラBCに使用されるブロックベクトルは、整数精度(すなわち、整数精度、整数ピクセル精度)に制限される。したがって、イントラBCに使用されるブロックベクトルは整数ピクセル間のロケーションを示さない。
【0021】
[0027]インター予測とイントラBCとの間の類似性のために、インター予測とイントラBCを統合する試みが提案された。いくつかのそのような試みにおいて、ビデオコーダはリファレンスピクチャリストを生成する。一般的に、リファレンスピクチャリストはインター予測に関してカレントピクチャにより使用される利用可能なピクチャのリストである。インター予測とイントラBCを統合するためのいくつかの提案は、カレントピクチャが他のリファレンスピクチャと同じ態様で使用されることができるようにカレントピクチャをリファレンスピクチャリスト内に含めることを示唆する。
【0022】
[0028]しかしながら、そのような提案はいくつかの問題を提起する。例えば、イントラBCの使用は、動きベクトルまたはブロックベクトルであり得るTMVPがカレントブロックのブロックベクトルとして使用されるとき、カレントブロックに関する最良のレート歪メトリックを生じるとビデオエンコーダは決定することができる。それゆえ、この例において、ビデオエンコーダはTMVPを識別する候補インデックスを示すことができ、リファレンスピクチャリスト内のカレントピクチャの位置を示す参照インデックスをシグナルすることができる。ビデオエンコーダはまたもしあるとすれば、カレントブロックのブロックベクトルとTMVP(すなわち、コロケートされたブロックのブロックベクトルまたは動きベクトル)との間の差分を示す動きベクトル差分(MVD)をシグナルすることができる。しかしながら、TMVPがたまたまサブピクセル精度の動きベクトルであるとするなら、イントラBCは整数精度ブロックベクトルを有しているので、動きベクトルはイントラBCには使用されることができないかあるいはイントラBCの使用には非効率である。インター予測とイントラBCとの間の精度の差(すなわち、サブピクセル精度対整数ピクセル精度)はまた、インター予測がサブピクセル精度を用いて動作し、イントラBCが整数ピクセル精度を用いて動作するのでこれらの2つの予測モードが異なって動作することを意味する。その結果はインター予測とイントラBCを統合するための原理を破壊する非互換性である。
【0023】
[0029]この開示の特別な技術はそのような問題に対する解決を提供する。例えば、ビデオコーダはカレントピクチャとリファレンスピクチャをリファレンスピクチャリスト内に含めることができる。さらに、ビデオコーダはリファレンスピクチャのコロケートされたブロックを決定することができる。コロケートされたブロックはカレントピクチャのカレントブロックとコロケートされる。ブロックがそのブロックのそれぞれのブロック内のオーバラップする位置に少なくとも部分的に対応する場合、ブロックは他のブロックとコロケートされることができる。さらに、この例において、ビデオコーダはコロケートされたブロックからTMVPを導出することができる。ビデオコーダは次に、TMVPがサブピクセル精度を有するかどうかを決定することができる。TMVPがサブピクセル精度を有すると決定することに応答して、ビデオコーダはTMVPを右シフトすることができる。言い換えれば、ビデオコーダはTMVPの小数部分をあらわすいかなるビット(例えば、2つの最下位ビット)が消去されるようにTMVPを示す値を右シフトすることができ、その結果整数レベルの精度を有するTMVPを生ずる。例えば、2つの最下位ビットが除去される場合、それは2だけ右シフトすることと同じであろう。他の例として、HEVCにおいて1/4ピクセル精度を有するTMVPを2だけ右シフトすることはTMVPをサブピクセル精度(またはこの例では、1/4ピクセル精度)を有することから整数ピクセル精度を有することへ変換するであろう。このように、ビデオコーダはTMVPをサブピクセル精度から整数ピクセル精度へ効果的に変換することができる。さらに、この例において、ビデオコーダは右シフトされた時間動きベクトル予測子に基づいて、カレントピクチャ内の予測ブロック(predictive block)を決定することができ残差ブロックのサンプルと、予測ブロック(predictive block)の対応するサンプルを合計することにより復号されたビデオブロックを形成することができる。したがって、TMVPをサブピクセル精度から整数精度へ変換することにより、ビデオコーダはTMVPをイントラBC内で使用するためのブロックベクトルとしてTMVPを使用することが可能であり得る。このように、本開示のこの技術は、インター予測(prediction)とイントラBCの統合を容易にすることができる。
【0024】
[0030]
図1は、本開示の1つまたは複数の技術を利用することができる例示ビデオ符号化および復号システム10を例示するブロック図である。ここに使用されるように、「ビデオコーダ」は一般的にビデオエンコーダとビデオデコーダの両方に言及する。同様に、本開示において、用語「ビデオコーディング」または「コーディング」は一般にビデオ符号化またはビデオ復号に言及する。この開示全体に記載するように、ビデオコーディングシステム10のビデオエンコーダ20およびビデオデコータ30は本開示の1つまたは複数の技術を実行するように構成されることができるエンコーダおよびデコーダの種々の例を表す。
【0025】
[0031]
図1の例で図示されているように、ビデオコーディングシステム10は、ソースデバイス12およびデスティネーションデバイス14を含む。ソースデバイス12は、符号化されたビデオデータを生成する。したがって、ソースデバイス12は、ビデオ符号化デバイス、またはビデオ符号化装置と称され得る。デスティネーションデバイス14は、ソースデバイス12により生成された符号化されたビデオデータを復号することができる。従って、デスティネーションデバイス14はビデオ復号デバイスまたはビデオ復号装置と称され得る。ソースデバイス12とデスティネーションデバイス14はビデオコーディングデバイスまたはビデオコーディング装置の例であり得る。ソースデバイス12とデスティネーションデバイス14は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、ワイヤレスコミュニケーションデバイス、いわゆる「スマート」フォン、いわゆる「スマート」パッドのようなテレフォンハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレイヤ、ビデオゲームコンソール、ビデオストリーミングデバイス、等を含む広範囲のデバイスのいずれかを備えることができる。いくつかの例において、ソースデバイス12とデスティネーションデバイス14はワイヤレス通信に関して装備される。
【0026】
[0032]デスティネーションデバイス14は、リンク16を介してソースデバイス12から符号化されたビデオデータを受信することができる。リンク16は、ソースデバイス12からデスティネーションデバイス14に符号化されたビデオデータを移動することが可能な1つまたは複数の媒体またはデバイスを備えることができる。1つの例では、リンク16は、ソースデバイス12がリアルタイムにデスティネーションデバイス14に符号化されたビデオデータを直接送信することを可能にする1つまたは複数の通信媒体を備える。この例では、ソースデバイス12は、ワイヤレスまたは有線(wired)通信プロトコルのような通信規格にしたがって、符号化されたビデオデータを変調または通信し、デスティネーションデバイス14に変調された(または変調されていない)ビデオデータを送信する。1つまたは複数の通信媒体は、無線周波数(RF)スペクトルまたは1つまたは複数の物理送信ラインのような、ワイヤレスおよび/または有線通信媒体を含むことができる。1つまたは複数の通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはグローバルネットワーク(例えば、インターネット)のような、パケットベースのネットワークの一部を形成することができる。1つまたは複数の通信媒体は、ルータ、スイッチ、基地局、または、ソースデバイス12からデスティネーションデバイス14への通信を容易にする他の機器を含むことができる。
【0027】
[0033]いくつかの例では、符号化されたデータは、出力インターフェース22からストレージデバイス33に出力される。そのような例において、符号化されたデータは入力インターフェース28によりストレージデバイス33からアクセスされる。ストレージデバイス33は、ハードドライブ、ブルーレイディスク、DVD、CD−ROM、フラッシュメモリ、揮発性または非揮発性メモリ、または符号化されたビデオデータを記憶するためのいかなる他の適切なデジタル記憶メディアのような、分散されたまたはローカルにアクセスされた様々なデータ記憶メディアのうちのいずれかを含むことができる。
【0028】
[0034]ストレージデバイス33は、ソースデバイス12によって生成された符号化されたビデオを保持しうる別の中間ストレージデバイスまたはファイルサーバを備えることができる。デスティネーションデバイス14は、ストリーミングまたはダウンロードを介してストレージデバイス33から記憶されたビデオデータにアクセスすることができる。ファイルサーバは、符号化されたビデオデータを記憶すること、およびデスティネーションデバイス14にその符号化されたビデオデータを送信することができるいずれかのタイプのサーバであり得る。ファイルサーバの例は、(例えば、ウェブサイトに関する)ウェブサーバ、ファイルトランスファープロトコル(FTP)サーバ、ネットワーク接続ストレージ(NAS)デバイス、またはローカルディスクドライブを含む。
【0029】
[0035]デスティネーションデバイス14は、インターネット接続を含む、いずれかの規格データ接続を通じて符号化されたビデオデータにアクセスすることができる。データ接続の実例となるタイプは、ファイルサーバに記憶されている符号化されたビデオデータにアクセスするのに適している、ワイヤレスチャネル(例えば、Wi−Fi接続)、有線接続(例えば、DSL、ケーブルモデム等)、またはその両方の組み合わせを含むことができる。ストレージデバイス33からの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはその両方の組み合わせであり得る。
【0030】
[0036]統合されたイントラブロックコピーおよびインター予測に関する本開示の技術は、必ずしもワイヤレスアプリケーションまたはセッティングに限定されない。技術は、無線テレビ放送、ケーブルテレビ送信、衛星テレビ送信、例えばインターネットを介した、ストリーミングビデオ送信、データ記憶媒体上での記憶に関するデジタルビデオの符号化、データ記憶媒体上に記憶されたデジタルビデオの復号、または他のアプリケーションのような様々なマルチメディアアプリケーションのいずれかをサポートする、ビデオコーディングに適用されることができる。いくつかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオ電話のようなアプリケーションをサポートするために、一方向または二方向ビデオ送信をサポートするように構成される。
【0031】
[0037]
図1に図示されたビデオコーディングシステム10は、単なる例であり、本開示の技術は、符号化デバイスと復号デバイスとの間のいかなるデータ通信をも必ずしも含むわけではないビデオコーディングセッティング(例えば、ビデオ符号化またはビデオ復号)に適用することができる。他の例では、データは、ローカルメモリから検索される、ネットワークをわたってストリーミングされる等、が行われる。ビデオ符号化デバイスは、データを符号化し、メモリに記憶することができ、および/またはビデオ復号デバイスは、メモリからデータを検索し、復号することができる。多くの例において、符号化および復号は、互いに通信しないけれども単に、メモリにデータを符号化し、および/またはメモリからデータを検索し、復号するデバイスによって行われる。
【0032】
[0038]
図1の例では、ソースデバイス12は、ビデオソース18、ビデオエンコーダ20、および出力インターフェース22を含む。いくつかの例では、出力インターフェース22は、変調器/復調器(モデム)および/または送信機を含む。ビデオソース18は、例えば、ビデオカメラ、以前にキャプチャされたビデオを含むビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェース、および/またはソースビデオとしてコンピュータグラフィックスデータを生成するためのコンピュータグラフィックスシステム、またはそのようなソースの組み合わせといった、ビデオキャプチャデバイスのようなソースを含みうる。一例として、ビデオソース18がビデオカメラである場合、ソースデバイス12およびデスティネーションデバイス14は、いわゆるカメラ付電話、またはビデオ電話を形成する。しかしながら、本開示で説明された技術は、一般にビデオコーディングに適用可能であり、ワイヤレスおよび/または有線アプリケーションに適用されうる。
【0033】
[0039]キャプチャされた、キャプチャされる前の、またはコンピュータにより生成されたビデオは、ビデオエンコーダ20によって符号化されることができる。符号化されたビデオデータは、ソースデバイス12の出力インターフェース22を介して、デスティネーションデバイス14に直接送信されることができる。符号化されたビデオデータはまた(または代替として)、復号および/または再生のために、デスティネーションデバイス14または他のデバイスによる後のアクセスのためにストレージデバイス33上に記憶されることができる。
【0034】
[0040]デスティネーションデバイス14は、入力インターフェース28、ビデオデコーダ30、およびディスプレイデバイス32を含む。いくつかの例では、入力インターフェース28は、受信機および/またはモデムを含む。デスティネーションデバイス14の入力インターフェース28は、リンク16を介して符号化されたビデオデータを受信する。リンク16を介して通信された、またはストレージデバイス33上で提供された符号化されたビデオデータは、ビデオデータを復号する際に、ビデオデコーダ30のようなビデオデコーダによる使用のためにビデオエンコーダ20によって生成された様々なシンタックス要素を含むことができる。そのようなシンタックス要素は、通信媒体上に送信された、記憶媒体上に記憶された、またはファイルサーバに記憶された符号化されたビデオデータに含まれることができる。
【0035】
[0041]ディスプレイデバイス32は、デスティネーションデバイス14と一体化されることができるか、あるいはデスティネーションデバイス14の外部にあることができる。いくつかの例では、デスティネーションデバイス14は、一体化されたディスプレイデバイスを含み、また外部のディスプレイデバイスとインターフェースするように構成されることができる。他の例において、デスティネーションデバイス14は、ディスプレイデバイスでありうる。概して、ディスプレイデバイス32は、ユーザに復号されたビデオデータを表示し、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスのような、様々なディスプレイデバイスのいずれかを備えることができる。
【0036】
[0042]ビデオエンコーダ20およびビデオデコーダ30は各々、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSPs)、特定用途向け集積回路(ASICs)、フィールドプログラマブルゲートアレイ(FPGAs)、ディスクリートロジック、ハードウェア、またはそれらのいずれかの組み合わせのような、様々の適した回路のいずれかとしてインプリメントされることができる。技術が部分的にソフトウェアでインプリメントされる場合、デバイスは、適した非一時的コンピュータ可読記憶媒体にソフトウェアに関する命令を記憶することができ、本開示の技術を行うために、1つまたは複数のプロセッサを用いたハードウェアでその命令を実行することができる。(ハードウェア、ソフトウェア、ハードウェアとソフトウェアの組み合わせ、等を含む)前述のいずれも、1つまたは複数のプロセッサであると考慮されることができる。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダに含まれることができ、そのいずれもが、それぞれのデバイス内において組み合わされたエンコーダ/デコーダ(CODEC)の一部として一体化されることができる。
【0037】
[0043]ビデコエンコーダ20とビデオデコーダ30は、ビデオコーディングに関する共同作業チーム(Joint Collaborative Team on Video Coding) (JCT-VC)により開発された、HEVCレンジ拡張規格(HEVC Range Extension standard)、並びに、最近策定された高効率ビデオコーディング(High Efficiency Video Coding) (HEVC)のようなビデオコーディング規格に従って動作することができる。代替として、ビデオエンコーダ20およびビデオデコーダ30は、MPEG 4、Part 10、アドバンスドビデオコーディング(AVC)、またはそのような規格の延長として代わりに称される、ITU−T H.264規格のような、他の所有権または工業規格にしたがって動作することができる。しかしながら本開示の技術は、いずれの特定のコーディング規格にも限定されない。ビデオコーディング規格の他の例はMPEG−2とITUT H.263を含む。
【0038】
[0044]「HEVC Working Draft 10」または「WD10」と呼ばれるHEVC規格の最近のドラフトは、2013年1月14−23日にスイスのジュネーブで開催された第12回会合である、ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11のJoint Collaborative Team on Vide Coding (JCT-VC)における、Bross他著のドキュメントJCTVC-L1003v34である”High efficiency video coding (HEVC)テキスト仕様ドラフト10(FDIS & Last Callに関する)”に記載されており、2013年8月30日現在でそれは、
http://phenix.int-evry.fr/jct/doc_end_user/documents/12_Generava/wg11/JCTVC-L1003^v34.zipからダウンロード可能である。HEVC規格の他のドラフトは2013年4月に韓国のインチェン(Incheon)で開催されたITU-T SG 16 WP3 and ISO/IEC JTC1/SC29/WG11のJoint Collaborative Team on Video Coding (JCT-VC)のBross他著”Editors’ proposed corrections to HEVC version 1”において記載された”WD10 revisions”とここでは呼ばれる。2013年8月30日現在でそれは、
http://phenix.int-evry.fr/jct/doc_end_user/documents/12?incheon/wg11/JCTVC-M0432-v3.zipから入手可能である。
【0039】
[0045]他の最近のHEVC1テキスト仕様ドラフトは、HEVCドラフト仕様書に記載され、以下HEVC WDと呼ばれ、
http://phenix.int-evry.fr/jct/doc_end_user/documents/15_Geneva/wg11/JCTVC-O1003-v2.zip. Wang et al., “High Efficiency Video Coding (HEVC) Defect Report 4”, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-TSG16 WP3 and ISO/IEC JTC1/SC29/WG11, 17
th Meeting, Valencia, ES, 27 March-4 April 2014,から入手可能である。文献JCTVC-Q1003 (以下、”JCTVC-Q1003”)もHEVC規格を記載する。
【0040】
[0046]ビデオエンコーダおよびビデオデコーダ30は各々、本開示で記載された技術のいずれかの組み合わせを実行するように構成されたビデオコーダの一例を表す。いくつかの例において、ここに記載された1つまたは複数の技術は1つまたは複数のビデオコーディング規格に使用するように構成される。ビデオコーディング規格の例は、ITUT H.261、ISO/IECMPEG−1Visual、ITUT H.262またはISO/IECMPEG−2 Visual、ITUT H.263、ISO/IECMPEG−4Visual、およびそのスケーラブルビデオコーディング(SVC)およびマルチビュービデオコーディング(MVC)拡張を含むITUT H.264(ISO/IECMPEG−4 AVCとしても知られる)を含む。高効率ビデオコーディング(HEVC)は、ITU−Tビデオコーディング専門家グループ(VCEG)とISO/IEC動画専門家グループ(MPEG)のビデオコーディング(JCT−VC)に関するジョイントコラボレーションチームによって開発された新しいビデオコーディング規格である。HEVC標準化の努力はHEVCテストモデル(HM)と称されるビデオコーディングデバイスの進化しつつあるモデルに基づいている/いた。HMは、例えば、ITU−T H.264/AVCに従った既存のデバイスに対して、ビデオコード化デバイスのいくつかの追加の能力を仮定する。例えば、H.264は、9個のイントラ予測符号化モードを提供するのに対し、HMは、33個のイントラ予測符号化モードを提供し得る。
【0041】
[0047]
図1には示されていないけれども、いくつかの例において、ビデオエンコーダ20およびビデオデコーダ30は各々、オーディオエンコーダおよびデコーダと一体化され、共通のデータストリームまたは別個のデータストリームにおけるオーディオおよびビデオの両方の符号化を処理するために、適切なMUX−DEMUXユニットまたは他のハードウェアおよびソフトウェアを含むことができる。適用可能である場合、いくつかの例において、MUX−DEMUXユニットは、ITU.H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)のような他のプロトコルに適合する。
【0042】
[0048]本開示は概して、ビデオデコーダ30のような別のデバイスに、ある情報を「シグナリングする」または「送信する」ビデオエンコーダ20に言及する。「シグナリング」または「送信する」という用語は、概して、圧縮されたビデオデータを復号するために使用される、シンタックス要素および/または他のデータの通信に言及することができる。そのような通信は、リアルタイム、または準リアルタイム(near−real−time)で生じることができる。代わりに、そのような通信は、符号化時に符号化されたビットストリーム内のシンタックス要素をコンピュータ可読記憶媒体に記憶し、それがその後、この媒体に記憶された後のいずれかの時間において復号デバイスによって検索されることができる、ときに生じうるような、時間の期間にわたって生じることができる。
【0043】
[0049]ビデオシーケンスは典型的に、一連のビデオフレームまたはピクチャを含む。ピクチャのグループ(GOP)は一般的に、一連の1つまたは複数のビデオピクチャを備える。GOPは、GOPのヘッダ内、1つまたは複数のピクチャのヘッダ内、あるいはどこかに、GOPに含まれるピクチャの数を記載するシンタックスデータを含めることができる。ピクチャの各スライスは、それぞれのスライスに関する符号化モードを記述するスライスシンタックスデータを含み得る。ビデオエンコーダ20は典型的に、ビデオデータを符号化するために個々のビデオスライス内のビデオブロックに作用する。
【0044】
[0050]HEVCおよび他のビデオコーディング規格において、ビデオシーケンスは典型的に一連のピクチャを含む。ピクチャはまた「フレーム」とも呼ばれることができる。ピクチャはS
L、S
Cb、およびS
Crで示される3つのサンプルアレイを含むことができる。S
Lはルーマ(luma)サンプルの2次元アレイ(すなわちブロック)である。S
CbはCbクロミナンスサンプルの2次元アレイである。S
CrはCrクロミナンスサンプルの2次元アレイである。クロミナンスサンプルはまた、ここでは「クロマ」サンプルとも呼ばれることができる。他の例において、ピクチャはモノクロームであり得、ルーマサンプルのアレイのみ含むことができる。
【0045】
[0051]ピクチャの符号化された表示を生成するために、ビデオエンコーダ20はコーディングツリーユニット(CTUs)のセットを生成することができる。各それぞれのCTUはルーマサンプルのコーディングツリーブロックであり得、2つがクロマサンプルのコーディングツリーブロックに対応し、シンタックス構造はコーディングツリーブロックのサンプルをコード化するために使用される。モノクロームピクチャまたは3つの別個のカラープレーンを有するピクチャにおいて、CTUは単一のコーディングツリーブロックとコーディングツリーブロックのサンプルをコード化するために使用されるシンタックス構造を備えることができる。コーディングツリーブロックはサンプルのN×Nブロックであり得る。コーディングツリーブロックはサンプルのN×Nブロックであり得る。CTUは、また「ツリーブロック」または「最大コーディングユニット(LCU)」と呼ばれることができる。HEVCのCTUsはH.264/AVCのような他の規格のマクロブロックに広範囲に類似することができる。しかしながら、CTUは必ずしも特定のサイズに限定される必要はなく1つまたは複数のコーディングユニット(CUs)を含むことができる。ビットストリーム内のシンタックスデータはCTUsに関するサイズを定義することができる。
【0046】
[0052]HEVCにおいて、スライス内の最大コーディングユニットはコーディングツリーブロック(CTB)と呼ばれる。CTBは4分木を含み、そのノードがコーディングユニットである。CTBのサイズはHEVCメインプロファイル内の16×16から64×64のレンジであり得る(技術的には、8×8CTBサイズはサポートされることができるけれども)。各CUは1つのモードでコード化される。
【0047】
[0053]ビデオフレームまたはピクチャは1つまたは複数のスライスに分割されることができる。スライスはラスタスキャン順序のような、コーディング順序において連続的に順番づけされたCTUsの整数を含むことができる。
【0048】
[0054]各CTUは四分木にしたがって1つまたは複数のコーディングユニット(coding units)(CUs)に分割されることができる。一般に、四分木データ構造は、ルートノードがCTUに対応する状態でCUごとに1つのノードを含む。CUが4つのサブCUに分けられる場合、CUに対応するノードは4つのチャイルドノードを含み、そのそれぞれがサブCUのうちの1つに対応する。コーディングユニット(CU)はCTBの同じサイズであり得、8×8ほどの小さなサイズであり得る。
【0049】
[0055]四分木データ構造の各ノードは、対応するCUに関するシンタックスデータを提供することができる。例えば、四分木におけるノードは、ノードに対応するCUがサブCUに分けられるかどうかを示す、分割フラグ(split flag)を含むことができる。CUに関するシンタックス要素は再帰的に定義されることができ、CUがサブCUsに分けられるかどうかに依存することができる。CUがこれ以上分けられない場合、それはリーフCUと称される。
【0050】
[0056]ビデオエンコーダ20は、コーディングツリーブロックをコーディングブロックに分割するためにCTUのコーディングツリーブロックに4分木分割を再帰的に実行することができる、それゆえ「コーディングツリーユニット」という名前が付けられる。コーディングブロックは、サンプルのN×Nブロックである。いくつかの例において、CUは、コーディングブロックのサンプルをコード化するために使用されるシンタックス構造と、Crサンプルアレイと、Cbサンプルアレイと、ルーマサンプルアレイを有するピクチャのクロマサンプルの2つの対応するコーディングブロックを備える。モノクロームピクチャ、または3つの別個のカラープレーンを有するピクチャにおいて、CUは単一のコーディングブロックと、コーディングブロックのサンプルをコード化するために使用されるシンタックス構造を備えることができる。
【0051】
[0057]CUは、CUがサイズの区別を有さないことを除いて、H.264規格のマクロブロックと同様の目的を有する。CUが対応するサイズは、形状が正方形または方形であり得る。CUのサイズは、8x8画素から、64x64画素以上の最大値を有するツリーブロックのサイズまでの範囲に及び得る。ツリーブロックは4つの子ノード(サブCUとも称される)に分けられることができ、各子ノードは、今度は親ノードになり、別の4つの子ノードに分けられ得る。四分木のリーフノードと称される最後の分けられない子ノードは、リーフCUとも称されるコード化ノードを備える。コード化されたビットストリームに関連付けられるシンタックスデータは、最大CU 深度(depth)と称される、ツリーブロックが分割され得る最大回数を定義することができ、またコード化ノードの最小サイズをも定義することができる。したがって、ビットストリームはまた、最小コード化単位(SCU)を定義することができる。本開示は、HEVCのコンテクストにおいて、1つまたは複数の予測ユニット(PUs)をさらに含むことができるCU,または変換ユニット(TUs)、あるいは他の規格のコンテクストにおいて類似のデータ構造(例えば、H.264/AVCのマクロブロックおよびサブブロック)のいずれかに言及するために「ブロック」という用語を用いる。
【0052】
[0058]CUは、1つ以上の予測単位(prediction units)(PUs)および1つ以上の変換単位(transform units)(TUs)を含み得る。CUと関連付けられるシンタックスデータは、例えば、1つまた複数のPUsへのCUの分割を記述し得る。区分化モードは、CUが符号化されたスキップあるいはダイレクトモード、符号化されたイントラ予測モード、または符号化されたインター予測モードであるかどうかによって異なり得る。CUはCUのPUsが非正方形の形状であるように分割されることができる。CUと関連付けられるシンタックスデータは、また、四分木にしたがって、例えば、1つまた複数のTUsへのCUの分割を記述し得る。
【0053】
[0059]したがって、CUがインターコード化されると、それはさらに2つの予測ユニット(PUs)に分割されることができるかまたはさらなる分割が適用されないとき1つのPUのみになる。2つのPUsが1つのCU内に存在するとき、PUsは、ハーフサイズの方形であり得るかまたは、一方がCUのサイズの1/4であり、他方がCUの3/4である2つの方形であり得る。HEVCにおいて、最小のPUサイズは8×4および4×8である。CUがインター符号化されると、動き情報の1つのセットはCUの各PUに関して存在する。さらに、各PUは動き情報のセットを導出するために固有のインター予測モードでコード化されることができる。
【0054】
[0060]ビデオエンコーダ20は、CUのコーディングブロックを1つまたは複数の予測ブロックに分割することができる。予測ブロックは同じ予測が適用されるサンプルの方形(すなわち、正方形または非正方形)ブロックであり得る。CUのPUは、ルーマサンプルの予測ブロック、ピクチャのクロマサンプルの2つの対応する予測ブロック、および予測ブロックサンプルを予測するために使用されるシンタックス構造を備えることができる。モノクロームピクチャあるいは3つの別個のカラープレーンを有するピクチャにおいて、PUは単一の予測ブロックと予測ブロックサンプルを予測するために使用されるシンタックス構造を備えることができる。
【0055】
[0061]一般に、PUは、対応するCUのすべてまたは一部に対応する空間的エリアを表し、PUに関する参照サンプルを検索するためのデータを含むことができる。さらにPUは、予測と関連するデータを含む。いくつかのサンプルにおいて、PUはイントラモードまたはインターモードを用いて符号化される。他の例として、PUがインターモード符号化されるとき、PUはPUに関する1つまたは複数の動きベクトルを定義するデータを含むことができる。PUに関する動きベクトルを定義するデータは、例えば、動きベクトルの水平コンポーネント、動きベクトルの垂直コンポーネント、動きベクトルに関する解像度(例えば、四分の一ピクセル精度または八分の一ピクセル精度)、動きベクトルが指し示す参照ピクチャ、および/または動きベクトルに関する参照ピクチャリスト(例えば、リスト0、リスト1、またはリストC)を記載することができる。
【0056】
[0062]一例として、HEVCは、様々なPUサイズ内において予測をサポートする。特定のCUのサイズが2N×2Nであると仮定すると、HEVCは、2N×2N、2N×N、N×2NまたはN×Nの対称PUサイズにおけるインター予測、および2N×2NまたはN×NのPUサイズにおけるイントラ予測をサポートする。HEVCはまた2N×nU、2N×nD、nL×2NおよびnR×2NのPUサイズにおけるインター予測に関する非対称分割をサポートする。非対称分割において、CUの1つの方向は分割されず、一方他の方向は25%および75%に分割される。25%分割に対応するCUの部分は「n」によって示され、その後に「上」、「下」、「左」または「右」の表示が続く。従って、例えば、「2N×nU」は、2N×0.5N PUを上部に、2N×1.5N PUを下部に水平に区分化される2N×2N CUを指す。
【0057】
[0063]本開示において、「N×N」および「N掛けるN」は、垂直および水平次元の観点からビデオブロックのピクセル次元、例えば、16×16ピクセル、もしくは16掛ける16ピクセルを指すために交換可能に使用されることができる。一般的に、16x16のブロックは垂直方向に16ピクセル(y=16)および水平方向に16ピクセル(x=16)有する。同じく、N×Nのブロックは一般的に、垂直方向にN個のピクセルおよび水平方向にN個のピクセルを有し、この場合、Nは非負整数の値を表す。ブロック内のピクセルは、行と列に配列され得る。その上、ブロックは、垂直方向中と、水平方向中とで同じピクセル数を必ずしも有する必要はない。例えば、ブロックはN×Mピクセルを備えることができ、この場合MはかならずしもNに等しい必要はない。変換ブロックは同じ変換が適用されるサンプルの方形ブロックであり得る。CUの変換ユニット(TU)は、ルーマサンプルの変換ブロック、クロマ(chroma)サンプルの2つの対応する変換ブロック、および変換ブロックサンプルを変換するために使用されるシンタックス構造を備えることができる。従って、CUの各TUはルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロックを有することができる。TUのルーマ変換ブロックはCUのルーマ残差ブロックのサブブロックであり得る。Cb変換ブロックはCUのCb残差ブロックのサブブロックであり得る。Cr変換ブロックはCUのCr残差ブロックのサブブロックであり得る。モノクロームピクチャまたは3つの別個のカラープレーンを有するピクチャにおいて、TUは単一の変換ブロックと、変換ブロックサンプルを変換するために使用されるシンタックス構造を備えることができる。TUは形状が正方形または非正方形(例えば、方形)であることができる。言い換えれば、TUに対応する変換ブロックは正方形または非正方形であり得る。
【0058】
[0064]HEVC標準は、異なるCUsに関して異なることができるTUsにしたがって変形を可能にする。TUsは、いつもこうであるとは限らないが、典型的に、分割されたLCUのために定義された所与のCU内のPUsのサイズに基づくサイズである。TUは典型的に、PUsと同じサイズか、あるいはそれより小さい。いくつかの例において、CUに対応する残差サンプルは、「残差四分木」(RQT)として知られる四分木構造を用いるより小さいユニットにサブ分割される。RQTのリーフノードは、TUs呼ばれることができる。TUsに関連付けられたピクセル差分値は、量子化され得る変換係数を生成するために変換されることができる。
【0059】
[0065]TUsは、上述したように、RQT(TU四分木構造とも称される)を用いて特定されることができる。例えば、分割フラグは、リーフCUが4つのTUsに分割されるかどうかを示し得る。次に、各TUはさらなるサブTUsにさらに分割されることができる。TUがこれ以上分割されない場合、それはリーフTUと称される。一般的に、イントラコード化に関して、リーフCUに属する全てのリーフTUsは、同じイントラ予測モードを共有する。すなわち、同じイントラ予測モードは一般的に、1つのリーフCUのすべてのTUsに関して予測された値を計算するために適用される。イントラコード化に関して、ビデオエンコーダ20は、TUに対応するCUの一部とオリジナルブロックの間の差分としてイントラ予測モードを用いて各リーフ−TUに関する残差値を計算することができる。TUは、PUのサイズに必ずしも限定されない。したがって、TUsは、PUよりも大きいか、あるいは小さくなり得る。イントラコード化に関して、PUは、同じCUに関して対応するリーフ−TUとコロケート(collocated)されることができる。いくつかの例において、リーフ−TUの最大サイズは対応するリーフ−CUのサイズに対応する。
【0060】
[0066]さらに、リーフ−CUsのTUsは、RQTsと称されるそれぞれの四分木データ構造とも関連付けられることができる。すなわち、リーフ−CUは、リーフ−CUがどのようにTUsに分割されたかを示す四分木を含み得る。TU四分木のルートノードは一般的に、リーフ−CUに対応し、一方CU四分木のルートノードは一般的に、ツリーブロックに対応する。一般的に、本開示は、特に断りの無い限り、それぞれリーフ−CUとリーフ−TUに言及するために、用語CUおよびTUを用いる。
【0061】
[0067]PUsとTUsは共にそのブロックに関連したカラースペースのチャネルの各々に対応するサンプルの1つまたは複数のブロックを含む(すなわち、対応する)ことができる。PUsのブロックは予測ブロックのサンプルを含むことができ、TUsのブロックは、オリジナルブロックと予測ブロックとの間の差分に対応する残差サンプルを含むブロックであり得る。YCbCrカラースペースに関連したブロックの場合、ルーマサンプルのブロックは「Y」チャネルに対応することができ、クロマブロックの2つの異なるチャネルはそれぞれCbチャネルおよびCrチャネルに対応することができる。CUのPUsを用いたイントラ予測またはインター予測コード化に続いて、ビデオエンコーダ20またはビデオデコーダ30はCUのTUsに関する残差デーtを計算することができる。PUsは、空間領域(ピクセル領域とも称される)内で予測ピクセルデータを生成する方法またはモードを記述するシンタックスデータを備え得、およびTUsは、例えばディスクリートコサイン変換(DCT)、整数変換、ウェイブレット変換、または残差ビデオデータへの概念上類似する変換などの変換の適用(application)に続いて、変換領域内に係数を備え得る。残差データは、符号化されないピクチャのピクセルとPUsに対応する予測値との間のピクセル差分に対応することができる。ビデオエンコーダ20またはビデオデコーダ30はCUに関する残差データを含むTUsを形成することができ、次にTUsを変換してCUに関する変換係数を生成することができる。いいかえれば、ビデオエンコーダ20は、TUに関する変換係数ブロックを生成するためにTUに関する変換ブロックに変換を適用することができる。ビデオデコーダ30はTUに関する変換ブロックを再構成するためにTUに関する変換係数ブロックに逆変換を適用することができる。
【0062】
[0068]変換係数を生成するために変換(もしあれば)の適用に続いて、ビデオエンコーダ20は変換係数の量子化を実行することができる。言い換えれば、ビデオエンコーダ20は変換係数ブロックの変換係数を量子化することができる。量子化は一般に、係数を表すために使用されるデータの量を出来る限り(possibly)減少させ、さらなる圧縮を提供するために変換係数が量子化されるプロセスを指す。量子化プロセスは、係数のいくつかまたはすべてに関連付けられたビット深度を低減することができる。例えば、n-ビット値は量子化の期間にmビット値に端数を切り捨てる(rounded down)ことができ、ここにおいて、nはmより大きい。逆量子化(すなわち、非量子化)は係数のいくつかまたはすべてのビット深度を増加させることができる。
【0063】
[0069]量子化に続いて、ビデオエンコーダ20は量子化された変換係数を含む2次元マトリックスから1次元ベクトルを生成する変換係数を走査し得る。走査は、アレイの前方に、より高いエネルギー(それ故により低い周波数)係数を設定し、およびアレイの後方に、より低いエネルギー(それ故により高い周波数)係数を設定するように設計され得る。いくつかの例において、ビデオエンコーダ20は、エントロピー符号化され得る直列に変換されたベクトルを生成するために量子化された変換係数を走査するために所定の走査順を利用する。その他の例において、ビデオエンコーダ20は適応走査を実行する。1次元ベクトルを形成するよう量子化された変換係数をスキャンした後、ビデオエンコーダ20は、例えば、コンテキスト適応バイナリ算術コーディング(CABAC)、コンテキスト適応可変長コーディング(CAVLC:context adaptive variable length coding)、コンテキスト適応二進演算コーディング(CABAC:context adaptive binary arithmetic coding)、シンタックスベースのコンテキスト適応二進演算コーディング(SBAC:syntax-based context-adaptive binary arithmetic coding)、確率間隔区分化エントロピー(PIPE:Probability Interval Partitioning Entropy)コーディングまたは別のエントロピー符号化方法にしたがって、1次元のベクトルをエントロピー符号化することができる。ビデオエンコーダ20はまた、ビデオデータを復号する際にビデオデコーダ30により使用するための符号化されたビデオデータに関連づけられたシンタックス要素をエントロピー符号化することができる。
【0064】
[0070]CABACを実行するために、ビデオエンコーダ20は送信されるべきシンボルに、コンテキストモデル内の1つのコンテキストを割り当てることができる。コンテキストは、例えば、シンボルの近隣値が非ゼロであるか否かに関連し得る。CAVLCを実行するために、ビデオエンコーダ20は、伝送されるべきシンボルに関する可変長符号を選択し得る。可変長コーディング(VLC)内のコードワードは、比較的より短いコードがより可能性のあるシンボルに対応する一方で、より長いコードがより可能性のないシンボルに対応するように構成されることができる。このようにして、VLCの使用は、例えば、送信されるべき各シンボルに関する等長コードワードを用いてビットセービングオーバ(a bit savings over)を達成することができる。確立の決定は、シンボルに割り当てられたコンテキストに基づくことができる。
【0065】
[0071]ビデオエンコーダ20は、さらに、例えばフレームヘッダ、ブロックヘッダ、スライスヘッダ、またはGOPヘッダ内の、ブロックベースのシンタックスデータ、フレームベースのシンタックスデータ、およびGOPベースのシンタックスデータのようなシンタックスデータをビデオデコーダ30にさらに送り得る。GOPシンタックスデータは、それぞれのGOP内のフレームの数を記述し得、およびフレームシンタックスデータは、対応のフレームを符号化するために用いられる符号化/予測モードを示すことができる。
【0066】
[0072]HEVC規格にしたがって、インター予測またはイントラ予測を使用すると、動き情報がビデオエンコーダ20またはビデオデコーダ30に利用可能である。各ブロックに関して、動き情報のセットが利用可能である。動き情報のセットは、前方および後方予測方向に関する動き情報を含むことができる。前方および後方予測方向という用語は、双方向予測モードに関連した2つの予測方向を示すことを意味する。「前方」および「後方」は必ずしも幾何学的意味を持たない。むしろ、「前方」および「後方」はカレントピクチャのピクチャリスト0(RefPicList0)およびリファレンスピクチャリスト1(RefPicList1)に対応する。1つのピクチャまたはスライスに関してただ1つの参照ピクチャが利用可能であるとき、RefPicList0のみが利用可能であり、1つのスライスの各ブロックの動き情報は常に前方である。
【0067】
[0073]各予測方向に関して、動き情報は参照インデックスおよび動きベクトルを含まなければならない。参照インデックスはリファレンスピクチャリスト内の特定のピクチャへのインデックスである。いくつかの例において、簡単のために、ビデオコーダは、動きが関連する参照インデックスを有すると仮定する。参照インデックスはカレントリファレンスピクチャリスト(RefPicList0またはRefPicList1)内のリファレンスピクチャを識別するために使用される。動きベクトルは水平および垂直成分を有する。CUがインターコード化されると、動き情報の1つのセットが各PUに関して存在する。ビデオコーダはそのPUに関する動き情報のセットを導出するためにPUに関連したインター予測モードを使用する。
【0068】
[0074]ピクチャオーダカウント(POC)はピクチャの表示順序を識別するためにビデオコーディング規格において広く使用されている。複数のコード化されたビデオシーケンスがビットストリーム内に存在すると、POCの同じ値を有するピクチャは、復号順番の観点において互いにより近い可能性がある。ピクチャのPOC値は典型的には、リファレンスピクチャリスト構成、HEVCにおけるようなリファレンスピクチャセットの導出、および動きベクトルスケーリングに使用される。
【0069】
[0075]HEVC規格において、予測ユニット(PU)に関して、それぞれ、2つのインター予測モード、マージ(それはスキップモード、マージモードの特別な場合を含む)、および進化した動きベクトル予測(AMVP)モードがある。AMVPまたはマージモードのいずれかにおいて、ビデオコーダは、複数の動きベクトル予測子の動きベクトル(MV)候補リストを維持する。いくつかの例において、MV候補リストはマージモードに関して5つまでの候補を含み、AMVPモードに関して2つのみの候補を含む。ビデオコーダは、動きベクトル(複数の場合もある)並びにMV候補リストから1つの候補を選択することによりマージモードを用いてPUをコード化するときに使用される参照インデックスを生成する。
【0070】
[0076]例えば、ビデオエンコーダ20がマージモードを用いてカレントPUの動き情報を知らせる(signal)と、ビデオエンコーダ20は1つまたは複数のマージ候補を含むマージ候補リストを生成することができる。マージ候補の各々は空間動きベクトル予測子または時間動きベクトル予測子(すなわち、TMVP)を指定する。空間動きベクトル予測子はカレントピクチャ内のPUであり得る(すなわち、カレントPUを含むピクチャ)。TMVPは時間リファレンスピクチャ内のPUであり得る(すなわちカレントピクチャとは異なるタイムインスタンスで生じるピクチャ)。TMVPの動き情報を指定するマージ候補は「時間マージ候補」と呼ばれることができる。
【0071】
[0077]マージ候補リストを生成した後、ビデオエンコーダ20はマージ候補のうちの1つを選択し、選択されたマージ候補の、マージ候補リスト内の位置を示すシンタックス要素をビットストリーム内に含めることができる。ビデオデコーダ30がカレントPUを復号すると、ビデオデコーダ30は同じマージ候補リストを生成する。さらに、ビデオデコーダ30はビットストリームからシンタックス要素を取得することができ、マージ候補リスト内の選択されたマージ候補を決定するためにシンタックス要素を使用することができる。次に、ビデオデコーダ30は選択されたマージ候補により示された動き情報をカレントPUの動き情報として使用することができる。従って、マージ候補は動き情報のセット、例えば、リファレンスピクチャリスト(リスト0およびリスト1)および対応する参照インデックスの両方に対応する動きベクトルを含むことができる。ビデオコーダがマージインデックスによりマージ候補を識別する場合、ビデオコーダはカレントブロックの予測に関する識別されたリファレンスピクチャを用いる。ビデオコーダはまたカレントブロックに関する関連した動きベクトルを決定する。
【0072】
[0078]AMVPモードは、ビデオエンコーダ20が候補リストを生成し候補リストから候補を選択するという点においてマージモードに類似する。AMVP候補リスト内の候補は動きベクトル予測子(MVP)候補と呼ばれることができる。AMVP候補リスト内の候補は空間動きベクトル予測子および/または時間動きベクトル予測子の動きベクトルを示す候補を含むことができる。ビデオエンコーダ20がAMVPモードを用いてカレントPUの動き情報をシグナルすると、ビデオエンコーダ20は候補リスト内の選択されたMVP候補の位置をシグナリングすることに加えて参照インデックスおよびカレントPUに関する動きベクトル差分(MVD)をシグナルすることができる。カレントPUに関するMVDはカレントPUの動きベクトルとAMVP候補リストから選択された候補の動きベクトルとの差分を示すことができる。単一予測(uni-prediction)において、ビデオエンコーダ20はカレントPUに関する1つのMVDと1つの参照インデックスをシグナルすることができる。双方予測(bi-prediction)において、ビデオエンコーダ20はカレントPUに関する2つの参照インデックスと2つのMVDsをシグナルすることができる。したがって、AMVPを用いて1つのブロックをコード化するとき、リスト0またはリスト1からの各潜在的な予測方向に関してビデオコーダはいくつかの例に従うMVPインデックスと共に各参照インデックスを明示的にシグナルする。AMVP候補は動きベクトルのみを含むので、MVPインデックスはMV候補リストへのインデックスである。AMVPモードにおいてビデオコーダはさらに予測された動きベクトルを精製(refine)する。
【0073】
[0079]さらに、カレントPUの動き情報がAMVPモードを用いてシグナルされると、ビデオエンコーダ30はビットストリームから、カレントPUに関するMVDと候補リストインデックスを取得することができる。ビデオデコーダ30は同じAMVP候補リストを生成することができ、AMVP候補リスト内の選択されたMVP候補の位置の表示に基づいて、選択された候補を決定することができる。ビデオデコーダ30は選択されたMVP候補により示される動きベクトルにMVDを加算することによりカレントPUの動きベクトルをリカバすることができる。すなわち、ビデオデコーダ30は、MVDおよび選択されたMVP候補により示される動きベクトルに少なくとも部分的に基づいてカレントPUの動きベクトルを決定することができる。ビデオデコーダ30は次にカレントPUに関する予測ブロック(predictive block)を生成するためにカレントPUの動きベクトルまたはリカバされた動きベクトルを使用することができる。
【0074】
[0080]従って、上述したように、ビデオコーダは同様に、同じ空間および時間隣接ブロックに基づいてAMVPモードとマージモードに関する候補を派生する。しかしながら、マージモードとAMVPモードは、マージ候補が動き情報のフルセットに対応するのに対してAMVP候補は特定の予測方向および参照インデックスに関する1つの動きベクトルのみを含む。両方のモードの候補は同様に同じ空間および時間隣接ブロックから派生される。
図2はマージモードおよびAMVPモードに関する空間動きベクトル候補を例示する概念図である。すなわち、
図2は、マージモードおよびAMVPモードに関する空間MV候補を図示する。
【0075】
[0081]ブロックから候補を生成する方法はマージモードおよびAMVPモードに関して異なるけれども、特定のPU(PU
0)に関して
図2に示される隣接ブロックから空間MV候補が派生される。例えば、マージモードにおいて、
図2に示されるように5つの可能な空間MV候補位置{a
0, a
1, b
0, b
1, b
2}がある。ビデオコーダは各MV候補位置に関して、その位置におけるMV候補が利用可能であるかどうかを決定する。一例として、候補は、そのロケーションにおけるブロックがまだ復号されていない場合、利用可能でない場合がある。ビデオコーダは、以下の順番{a
1, b
1, b
0, a
0, b
2}で利用可能なMV候補をチェックすることができる。
【0076】
[0082]AMVPモードにおいて、ビデオコーダは隣接ブロックを2つのグループに分割する:
図2に示されるブロックb
0, b
1およびb
2から構成される上側隣接グループと、ブロックa
0およびa
1から構成される左側グループ。左側隣接グループの場合、ビデオコーダはいくつかの例において以下の順番{a
0, a
1}に従って、ブロックの利用可能性をチェックする。上側隣接グループの場合、ビデオコーダはいくつかの例において以下の順番{b
0, b
1, b
2}に従って上側隣接グループの利用可能性をチェックする。各グループに関してシグナリングされた参照インデックスにより示されるピクチャと同じリファレンスピクチャを指す潜在候補はグループの最終候補を形成するためにビデオコーダにより選択される最も高い優先度を有する。同じリファレンスピクチャを指す動きベクトルを含む隣接ブロックは存在しないことはあり得る。この場合、シグナリングされたインデックスにより示されたピクチャと同じリファレンスピクチャを指す動きベクトルをビデオコーダが見つけることができない場合、ビデオコーダは第1の利用可能な候補を選択する。ビデオコーダは最終候補を形成するために第1の利用可能な候補をスケール(scale)する。この場合候補動きベクトルをスケーリングすることは時間距離差分を補償する。
【0077】
[0083]上述したように、PUまたはCUはサンプルのルーマブロック並びにサンプルの複数の対応するクロマブロックを有することができる。いくつかの例において、(クロマサブサンプリングと呼ばれる)各クロマサンプルに対応する複数のルーマサンプルが存在することができる。いくつかの例において、動きベクトルはカレントPU/CUのルーマコンポーネントに関して動きベクトルが導出される。そのような例において、動きベクトルがクロマ動き補償に使用される前に、動きベクトルが、クロマサンプリングフォーマットに基づいてスケールされる。したがって、動きベクトルを決定すると、ビデオコーダは最初にPUまたはCUに関するルーマ動きベクトルコンポーネントを導出する。ビデオコーダはクロマサブサンプリングフォーマットに基づいてクロマ動きベクトルを決定するためにルーマ動きベクトルをスケールすることができる。例えば、動きベクトルは、カレントピクチャが4:4:4フォーマット、4:2:2フォーマットあるいは4:2:0フォーマットを用いて符号化されるかどうかに依存して異なってスケールされることができる。
【0078】
[0084]さらに、HEVCにおいて、ビデオコーダはLCUを平行な動き推定領域(MERs)に分割することができる。LCUがMERの一部であるとき、ビデオコーダは、カレントPUと異なるMERsに属する隣接PUsのみがマージ/スキップMVPリスト構成プロセスに含まれることを可能にする。ビデオコーダはピクチャパラメータセット内のMERのサイズをシンタックス要素(例えば、”log2_parallel_merge_level_minus2”)としてシグナルする。
【0079】
[0085]MERサイズがN×Nサンプルより大きいとき、および最小の可能なCUサイズが2N×2Nサンプルに設定されるときのようないくつかの例において、MERは動き推定に関して空間的に隣接するブロックの利用可能性に影響を与えることができる。例えば、上述の場合、空間的に隣接するブロックがカレントPUと同じMER内にある場合、ビデオコーダは空間的に隣接するブロックが利用可能でないと考える。
【0080】
[0086](HEVC)レンジ拡張規格に含めるためのイントラブロックコピー(BC)技術に関する提案が最近採用された。
http://phenis.int-evry.fr/jct/doc_end_use/documents/17_Valencia/wg11/JCTVC-Q1005-v4.zip,から入手可能である、D. Flynn他、「高効率ビデオ符号化(HEVC)レンジ拡張テキスト仕様(High Efficiency Video Coding (HEVC) Range Extensions text specification):ドラフト7」, ITU−T SG 16 WP3およびISO/IECJTC1/SC 29/WG11のビデオ符号化に関する合同組織(JCT−VC)、第17回ミーティング、バレンシア、ES、2014年3月27日−4月4日、ドキュメント:JCTVC−Q1005(以下、「JCTVC−Q1005_v4」は、HEVCレンジ拡張のドラフトである。HEVCに対するレンジ拡張はまたJCT−VCにより開発されつつある。
【0081】
[0087]このドキュメントにおいて、JCTVC−Q1003におけるようなHEVC仕様テキストは「HEVCバージョン1」と呼ばれることができる。レンジ拡張仕様はHEVCのバージョン2になることができる。しかしながら、大規模な範囲において、提案された技術に関する限り、例えば、動きベクトル予測に関して、HEVCバージョン1とレンジ拡張仕様は技術的に類似している。それゆえ、HEVCバージョン1に対する変更への言及は、同じ変更がレンジ拡張仕様に適用されることができることを意味する。
【0082】
[0088]最近、動きを伴うグラフィックおよびテキストのようなスクリーンコンテンツ素材に関する新しいコーディングツールの研究が始まり、研究者達はスクリーンコンテンツに関するコード化効率を改善する技術を提案してきた。コード化効率における著しい改善は新規で専用のコード化ツールを用いてスクリーンコンテンツの特性を開発することにより取得されることができるので、提案に関する要請(a Call for Proposals)(CfP)が発行された。このCfPの使用事例や要件はMPEGドキュメントN14174に記載されている。第17回JCT−VC会議の期間中に、研究者達はSCCテストモデル(SCM)を確立した。
http://phenix.int-evry.fr/jct/doc_end_user/documents/18_Sapporo/wg11/JCTVC-R1005-v1.zip から入手可能なJoshi他著「高効率ビデオ符号化(HEVC)スクリーンコンテンツ符号化:ドラフト1」、ITU-T SG 16 WP3およびISO/IEC JTC 1/SC 29/WG 11、第18回会議、札幌、日本、2014年6月30日−7月9日、ドキュメントJCTVC−R1005(以下、「JCTVC−R1005」)はSCCの最近の作業草案(WD)である。
【0083】
[0089]遠隔デスクトップ、遠隔ゲーム、ワイヤレスディスプレイ、自動車用のインフォテインメント(automotive infotainment)、クラウドコンピューティング等のような多くのアプリケーションは日常の使用においてルーチン化されつつある。これらのアプリケーションにおけるビデオコンテンツは自然コンテンツ、テキスト、人工グラフィックス等の組み合わせから構成することができる。テキストおよび人工的グラフィックス領域では、(文字、アイコン、およびシンボルのような)繰り返されるパターンが度々存在する。イントラBCは、C. Pang他、「2−D MVsを用いた非RCE3イントラ動き補償(Non-RCE3 Intra Motion Compensation with 2-D MVs)」、ITU−T SG 16WP 3およびISO/IEC JTC 1・SC29・WG11のビデオ符号化に関する合同組織(JCT−VC)、第14回会議、AT、2013年7月25日−8月2日、ドキュメントJCTVC−N0256(以下、「JCTVC−N0256」)に記載されるように、テキストおおび人工グラフィックスを符号化する際の冗長度を除去可能にし、フレーム内コード化効率を改善する技術である。
【0084】
[0090]イントラBCはある種の空間冗長度を除去し、フレーム内コード化効率を改善することを可能にする技術である。イントラBC技術に関するさらなる詳細はJCTVC−N0256に見出すことができる。イントラブロックコピー(BC)イントラ予測モードはカレントスクリーンコンテンツコーディング(SCC)に含まれてきた。イントラBCの一例は
図3に示される、ここにおいて、カレントブロック(例えば、カレントCUまたはPU)はカレントピクチャまたはスライスのすでに復号されたブロックから予測される。予測信号はデブロッキング(de-blocking)およびサンプルアダプティブオフセット(SAO)を含む、ループ内フィルタリングなしに再構成されることができる。イントラBCでコード化されたルーマコンポーネントまたはクロマコンポーネントの場合、いくつかの例によれば、整数ブロック補償を用いてブロック補償が行われ、それゆえ、補間は必要ない。
【0085】
[0091]
図3は例示イントラブロックコピー技術を図示する概念図である。
図3の例において、カレントピクチャ103はカレントブロック102を含む。いくつかの例において、カレントブロック102はCUである。他の例において、カレントブロック102はPUである。更に、
図3はカレントピクチャ103内の予測ブロック104(すなわち、予測信号)を図示する。ビデオコーダはイントラBCモードに従ってカレントビデオブロック102を予測するために予測ブロック104を使用することができる。
【0086】
[0092]ビデオエンコーダ20はビデオデータの従前に再構成されたブロックのセットの中から予測ブロック104を決定する。
図3の例において、ピクチャ103内のサーチ領域108は従前に再構成されたビデオブロックのセットを含む。ビデオエンコーダ20は、サーチ領域108内の種々のビデオブロックに基づいてカレントブロック102を予測しコード化する相対的な効率性および精度の解析に基づいてサーチ領域108内のビデオブロックの中からカレントブロック102を予測するために予測ビデオブロック102を決定することができる。
【0087】
[0093]ビデオエンコーダ20はカレントビデオブロック102に対する予測ビデオブロック104のロケーションまたは変位を表す2次元オフセットベクトル106を決定する。この開示は、また「ブロックベクトル」としてイントラブロックコピー内で使用されるベクトルに言及することができる。オフセットベクトル106は水平変位コンポーネント112および垂直変位コンポーネント110を含み、それはそれぞれカレントブロック102に対する予測ブロック104の水平および垂直変位(horizontal and vertical displacement)を表す。ビデオエンコーダ20は、例えば、符号化されたビデオビットストリーム内の、水平変位コンポーネント112および垂直変位コンポーネント110を定義する、2次元オフセットベクトル106を識別または定義する1つまたは複数のシンタックス要素を含むことができる。ビデオデコーダ30はオフセットベクトル106を決定するために1つまたは複数のシンタックス要素を復号することができ、予測ブロック104を識別するために決定されたベクトルを使用することができる。
【0088】
[0094]カレントブロック102はCUまたはCUのPUであり得る。いくつかの例において、ビデオコーダ(例えば、ビデオエンコーダ20および/またはビデオデコーダ30)は、イントラBCに従って予測されるCUを多数のPUsに分割する。そのような例において、ビデオコーダは、CUのPUsの各々に関してそれぞれの(例えば、異なる)2次元オフセットベクトル106を決定することができる。例えば、ビデオコーダは2N×2NCUを2つの2N×N PUs、2つのN×2N PUs、または4つのN×N PUsに分割することができる。他の例として、ビデオコーダは2N×2N CUを((N/2)×N+(3N/2)×N) PUs、((3N/2)×N+(N/2)×N)PUs、(N×(N/2)+N×(3N/2))PUs、(N×(3N/2)+(N×(N/2)) PUs、4つの(N/2)×2N PUs、または4つの2N×(N/2) PUsに分割することができる。いくつかの例において、ビデオコーダは2N×2N PUを用いて2N×2N CUを予測する。
【0089】
[0095]イントラブロックBCモードを用いてブロックを符号化するとき、ビデオコーダは、ルーマコンポーネントとクロマコンポーネントの両方に関してオフセットベクトル106は整数ピクセル精度を有すると決定する。動きベクトルに関する整数ピクセル精度を用いることは予測ブロックを生成するためにリファレンスブロックの補間を回避する。ブロックベクトルは整数ピクセル精度を用いて予測されシグナルされる。JCTVC−R1005に従って、ビデオコーダは最初に各CTBの始めでブロックベクトル予測子を(-w, 0)に設定する。ここにおいて、「w」はCUの幅である。ブロックベクトル予測子を用いて、ビデオコーダは従前に符号化されたCUまたは、イントラBCモードを用いてコード化されたPUの値に基づいてカレントブロック102に関するブロックベクトルを予測しようと試みる。
【0090】
[0096]各イントラBC CUまたはPUがコード化された後、ビデオコーダはブロックベクトル予測子を更新する。CUまたはPUがイントラBCを用いてコード化されない場合、ビデオコーダはブロックベクトル予測子を変更しない。CUまたはPUに関するブロックベクトル予測子を決定した後、ビデオエンコーダ20はブロックベクトル差分を決定するため予測子と実際のブロックベクトルとの間の差分を決定する。ビデオエンコーダ20はHEVCの動きベクトル差分コード化方法を用いてブロックベクトル差分を符号化することができる。
【0091】
[0097]いくつかの例において、イントラBCはCUレベルとPUレベルの両方でイネーブルされる。PUレベルのイントラBCモードの場合、2N×NおよびN×2NのPU分割サイズはすべてのCUサイズに関してサポートされる。最小可能CUがN×Nのサンプルのサイズを有するとき、PU分割がサポートされる。
【0092】
[0098]したがって、ビデオコーダはイントラBCをインターモードのように取り扱う。さらに、Bin Li他「非SCCE1:イントラBCモードとインターモードの統合」、ITU-T SG 16 WP 3およびISO/IEC JTC 1/SC 29/WG 11のビデオ符号化に関する合同組織(JCT−VC)、第18回会議、札幌、日本、2014年6月30日−7月9日、ドキュメントJCTVC−R0100(以下、「JCTVC−R0100」)は、イントラBCモードとインターモードの統合のための技術を提案した。JCTVC−R0100の技術に従って、ビデオコーダはカレントピクチャをリファレンスピクチャリストに追加する。カレントピクチャがリファレンスピクチャリストにあるので、ビデオコーダは、ビデオコーダが時間リファレンスピクチャ(すなわち、カレントピクチャのPOC値とは異なるPOC値を有するリファレンスピクチャ)を使用するのと同じ方法でイントラBCに関するカレントピクチャをリファレンスピクチャとして使用することができる。JCTVC−R0100の技術に従って、ビデオコーダはカレントピクチャを、カレントピクチャを復号する前のロングタームリファレンスピクチャ(long-term reference picture)としてマーキングし、カレントピクチャを、カレントピクチャを復号した後のショートタームリファレンスピクチャとしてマーキングする。さらに、JCTVC−R0100の技術に従って、イントラBCモードがイネーブルになると、ビデオコーダはシンタックスパーシングプロセスおよびIスライスに関するPスライスの復号プロセスに従う。JCTVC−Q1003で定義されるように、Iスライスはイントラ予測のみを用いて復号されるスライスである。さらに、JCTVC−Q1003に定義されるようにイントラ予測は同じ復号されたスライスのデータエレメント(例えば、サンプル値)のみから導出される。JCTVC−Q1003で定義されるように、Pスライスは、各ブックのサンプル値を予測するために参照インデックスおよびせいぜい1つの動きベクトルを用いたインター予測またはイントラ予測を用いて復号されることができるスライスである。Bスライスは各ブロックのサンプル値を予測するために参照インデックスおよびせいぜい2つの動きベクトルを用いたインター予測またはイントラ予測を用いて復号されることができるスライスである。
【0093】
[0099]イントラBCモードがインター予測モードとして取り扱われるとき、AMVPまたはマージに関する時間動きベクトル予測導出、制限されたイントラ予測との相互作用、リファレンスリスト構成等にいくつかの問題が存在する。この開示の技術は、ビデオコーダがイントラBCモードをインター予測モードとして取り扱う場合にイントラBCとインター予測の統合を改良する。この場合、ビデオコーダはカレントピクチャをリファレンスリスト0(すなわち、リファレンスピクチャリスト0)に追加する。イントラBCモードはインター予測モードと類似するが、ビデオコーダは、カレントブロックに関連するリファレンスピクチャがカレントピクチャである(すなわち、リファレンスピクチャがカレントピクチャと同じPOC値を有する)かどうかをチェックすることによりブロックがイントラBCコード化対インターモードコード化であるかどうかを決定することができる。ブロックのリファレンスピクチャがカレントピクチャである場合に、ブロックはイントラBCモードのブロックである。さもなければ、カレントブロックは、インター予測モードを用いてコード化される。この開示の技術に従って種々の例がここに記載される。以下の例の各々は別個にあるいは共同して他の例の1つまたは複数に適用することができる。
【0094】
[0100]いくつかの例において、ビデオコーダ(例えば、ビデオエンコーダ20および/またはビデオデコーダ30)はカレントピクチャをリファレンスリスト0に加算し、ビデオコーダは、カレントピクチャの復号の前のロングタームとしてカレントリファレンスピクチャをマーキングする。この場合、ビデオコーダは、HEVC規格に記載された1/4ピクセル精度のような、サブピクセル精度または整数ピクセル精度を用いてイントラBCモードに関するブロックベクトルをコード化することができる。ビデオコーダがブロックに関する時間動きベクトル予測を使用し、ビデオコーダが整数ピクセル精度でイントラBCに関する動きベクトルをコード化すると、ビデオコーダは、整数ピクセル精度でイントラBCモード、AMVPモードまたはマージモードに関する動きベクトル予測子(TMVP)を使用することができる。ビデオコーダは、コロケートされたブロックが通常の(conventional)イントラブロックであるときは整数ピクセル精度で、またはコロケートされたブロックが通常のインターブロックであるときはサブピクセル精度でTMVPを用いることができる。
【0095】
[0101]いくつかの例において、ビデオコーダは、TMVPがサブピクセル精度を有すると決定することができる。この場合、ビデオコーダは最初に動きベクトルを右シフトし、次に、結果として得られた右シフトされた動きベクトルをTMVPとして使用する。例えば、ビデオコーダは、TMVPの小数部分を表す任意のビット(例えば、2つの最下位ビット)が消去され、結果としてTMVPが整数レベルの精度を有するようにTMVPのバイナリ値を右シフトすることができる。言い換えれば、ビデオコーダはTMVPがサブピクセル精度を有すると決定することができ、サブピクセル精度を有すると決定されたTMVPを右シフトすることができる。この例では、TMVPを右シフトすることはTMVPをサブピクセル精度から整数ピクセル精度に変換し、それによりTMVPをカレントブロックのBCモードコード化のために使用可能にまたは有効利用させる。他の例において、ビデオコーダは、動きベクトル精度が整数精度であるかサブピクセル精度であるかにかかわらず、動きベクトルを右シフトすることなくTMVP動きベクトルを使用することができる。いかなる右シフトを行うことなくTMVP動きベクトルを使用することにより、ビデオコーダはサブピクセル精度動きベクトルを整数ピクセル精度を有する動きベクトルとして解釈する。
【0096】
[0102]したがって、ビデオコーダがTMVPを右シフトすることを包含する符号化プロセスを実行するこの開示の例では、ビデオコーダはカレントピクチャと異なるリファレンスピクチャのビデオデータのコロケートされたブロックを決定する。さらに、そのような例では、ビデオコーダはビデオデータのコロケートされたブロックからTMVPを導出することができる。ビデオコーダはイントラブロックコピーモードおよび右シフトされた時間動きベクトル予測子を用いてカレントピクチャのビデオデータのカレントブロックをコード化することができる。このコード化プロセスの一部として、ビデオコーダはビデオデータのコロケートされたブロックが符号化されたイントラBCモードまたは符号化されたインター予測モードであるかどかを決定することができる。イントラBCモードを用いてコード化されたビデオブロックは整数ピクセル精度動きベクトルを有し、整数精度を用いてコード化されたビデオブロックはサブピクセル精度動きベクトルを有するので、ビデオコーダは、ビデオブロックがイントラBCモードまたはインター予測モードを用いて符号化されたかどうかに基づいて、TMVPがサブピクセル精度または整数ピクセル精度を有するかどうかを決定することができる。したがって、ビデオコーダは、ビデオデータのコロケートされたブロックが符号化された整数精度モードであると決定することに応答する場合にのみTMVPを右シフトするように構成されることができる。
【0097】
[0103]いくつかの例において、ビデオエンコーダ20および/またはビデオデコーダ30は時間動きベクトル予測子が整数ピクセル精度またはサブピクセル精度を有するかどうかを決定することができる。サブピクセル精度はまた分数ピクセル精度または非整数ピクセル精度と呼ばれることが出来る。ビデオエンコーダ20および/ビデオデコーダ30は時間動きベクトル予測子がサブピクセル精度を有すると決定することに応答する場合にのみ時間動きベクトル予測子を右シフトするように構成されることができる。
【0098】
[0104]上述したように、ビデオコーダはTMVPをサブピクセル精度を有することから整数ピクセル精度を有することへ変換するためにTMVPを右シフトすることができる。例えば、ビデオコーダはサブピクセル精度を除去するためにTMVPを右シフトすることができ、それによりTMVPのピクセル精度をサブピクセル精度から整数ピクセル精度へ変換する。例えば、TMVPは、動きベクトルがカレントブロックの上3.5ピクセル、右3.25ピクセルのロケーションを示すことを意味する、水平および垂直コンポーネントに関する値(3.25, -3.5)を最初に有することができる。この例において、サブピクセル精度を除去するために右シフトすることは、動きベクトルがカレントブロックの上3ピクセルおよび右3ピクセルのロケーションを示すことを意味する、TMVPが水平および垂直コンポーネントに関して(3、−3)の値を有する結果となる。整数レベルの精度を有する時間動きベクトル予測子を変換することにより、予測ブロックを生成するためのリファレンスブロックの補間は回避されることができる。
【0099】
[0105]他の例として、ビデオデコーダ30はカレントピクチャのビデオデータのイントラブロックコピーモード符号化ブロックを受信するように構成されることができる。ビデオデコーダ30はカレントピクチャと異なるリファレンスピクチャのビデオデータのコロケートされたブロックを決定することができる。ビデオデコーダ30はビデオデータのコロケートされたブロックから時間動きベクトル予測子を導出することができる。ビデオデコーダ30はTMVPを右シフトすることができる。ビデオデコーダ30は右シフトされたTMVPに基づいてカレントピクチャ内の予測ブロックを決定することができる。ビデオデコーダ30は右シフトされた時間動きベクトル予測子を用いてカレントピクチャのビデオデータのブロックを復号することができる。
【0100】
[0106]他の例として、ビデオデコーダ30はカレントピクチャとリファレンスピクチャをリファレンスピクチャリストに含めることができ、リファレンスピクチャはカレントピクチャと異なる。さらに、この例では、ビデオデコーダ30はリファレンスピクチャのコロケートされたブロックを決定する。コロケートされたブロックはカレントピクチャのカレントブロックとコロケートされる。ビデオデコーダ30はコロケートされたブロックから時間動きベクトル予測子を導出することができる。例えば、ビデオデコーダ30はTMVPが(-5.25, 4.00)に等しいと決定することができ、その値は、例えば、バイナリ表示の2つの最下位ビットに対応するサブピクセル精度値を有するバイナリ表示により識別される。ビデオデコーダ30はTMVPがサブピクセル精度を有すると決定するように構成されることができる。いくつかの例において、ビデオデコーダ30は、ビデオデータのコロケートされたブロックが符号化されたイントラブロックコピーモードであるかあるいは符号化されたインター予測モードであるかを決定することによりTMVPがサブピクセル精度を有すると決定する。ビデオデータのコロケートされたブロックが符号化されたインター予測モードであるという決定は、ビデオデータのコロケートされたブロックがサブピクセル精度(例えば、非整数精度または分数精度)を有することを意味することができる。
【0101】
[0107]この例において、TMVPがサブピクセル精度を有するとの決定に応答して、ビデオデコーダ30はTMVPを右シフトする。いくつかの例において、ビデオデコーダ30は、コロケートされたブロックが符号化されたインター予測モードであると決定する場合にのみTMVPを右シフトする。ビデオデコーダ30は右シフトされたTMVPに基づいて、カレントピクチャ内の予測ブロックを決定するように構成されることができる。例えば、
図3の例において、ビデオデコーダ30は予測信号104を決定するために右シフトされたTMVPを使用することができる。ビデオデコーダ30は右シフトされた時間動きベクトル予測子に基づいて決定された予測ブロックに基づいて残差データを生成することができる。
【0102】
[0108]他の例として、ビデオエンコーダ20はリファレンスピクチャがカレントピクチャと異なる状態でカレントピクチャとリファレンスピクチャをリファレンスピクチャリストに含むように構成されることができる。ビデオエンコーダ20はビデオデータのリファレンスピクチャのコロケートされたブロックを決定するように構成されることができる。コロケートされたブロックはカレントピクチャのカレントブロックとコロケートされ、リファレンスピクチャはカレントピクチャと異なる。ビデオエンコーダ20はコロケートされたブロックから時間動きベクトル予測子を導出するように構成されることができる。ビデオエンコーダ20は、時間動きベクトル予測子がサブピクセル精度を有すると決定するように構成されることができる。例えば、ビデオエンコーダ20はビデオデータのコロケートされたブロックが符号化されたイントラブロックコピーモードまたは符号化されたインター予測モードであるかを決定するように構成されることにより、時間動きベクトル予測子が、サブピクセル精度を有すると決定するように構成されることができる。ビデオデータのコロケートされたブロックが符号化されたインター予測モードであるとの決定は、ビデオデータのコロケートされたブロックがサブピクセル精度(例えば、非整数精度または分数精度)を有することを意味することができる。
【0103】
[0109]ビデオエンコーダ20はサブピクセル精度を有すると決定された時間動きベクトル予測子を右シフトするように構成されることができる。いくつかの例において、ビデオエンコーダ20は、コロケートされたブロックが符号化されたインター予測モードであると決定された場合にのみ時間動きベクトル予測子を右シフトするように構成されることができる。ビデオエンコーダ20は右シフトされた時間動きベクトル予測子に基づいて、カレントピクチャ内の予測ブロックを決定するように構成されることができる。ビデオエンコーダ20は予測ブロックに基づいて残差データを生成するように構成されることができる。
【0104】
[0110]さらに、この開示のいくつかの例において、Iスライスの場合、ビデオコーダはinitType値を導出する。initType値はコンテキストタイプを示し、それは、ビデオコーダがどのようにシンタックス要素がCABACコード化されるかを決定するために使用される。initType値はinitTypeの値に依存することができ、さらに、cabac_init_flagシンタックス要素に依存することができる。JCTVC−Q1003で定義されるように、cabac_init_flagシンタックス要素はコンテキスト変数に関する初期化処理に使用される初期化テーブルを決定するための方法を特定する。ビデオコーダは、CABACコンテキストを示すことができるctxIdx値の値を決定するためにinitType値を使用することができる。この開示の技術に従う1つの例において、initTypeの導出は以下の疑似コードで以下のように変更される:
if( slice_type = = I && !intra_block_copy_enabled_flag )
initType = 0
else if (slice_type = = I && intra_block_copy_enabled_flag )
initType = cabac_init_flag ?2 :1
else if( slice_type = = P )
initType = cabac_init_flag ?2 :1
else
initType = cabac_init_flag ?1 :2
コードセクション1:initType導出
セクション1の先行コードはJCTVC−Q1003のセクション9.3.2.2を変更する。下線が引かれたテキストはJCTVC−Q1003に追加されたテキストを示す。JCTVC−Q1003に定義されるように、スライスタイプシンタックス要素はスライスに関するコード化タイプを示す。例えば、スライスタイプシンタックス要素はスライスがIスライスか、Pスライスか、またはBスライスかを示す。さらに、JCTVC−R1005に定義されるように、intra_block_copy_enabled_flagはシーケンスパラメータセット内のシンタックス要素である。Inntra_bock_copy_enabled_flagはシーケンスパラメータセットがアクティブであるコード化ビデオシーケンス内のスライスに関してイントラBCがイネーブルされるかどうかを示す。したがって、コードセクション1の例において、initType変数は、イントラBCがIスライスに対してイネーブルされるかどうかに依存してIスライスを符号化するとき異なる値を有する。
【0105】
[0111]他の例において、ビデオコーダは、コードセクション1に従って、イントラBCを使用せず、Iスライスに関してビットストリーム内に存在しないCABAC符号シンタックス要素に使用されるinitType値を決定する。言い換えれば、一般的なIスライスに関して存在しない、すなわちイントラBCを伴わないシンタックス要素に関してのみ、対応する変数initTypeはコードセクション1におけるように導出される。他のシンタックス要素の場合、ビデオコーダはinitTypeの値は0に設定することができる。
【0106】
[0112]他の例において、イントラBCがCUまたはPUに関してイネーブルされるとき、ビデオコーダはイントラモードとインター予測モードの両方をIスライス内で可能にすることができる。それゆえ、ビデオデコーダ30はイントラ予測を用いてピクチャのIスライスの第1のブロックを復号することができ、イントラBCモードを用いてIスライスの第2のブロックを復号することができる。同様に、ビデオエンコーダ20はイントラ予測を用いてピクチャのIスライスの第1のブロックを符号化することができ、イントラBCモードを用いてIスライスの第2のブロックを符号化することができる。以下のの手順例はこの可能性を示す:
When pred_mode_flag が存在しないとき、ビデオコーダは、x=x0...x0+nCbS−1およびy=y0…y0+nCbS-1の場合に以下のように変数CuPredMode[s][y]を導出する。
−slice_typeがIに等しく、
intra_block_copy_enalbed_flagが0に等しい場合、CuPredModel[x][y]はMODE_INTRAに等しいと推測される。
コードセクション2:CUPredModeの変更
先行する疑似コードはJCTVC−Q1003のセクション7.4.9.5を変更する。下線が引かれたテキストはJCTVC−Q1003に追加されたテキストである。JCTVC−Q1003に定義されるように、pred_mode_flagはCUに関する予測モード(例えば、インター予測(MODE_INTER)またはイントラ予測(MODE_INTRA))を示すシンタックス要素である。CUsの予測モードはある環境において推測されることができるので、ビデオコーダは、単にpred_mode_flagの値に依存するよりもむしろ、ピクセルのロケーションに基づいてインデックスされたアレイ変数CuPredModeに予測モードをロードする。従って、コードセクション2では、CuPredMode[x][y]はピクチャ内のロケーション(x, y)におけるCUの予測モードを示す。nBbsはCUのコード化ブロックのサイズを示す。それゆえ、コードセクション2の例では、CUがIスライスでイントラBCがIスライスに関してイネーブルされるときビデオコーダはCupredMode[x][y]の値を推定することができる(すなわち、ロケーション(x, y)におけるCUの予測モードがMODE_INTRAである)。それゆえ、ビデオエンコーダ20がCUに関するpred_mode_flagシンタックス要素をシグナルする必要がない。これは、符号化されたビデオデータのビットレートを低減することができる。
【0107】
[0113]ビデオコーダがこの開示の統合された技術を用いたインター予測としてイントラBCを取り扱う他の例として、イントラBCコード化ブロックはAMVPに関する同じ候補リストを共有することができ、またはインターコード化されたブロックとモードをマージすることができる。この例において、候補リストはイントラBCコード化ブロックとインターコード化ブロックの両方を含むことができる。それゆえ、ビデオエンコーダ20および/またはビデオデコーダ30は、イントラブロックコピーモードに関する少なくとも1つの動きベクトル候補と、インター予測モード符号化ブロックに関する少なくとも1つの候補を含む動きベクトル候補リストを生成することができる。いくつかの例においてイントラBCブロックはAMVPに関する別箇の候補リストを有することができるか、またはインターコード化ブロックからマージすることができる。予測モードは同じであるが、ビデオコーダは、カレントブロックに関するリファレンスピクチャがカレントピクチャであるかどうかをチェックすることによりイントラBCコード化ブロックを一般的なインターブロックと異ならせることができる。
【0108】
[0114]さらに、この開示の特別な技術はまた、リファレンスリスト構成プロセスを変更することにより統合されたイントラBCおよびインターモードを強化することができる。以下の言語おおび疑似コードは、JCTVC−Q1003のセクション8.3.4のリファレンスピクチャリスト構成に関する復号プロセスを変更する。下線が引かれたテキストはJCTVC−Q1003に追加されたテキストを示す。
このプロセスは各PまたはBスライス、または
intra_block_copy_enabled_flagが1に等しいときIスライスに関する復号プロセスの開始で起動される。
リファレンスピクチャは節8.5.3.3.2(
リファレンスピクチャ選択プロセス)で規定される参照インデックスを介してアドレスされる。参照インデックスはリファレンスピクチャリストへのインデックスである。Pスライスを復号するとき、単一のリファレンスピクチャリストRefPicList0がある。Bスライスを復号するとき、RefPicList0に加えて第2の独立したリファレンスピクチャリストRefPicList1がある。
【0109】
[0115]従って、先行する言語は、イントラBCモードがIスライスに関してイネーブルされると、リファレンスピクチャプロセスの変更を可能にするように働く。それゆえ、この例において、ビデオエンコーダ20はイントラBCがIスライスに関してイネーブルされると、ピクチャのIスライスに関するリファレンスピクチャリストを構築することができる。リファレンスピクチャリストはピクチャを含む。同様の例において、ビデオデコーダ30はイントラBCがピクチャに関してイネーブルされるかどうかを示すシンタックス要素(例えば、intra_block_copy_enabled_flag)をビットストリームから取得することができる。この例では、シンタックス要素に基づいて、イントラBCがピクチャに関してイネーブルされると決定することに応答して、ビデオデコーダ30はピクチャを含むリファレンスピクチャリストを構築することができる。
【0110】
[0116]一例において、intra_block_copy_enabled_flagが1に等しい状態でIスライスを復号するとき、ビデオデコーダ30は1つのリファレンスピクチャリストのみを使用すればよい。他の例において、intra_block_copy_enabled_flagが1に等しい状態でIスライスを復号するとき、RefPicList0に加えて第2の独立したリファレンスピクチャリストRefPicList1があってもよい。
【0111】
[0117]いくつかの例において、各スライスに関する復号プロセスの初めで、リファレンスピクチャリストRefPicList0およびBスライスの場合、RefPicList1は、下線が引かれた箇所がJCTVC−Q1003に追加されたテキストを示す以下の疑似コードに従って導出される。
incrementRef = (intra_block_copy_enabled_flag)?1 :0
変数NumRpsCurrTempList0はMax( num_ref_idx_l0_active_minus1 + 1, NumPocTotalCurr) + incrementRefに等しく設定され、リストRefPicListTemp0は以下のように構築される。
rIdx = 0
while( rIdx < NumRpsCurrTempList0 ) {
for( i = 0; i < NumPocStCurrBefore && rIdx < NumRpsCurrTempList0; rIdx++, i++ )
RefPicListTemp0[ rIdx ] = RefPicSetStCurrBefore[ i ]
for( i = 0; i < NumPocStCurrAfter && rIdx < NumRpsCurrTempList0; rIdx++, i++ ) (8 8)
RefPicListTemp0[ rIdx ] = RefPicSetStCurrAfter[ i ]
for( i = 0; i < NumPocLtCurr && rIdx < NumRpsCurrTempList0; rIdx++, i++ )
RefPicListTemp0[ rIdx ] = RefPicSetLtCurr[ i ]
if (incrementRef)
RefPicListTemp0[ rIdx ] = currPic (8-8)
}
コードセクション3:RefPicList0の変更
[0118]従って先行する手続は、RefPicListTemp0[rIdx]がカレントピクチャに等しく、この場合、RIdxがRefPicListTemp0アレイ内の最後のインデックスにおいて最大インデックスであるように、RefPicListTemp0変数を変更する。いくつかの例において、ビデオコーダはRefPicListTemp0の始めでまたはロングタームリファレンスピクチャの前にカレントピクチャを追加する。いくつかの例において、ビデオコーダはslice_typeパラメータに基づいてRefPicListEmp0にカレントピクチャを追加する。したがって、これらの例において、ビデオコーダは、スライスがIスライス、Pスライス、またはBスライスかどうかに基づいてリファレンスピクチャリスト内のロケーションのカレントピクチャをリファレンスピクチャリストに含めることができるかまたは、第2のリファレンスピクチャリスト内のロングタームピクチャの前にカレントピクチャをリファレンスピクチャリストに含めることができる。より小さな値の参照インデックスはより少ないビットで表すことができるので、より頻繁に使用されるリファレンスピクチャはより小さな値の参照インデックスを有することが望ましい。従って、リファレンスピクチャリスト内の他のリファレンスピクチャに比べてリファレンスピクチャリスト内のより若いロケーションにカレントピクチャを含めることは、他のリファレンスピクチャよりもより頻繁にイントラBCでカレントピクチャが使用されるであろうという仮定を反映する。
【0112】
[0119]例えば、他の例として、Iスライスの場合、ビデオコーダはRefPicListTemp0の始めで、およびPまたはBスライスの場合には、ロングタームリファレンスピクチャの終わりでRefPicListTemp0にカレントピクチャを追加する。以下の疑似コードはこの例を示し、下線が引かれたテキストはJCTVC−Q1003に追加されたテキストを示す。
while( rIdx < NumRpsCurrTempList0 ) {
if (incrementRef && Slice_type==I_Slice)
RefPicListTemp0[ rIdx ] = currPic
for( i = 0; i < NumPocStCurrBefore && rIdx < NumRpsCurrTempList0; rIdx++, i++ )
RefPicListTemp0[ rIdx ] = RefPicSetStCurrBefore[ i ]
for( i = 0; i < NumPocStCurrAfter && rIdx < NumRpsCurrTempList0; rIdx++, i++ ) (8-8)
RefPicListTemp0[ rIdx ] = RefPicSetStCurrAfter[ i ]
for( i = 0; i < NumPocLtCurr && rIdx < NumRpsCurrTempList0; rIdx++, i++ )
RefPicListTemp0[ rIdx ] = RefPicSetLtCurr[ i ]
if (incrementRef && (slice_type==P_Slice || slice_type==B_Slice))
RefPicListTemp0[ rIdx ] = currPic
コードセクション4:リファレンスピクチャリスト構成の変更
[0120]他の例として、Iスライスの場合、ビデオコーダは始めにカレントピクチャをReficListTemp0に追加し、PスライスまたはBスライスの場合には、ロングタームリファレンスピクチャの前にカレントピクチャを追加する。他の例として、カレントピクチャをRefPicListTemp0に追加するロケーションはカレントピクチャのスライスタイプに基づく。
【0113】
[0121]いくつかの例において、ビデオコーダは、下線が引かれたテキストがJCTVC−Q1003への追加されたテキストを示す以下の疑似コードに従ってRefPicListTemp0に基づいてRefPilList0を構築する。
リストRefPicList0は以下のように構成される。
for( rIdx = 0; rIdx <= num_ref_idx_l0_active_minus1; rIdx++)
RefPicList0[ rIdx ] = ref_pic_list_modification_flag_l0 ?
RefPicListTemp0[ list_entry_l0[ rIdx ] ] :RefPicListTemp0[ rIdx ] (8-9)
スライスがBスライスであるとき、変数 NumRpsCurrTempList1は、Max( num_ref_idx_l1_active_minus1 + 1, NumPocTotalCurr )
+ incrementRef に等しく設定され、リストRefPicListTemp1は以下のように構成される。
rIdx = 0
while( rIdx < NumRpsCurrTempList1 ) {
for( i = 0; i < NumPocStCurrAfter && rIdx < NumRpsCurrTempList1; rIdx++, i++ )
RefPicListTemp1[ rIdx ] = RefPicSetStCurrAfter[ i ]
for( i = 0; i < NumPocStCurrBefore && rIdx < NumRpsCurrTempList1; rIdx++, i++ ) (8 10)
RefPicListTemp1[ rIdx ] = RefPicSetStCurrBefore[ i ]
for( i = 0; i < NumPocLtCurr && rIdx < NumRpsCurrTempList1; rIdx++, i++ )
RefPicListTemp1[ rIdx ] = RefPicSetLtCurr[ i ]
(8-10)
if (incrementRef)
RefPicListTemp1 [ rIdx ] = currPic
}
[0122]いくつかの例において、RefPicListTemp1に関する上述のプロセスと同様に、ビデオコーダは、下線が引かれたテキストがJCTVC−Q1003への追加されたテキストを示す、JCTVC−Q1003、セクション8.3.4の標準言語および以下の疑似コードにしたがって、カレントピクチャのスライスタイプに基づいてカレントピクチャをRefPicListTemp1に追加することができる。
スライスがBスライスであると、リストRefPicList1は以下のように構成される。
for( rIdx = 0; rIdx <= num_ref_idx_l1_active_minus1; rIdx++) (8-11)
RefPicList1[ rIdx ] = ref_pic_list_modification_flag_l1 ?
(8-11)
RefPicListTemp1[ list_entry_l1[ rIdx ] ] : RefPicListTemp1[ rIdx ]
ここで、currPicは8.5.3.3.2のようにカレント符号化ピクチャであり、カレントピクチャの同じ時間IDを有さなければならない。
【0114】
[0123]いくつかの例において、JCTVC−Q1003のセクション8.5.3.3.2のリファレンスピクチャインデックスを決定するためのリファレンスピクチャ選択プロセスは以下のように変更されることができる。下線が引かれたテキストはJCTVC−Q1003に追加されたテキストを示す。
このプロセスへの入力は参照インデックスrefIdxLXである。
このプロセスの出力はルーマサンプルrefPicLX
Lの2次元アレイおよびクロマサンプルrefPicLX
CbおよびrefPicLX
Crから構成されるリファレンスピクチャである。
出力リファレンスピクチャRefPicListX[refIdxLX]はルーマサンプルrefPicLXLのpic_height_in_ルーマ_sample1アレイによるpic_width_in_ルーマ_samplesおよびクロマサンプルrefPicLXCbおよびrefPicLXCrのPicHeightInSamplesCアレイによる2つのPicWidthInSamplesCから構成される。
リファレンスピクチャサンプルアレイrefPicLXL, refPicLX
Cb、およびrefPicLX
Crは節8.7で、あるいは、従前に復号されたピクチャ
またはカレント復号ピクチャに関する
インループフィルタ(デブロッキングおよびSAO)なしに節8.7で導出された復号されたサンプルアレイS
L、 S
Cb、およびS
Crに対応する。
【0115】
[0124]イントラBCと制限されたイントラ予測の両方がイネーブルされると、イントラまたはイントラBCブロックに関する予測は、任意のリファレンスピクチャがカレントピクチャであるインターブロックまたはイントラブロックからのみであり得る。制限されたイントラ予測において、イントラ予測はイントラ予測モードを使用してコード化された隣接コード化ブロックからの復号されたサンプルおよび残差データのみを使用する。JCTVC−Q1003に記載されるように、シンタックス要素(例えば、constrained_intra_pred_flag)はピクチャパラメータセットがアクティブである復号ピクチャにおいて、制限されたイントラ予測が使用されるかどうかを示すためにピクチャパラメータセット内でシグナルされる。従って、この例は、イントラBCと制限されたイントラ予測の両方がスライスに関してイネーブルされるとき、ビデオコーダは異なるピクチャ内のブロックの動きベクトルあるいは、ブロックベクトルに基づいてスライスのブロックのブロックベクトルを決定するためにインター予測を使用することができる。
【0116】
[0125]JCTVC−Q1003はcu_skip_flagシンタックス要素を定義する。この開示の例に従って、JCTVC−Q1003で定義されたcu_skip_flagの意味論(semantics)は以下のように変更される。
1に等しいcu_skip_flag[x0][y0]はカレントコード化ユニットの場合、PスライスまたはBスライスまたは、
1に等しいintra_block_copy_enabled_flagを有するIスライスを復号するとき、cu_skip_flag[x0][y0]の後にマージ候補インデックスmerge_idx[x0][y0]を除くそれ以上のシンタックス要素は解析(parse)されない。
したがって、この例では、イントラBCがイネーブルされるIスライス内のカレントCUに関するcu_skip_flagが1であるとき、ビデオエンコーダ20はマージフラッグシンタックス要素、MVDシンタックス要素、動きベクトル予測子フラッグシンタックス要素、またはインター予測方向シンタックス要素をシグナルする。さらに、イントラBCがイネーブルされるIスライス内のカレントCUに関するcu_skip_flagが1であるとき、ビデオエンコーダ20はカレントCUに関する変換ツリーをシグナルしない。むしろ、ビデオコーダはマージ候補インデックスにより示されるマージ候補の動き情報により示される予測ブロックをカレントCUの再構成されたコード化ブロックであると解釈する。
【0117】
[0126]QCTVC−Q1003はスライスセグメントヘッダ内のslice_temporal_mvp_enabled_flagを定義する。slice_temporal_mvp_enabled_flagは時間動きベクトル予測子がインター予測のために使用されることができるかどうかを指定する。Intra_block_copy_enable_flagが0に等しいときIスライス内のslice_temporal_mvp_enabled_flagが0に等しいとき、それはピクチャの標準的復号プロセスに影響を与えず単にビットストリーム制限を表す。
【0118】
[0127]統合されたイントラブロックコピーとインター予測技術に関連するこの開示の技術はHEVCに関連して記載したけれども、この開示の技術はHEVCに限定されず、インター予測とイントラBC、またはそれらの類似したものが使用される如何なるビデオコード化システムに適用可能であり得る。
【0119】
[0128]
図4はこの開示で記載された統合されたイントラBCとインター予測技術をインプリメントすることができる例示ビデオエンコーダ20を図示するブロック図である。ビデオエンコーダ20はビデオスライス内のビデオブロックのイントラおよびインターコード化を実行することができる。イントラコード化は所定のビデオフレームあるいはピクチャ内のビデオの空間的冗長度を低減または除去するために空間予測に依存する。インターコード化はビデオシーケンスの隣接フレームまたはピクチャ内のビデオ内の時間冗長度を低減または除去するために時間予測に依存する。イントラモード(Iモード)は空間に基づいたいくつかの圧縮モードのいずれかに言及することができる。上述したように、ビデオエンコーダ20はイントラDCモード、イントラアンギュラー(intra angular)、モード、イントラプレーナーモードおよびイントラBCモードを含む複数のイントラモードの1つまたは複数内のビデオデータをコード化するように構成されることができる。単方向予測(Pモード)または双方向予測(Bモード)のようなインターモードは時間に基づいたいくつかの圧縮モードのいずれかに言及することができる。
【0120】
[0129]
図4の例において、ビデオエンコーダ20はビデオデータメモリ40、予測処理ユニット41、復号されたピクチャバッファ64、加算器50、変換処理ユニット52、量子化ユニット54、およびエントロピー符号化ユニット56を含む。予測処理ユニット41は分割ユニット35、動き推定ユニット42、動き補償ユニット44、およびイントラ予測処理ユニット46を含む。ビデオブロック再構成に関して、ビデオエンコーダ20はまた、逆量子化ユニット58、逆変換処理ユニット60、および加算器62を含む。デブロッキンギフィルタ(
図4に図示せず)はまた再構成されたビデオからブロッキネスアーティファクト(blockines artifacts)を除去するためにブロック境界をフィルタするために含まれてもよい。所望なら、デブロッキングフィルタは加算器62の出力をフィルタする。さらなるループフィルタ(インループまたはポストループ)はまたデブロッキングフィルタに加えて使用されることができる。
【0121】
[0130]ビデオデータメモリ40はビデオエンコーダ20のコンポーネントにより符号化されるビデオデータを記憶することができる。ビデオデータメモリ40に記憶されるビデオデータは、例えばビデオソース18から取得されることができる。復号されたピクチャバッファ(DPB)64はビデオエンコーダ20(例えば、イントラまたはインターコード化モード、また、イントラまたはインター予測コード化モードとも呼ばれる)によりビデオデータを符号化するのに使用するためのリファレンスビデオデータを記憶するバッファである。ビデオデータメモリ40およびDPB64は、シンクロナスDRAM(SDRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM(登録商標))、または他のタイプのメモリデバイスのような多種多様なメモリデバイスのいずれかにより形成されることができる。ビデオデータメモリ40とDPB64は同じメモリデバイスまたは別個のメモリデバイスにより提供されることができる。種々の例において、ビデオデータメモリ40はビデオエンコーダ20の他のコンポーネントとオンチップ(on-chip)であってもよいし、またはこれらのコンポーネントに関連するオフチップ(off-chip)であってもよい。
【0122】
[0131]
図4に示すように、ビデオエンコーダ20はビデオデータを受信し、分割ユニット35はデータをビデオブロックに分割する。この分割はまた、例えば、LCUsおよびCUsの4分木構造に従って、スライス、タイル、または他のより大きな単位への分割、ならびにビデオブロック分割を含むことができる。ビデオエンコーダ20は一般に符号化されるビデオスライス内のビデオブロックを符号化するコンポーネントを図示する。スライスは複数のビデオブロック(およびおそらくタイルと呼ばれるビデオブロックのセット)に分割されることができる。予測処理ユニット41は、エラー結果(例えば、コード化レートおよび歪のレベル)に基づいてカレントビデオブロックに関して複数のイントラコード化モードの1つまたは複数のインターコード化モードの1つのような、複数の可能なコード化モードの1つを選択することができる。予測処理ユニット41は、統合されたイントラBCイントラおよびインター予測を実行するためにここに記載されたこの開示の技術をインプリメントするように構成されることができる。予測処理ユニット41は残差ブロックデータを生成するために加算器50に、およびリファレンスピクチャとして使用するために符号化されたブロックを再構成するために加算器62に、結果として生じるイントラまたはインターコード化ブロックを供給することができる。
【0123】
[0132]予測処理ユニット41内のイントラ予測処理ユニット46は空間圧縮を提供するためにコード化されるカレントブロックと同じフレームまたはスライス内の1つまたは複数の隣接ブロックに関連するカレントビデオブロックのイントラ予測コード化を実行することができる。処理ユニット41内の動き推定ユニット42および動き補償ユニット44は時間圧縮を提供するために1つまたは複数のリファレンスピクチャ内の1つまたは複数の予測ブロックに関連するカレントビデオブロックのインター予測コード化を実行する。
【0124】
[0133]動き推定ユニット42はビデオシーケンスに関する所定のパターンに従ってビデオスライスに関するインター予測モードを決定するように構成されることができる。所定のパターンはPスライス、Bスライスまたはいくつかの例ではGPBスライスとしてシーケンス内のビデオスライスを指定することができる。動き推定ユニット42および動き補償ユニット44は高度に集積化されることができるが、概念的目的のために別個に図示されている。動き推定ユニット42により実行される動き推定は動きベクトルを生成するプロセスであり、それはビデオブロックに関する動きを推定する。例えば、動きベクトルはリファレンスピクチャ内の予測ブロックに関連するカレントビデオフレームまたはピクチャ内のビデオブロックのPUの変位を示すことができる。
【0125】
[0134]予測ブロックは絶対差分の合計、スクエア差分(square difference)(SSD)の合計または他の差分メトリックにより決定されることができるピクセル差分の観点からコード化されるビデオブロックのPUを厳密に一致させるために発見されるブロックである。いくつかの例において、ビデオエンコーダ20は復号ピクチャバッファ64内に記憶されるリファレンスピクチャのサブ整数ピクセル位置に関する値を計算することができる。例えば、ビデオエンコーダ20はリファレンスピクチャの1/4ピクセル位置、1/8ピクセル位置、または他の分数ピクセル位置の値を補間することができる。それゆえ、動き推定ユニット42はフルピクセル位置および分数ピクセル位置に関して動きサーチを実行し、分数ピクセル精度で動きベクトルを出力することができる。
【0126】
[0135]動き推定ユニット42はPUの位置を、リファレンスピクチャの予測ブロックの位置と比較することによりインターコード化されたスライス内のビデオブロックのPUに関する動きベクトルを計算する。リファレンスピクチャは第1のリファレンスピクチャリスト(リスト0)または第2のリファレンスピクチャリスト(リスト1)から選択されることができ、それらの各々は復号ピクチャバッファ64に記憶された1つまたは複数のリファレンスピクチャを識別する。動き推定ユニット42は計算された動きベクトルをエントロピー符号化ユニット56および動き補償ユニット44に送信する。
【0127】
[0136]動き補償ユニット44により実行される動き補償は、おそらくサブピクセル精度に補間を行う動き推定により決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成することを含むことができる。カレントビデオブロックのPUに関する動きベクトルを受信すると、動き補償ユニット44はリファレンスピクチャリストの1つ内の、動きベクトルポイントが指し示す予測ブロックの位置を求めることができる。ビデオエンコーダ20はコード化されるカレントビデオブロックのピクセル値から予測ブロックのピクセル値を減算することにより残差ビデオブロックを形成し、ピクセル差分値を形成する。ピクセル差分値はブロックに関する残差データを形成し、ルーマおよびクロマ差分コンポーネントの両方を含むことができる。加算器50はこの減算演算を実行する1つのコンポーネントまたは複数のコンポーネントを表す。動き補償ユニット44はまたビデオスライスのビデオブロックを復号する際にビデオデコーダ30により使用するビデオブロックとビデオスライスに関連したシンタックス要素を生成することができる。
【0128】
[0137]イントラ予測処理ユニット46は上述したように、動き推定ユニット42および動き補償ユニット44により実行されるインター予測の代替としてカレントブロックをイントラ予測することができる。特に、イントラ予測処理ユニット46はカレントブロックを符号化するためにイントラBCモードを含むイントラ予測モードを決定することができる。いくつかの例において、イントラ予測処理ユニット46は、例えば別個の符号化パス(passes)の期間に種々のイントラ予測モードを用いてカレントブロックを符号化することができ、イントラ予測処理ユニット46(あるいはいくつかの例では、モード選択ユニット)はテストされたモードから使用するために適当なイントラ予測モードを選択することができる。
【0129】
[0138]例えば、イントラ予測処理ユニット46は種々のテストされたイントラ予測モードに関するレート歪分析を用いてレート歪値を計算することができ、テストされたモードの中でベストのレート歪特性を持つイントラ予測モードを選択することができる。レート歪分析は一般に符号化されたブロックとオリジナル、すなわち、符号化されたブロックを生成するために符号化された非符号化ブロックとの間の歪(または誤差)の量、ならびに符号化されたブロックを生成するために使用されるビットレート(すなわち、ビットの数)を決定する。イントラ予測処理ユニット46は、どのイントラ予測モードがブロックに関するベストのレート歪値を提示するかを決定するために種々の符号化ブロックに関する歪とレートからの比率を計算することができる。
【0130】
[0139]上述したように、この開示の技術に従って、ビデオエンコーダ20は、時間動きベクトル予測(TMVP)を用いてコード化されたイントラブロックコピー(イントラBC)コード化ブロックに関する動きベクトルを決定し、コロケートされたブロックがイントラBCコード化されたと決定することに応答して、整数ピクセル精度でTMVPベクトルを用いて、TMVPベクトルに基づいてコロケートされたブロックを決定し、およびコロケートされたブロックがインターコード化されたと決定することに応答して、リファレンスブロックを決定するためにサブピクセル精度でTMVPベクトルを使用するように構成されることができる。
【0131】
[0140]この開示の技術に従って、ビデオデコーダはビデオエンコーダに関してここに記載された任意のプロセスに関する一般的な可逆処理(reciprocal process)を実行するように構成されることができる。同様に、ビデオエンコーダはビデオデコーダに関してここに記載された任意のプロセスに関する一般的な可逆プロセスを実行するように構成されることができる。
【0132】
[0141]いずれの場合も、ブロックに関するイントラ予測モードを選択した後、イントラ予測処理ユニット46は、ブロックに関する選択されたイントラ予測モードを示す情報をエントロピー符号化ユニット56に提供することができる。エントロピー符号化ユニット56はこの開示の技術に従って、選択されたイントラ予測モードを示す情報を符号化することができる。ビデオエンコーダ20は送信されたビットストリームに構成データを含めることができ、それは複数のイントラ予測モードインデックステーブルと、複数の変更されたイントラ予測モードインデックステーブル(コードワードマッピングテーブルとも呼ばれる)と、種々のブロックに関するコンテキストを符号化する定義と、およびコンテキスの各々に使用するための、最も確率の高いイントラ予測モード、イントラ予測モードインデックステーブル、および変更されたイントラ予測モードインデックステーブルの表示を含むことができる。
【0133】
[0142]予測処理ユニット41がインター予測またはイントラ予測を介してカレントブロックに関する予測ブロックを生成した後、ビデオエンコーダ20はカレントブロックから予測ブロックを減算することにより残差ブロックを形成する。残差ブロック内の残差ビデオデータは1つまたは複数のTUs内に含めることができ変換処理ユニット52に適用されることができる。変換処理ユニット52は、ディスクリートコサイン変換(DCT)または概念的に類似の変換のような変換を用いて残差ビデオデータを残差変換係数に変換する。変換処理ユニット52は残差ビデオデータをピクセル領域から周波数領域のような変換領域へ変換することができる。
【0134】
[0143]変換処理ユニット52は結果として得られる変換係数を量子化ユニット54に送信することができる。量子化ユニット54はさらにビットレートを低減するために変換係数を量子化する。量子化プロセスはいくつかのまたはすべての係数に関連したビット深度を低減することができる。量子化の程度は量子化パラメータを調整することにより変更されることができる。いくつかの例において、量子化ユニット54は次に、量子化変換係数を含むマトリクスのスキャンを実行することができる。代替的に、エントロピー符号化ユニット56はスキャンを実行することができる。
【0135】
[0144]量子化に続いて、エントロピー符号化ユニット56は量子化変換係数をエントロピー符号化する。例えば、エントロピー符号化ユニット56はコンテキスト適応可変超コード化(CAVLC)、コンテキスト適応バイナリ演算コード化(CAVAC)、シンタックスベースコンテキスト適応バイナリ演算コード化(SBAC)、確率間隔分割エントロピー(PIPE)コード化または他のエントロピー符号化方法及び技術を実行することが出来る。エントロピー符号化ユニット56によりエントロピー符号化に続いて、符号化されたビットストリームはビデオデコーダ30に送信されるか、またはビデオデコーダ30による、その後の送信または検索に関してアーカイブ(archive)されることができる。エントロピー符号化ユニット56はコード化されるカレントビデオスライスに関する他のシンタックス要素および動きベクトルを符号化することができる。
【0136】
[0145]逆量子化ユニット58および逆変換処理ユニット60は、リファレンスピクチャのリファレンスブロックとして後の使用のためにピクセル領域内で残差ブロックを再構成するためにそれぞれ逆量子化および逆変換を適用する。動き補償ユニット44はリファレンスピクチャリストの1つ内のリファレンスピクチャの1つの予測ブロックに残差ブロックを加算することによりリファレンスブロックを計算することができる。動き補償ユニット44はまた動き推定に使用するためのサブピクセル精度を計算するために再構成された残差ブロックに1つまたは複数の補間フィルタを適用することができる。加算器62は復号されたピクチャバッファ64に記憶するためにリファレンスブロックを生成するために動き補償ユニット44により生成された動き補償予測ブロックに、再構成された残差ブロックを加算する。リファレンスブロックは、次のビデオフレームまたはピクチャ内のブロックをインター予測するためにリファレンスブロックとして動き推定ユニット42および動き補償ユニット44により使用されることができる。
【0137】
[0146]この開示の観点に従って、ビデエンコーダ20はこの開示で記載された技術の如何なる組み合わせも実行することができる。
【0138】
[0147]
図5はこの開示で記載された統合されたイントラBCおよびインター予測に関する技術をインプリメントすることができる。
図5の例において、ビデオデコーダ30はビデオデータメモリ79、エントロピーデコーディングユニット80、予測処理ユニット81、逆量子化ユニット86、逆変換処理ユニット88、加算器90、および復号ピクチャバッファ92を含む。予測処理ユニット81は動き補償ユニット82およびイントラ予測処理ユニット84を含む。ビデオデコーダ30は、いくつかの例において、
図4からのビデオエンコーダ20に関連した記載された符号化パスに一般的にレシプロカルな復号パスを実行する。
【0139】
[0148]ビデオデータメモリ79はビデオデコーダ30のコンポーネントにより復号される、符号化されたビデオビットストリームのようなビデオデータを記憶することができる。ビデオデータメモリ79に記憶されたビデオデータは例えば、物理データストレージメディアをアクセスすることにより、またはビデオ―データの有線または無線のネットワーク通信を介してカメラのようなローカルビデオソースから、あるいはストレージデバイス34から取得されることができる。ビデオデータメモリ79は符号化されたビデオビットストリームから符号化されたビデオデータを記憶するコード化ピクチャバッファ(CPB)を形成することができる。復号ピクチャバッファ92はビデオデコーダ30(例えば、イントラまたはインター符号化モード、イントラまたはインター予測符号化モードとも呼ばれることができる)によりビデオデータを復号するのに使用するリファレンスビデオデータを記憶する復号ピクチャバッファ(DPB)の一例である。ビデオデータメモリ79とDPB92は、シンクロナスDRAM(SDRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(PRAM)、または他のタイプのメモリデバイスを含むダイナミックランダムアクセスメモリ(DRAM)のような種々のメモリデバイスのいずれかにより形成されることができる。ビデオデータメモリ79とDPB92は同じメモリデバイスまたは別個のメモリデバイスにより提供されることができる。種々の例において、ビデオデータメモリ79はビデオデコーダ30の他のコンポーネントとオンチップであるかまたはこれらのコンポーネントに対してオフチップであり得る。
【0140】
[0149]復号プロセスの期間にビデオデコーダ30は符号化されたビデオスライスのビデオブロックを表す符号化されたビデオビットストリームと、ビデオエンコーダ20から関連したシンタックス要素を受信する。ビデオデコーダ30のエントロピー復号ユニット80は、量子化係数、動きベクトルおよび他のシンタックス要素を生成するためにビットストリームをエントロピー復号する。エントロピー復号ユニット80は動きベクトルと他のシンタックス要素を予測処理ユニット81に送る。ビデオデコーダ30はビデオスライスレベルでおよび/またはビデオブロックレベルでシンタックス要素を受信することができる。
【0141】
[0150]ビデオスライスがイントラコード化(I)スライスとしてコード化されると、予測処理ユニット81のイントラ予測処理ユニット84はカレントフレームまたはピクチャの従前に復号されたブロックからのデータおよびシグナルされたイントラ予測モードに基づいてカレントビデオスライスのビデオブロックに関する予測データを生成することができる。予測処理ユニット81は統合されたイントラBCおよびインター予測を実行するためにこの開示の技術をインプリメントするように構成されることができる。ビデオフレームがインターコード化された(すなわち、BまたはP)としてコード化されると、予測処理ユニット81の動き補償ユニット82はエントロピー復号ユニット80から受信された他のシンタックス要素および動きベクトルに基づいてカレントビデオスライスのビデオブロックに関する予測ブロックを生成する。予測ブロックはリファレンスピクチャリストの1つ内のリファレンスピクチャの1つから生成されることができる。ビデオデコーダ30は復号ピクチャバッファ92に記憶されたリファレンスピクチャに基づいてデフォルト構成技術を用いてリファレンスフレームリスト、リスト0およびリスト1を構成することができる。
【0142】
[0151]動き補償ユニット82は動きベクトルおよび他のシンタックス要素をパース(parsing)することによりカレントビデオスライスのビデオブロックに関する予測情報を決定し、復号されるカレントビデオブロックに関する予測ブロックを生成するために予測情報を用いる。例えば、動き補償ユニット82は、ビデオスライスのビデオブロックをコード化するのに使用される予測モード(例えば、イントラまたはインター予測)、インター予測スライスタイプ(例えば、Bスライス、Pスライス、またはGPBスライス)、スライスに関するリファレンスピクチャリストの1つまたは複数に関する構成情報、スライスの各インター符号化されたビデオブロックに関する動きベクトル、スライスの各インターコード化されたビデオブロックに関するインター予測ステータス、およびカレントビデオスライス内のビデオブロックを復号するための他の情報を決定するために受信されたシンタックス要素のいくつかを使用する。
【0143】
[0152]動き補償ユニット82はまた補間フィルタに基づいて補間を行うことができる。動き補償ユニット82はリファレンスブロックのサブ整数ピクセルに関する補間された値を計算するためにビデオブロックの符号化の期間にビデオエンコーダ20により使用される補間フィルタを使用することができる。この場合、動き補償ユニット82は受信されたシンタックス要素からビデオエンコーダ20により使用される補間フィルタを決定することができ、予測ブロックを生成するために補間フィルタを使用することができる。
【0144】
[0153]逆量子化ユニット86は、ビットストリームにおいて提供され、かつエントロピー復号ユニット80によって復号される量子化された変換係数を、逆量子化、すなわち非量子化(dequantize)する。逆量子化プロセスは、量子化の程度、および同様に、適用されるべき逆量子化の程度を決定するために、ビデオスライス内の各ビデオブロックに関してビデオ符号化器20によって計算される量子化パラメータ(QP)値の使用を含みうる。逆変換処理ユニット88は、ピクセル領域内に残差ブロックを生成するために、変換係数に逆変換、例えば、逆DCT、逆整数変換、または概念上同様の逆変換処理を適用する。
【0145】
[0154]動き補償ユニット82が動きベクトルおよび他のシンタックス要素に基づいて現在のビデオブロックに関する予測ブロックを生成した後で、ビデオ復号器30は、動き補償ユニット82によって生成された対応する予測ブロックに逆変換処理ユニット88からの残差ブロックを加算することによって復号されたビデオブロックを形成する。加算器90は、この加算演算を実行する1つまたは複数のコンポーネントを表す。所望の場合、非ブロック化フィルタはまた、ブロッキネスアーチファクトを取り除くための復号ブロックにフィルタをかけるために適用され得る。他のループフィルタ(符号化ループ内、または符号化ループ後)はまた、ピクセル遷移をスムースにするために、さもなければ映像品質を向上するために使用されることができる。所与のフレームまたはピクチャ内の復号されたビデオブロックは復号ピクチャバッファ92に記憶され、それは、次の動き補償に使用されるリファレンスピクチャを記憶する。復号ピクチャバッファ92はまた、
図1のディスプレイデバイス32のようなディスプレイデバイス上における後の表示のために復号されたビデオを記憶する。
【0146】
[0155]この開示の観点に従って、ビデオデコーダ30はこの開示に記載された技術のいかなる組み合わせも実行するように構成されることができる。
【0147】
[0156]
図6はこの開示の技術に一致するビデオデータを復号するための例示プロセスを図示するフローチャートである。
図6のプロセスは一般的に図示のためにビデオデコーダ30により実行されるように記載されるが、種々の他のプロセッサも
図6に示されるプロセスを実行することができる。
【0148】
[0157]
図6の例において、ビデオデコーダ30はカレントピクチャとリファレンスピクチャをリファレンスピクチャリストに含めることができる(200)。リファレンスピクチャはカレントピクチャとは異なる。ビデオデコーダ30はリファレンスピクチャのコロケートされたブロックを決定することができる(202)。コロケートされたブロックはカレントピクチャのカレントブロックとコロケートされる。ビデオデコーダ30はコロケートされたブロックから時間動きベクトル予測子を導出することができる(204)。ビデオデコーダ30は時間動きベクトル予測子がサブピクセル精度を有すると決定することができる(206)。ビデオデコーダ30はサブピクセルを有すると決定された時間動きベクトル予測子を右シフトする(208)。ビデオデコーダ30は、右シフトされた時間動きベクトル予測子に基づいて、カレントピクチャ内の予測ブロックを決定することができる(210)。ビデオデコーダ30は残差ブロックのサンプルと予測ブロックの対応するサンプルを加算することにより復号されたビデオブロックを形成することができる(212)。
【0149】
[0158]
図7はこの開示の技術に一致するビデオデータを符号化するための例示プロセスを図示するフローチャートである。
図7のプロセスは一般的に例示目的のためにビデオエンコーダ20により実行されるように記載されるけれども、種々の他のプロセスもまた
図7に示されるプロセスを実行することができる。
【0150】
[0159]
図7の例において、ビデオエンコーダ20はカレントピクチャおよびリファレンスピクチャをリファレンスピクチャリストに含めることができる(220)。リファレンスピクチャはカレントピクチャと異なる。ビデオエンコーダ20はリファレンスピクチャのコロケートされたブロックを決定することができる(222)。コロケートされたブロックはカレントピクチャのカレントブロックとコロケートされる。ビデオエンコーダ20はコロケートされたブロックから時間動きベクトル予測子を導出することができる(224)。ビデオエンコーダ20は時間動きベクトル予測子がサブピクセル精度を有すると決定することができる(226)。ビデオエンコーダ20はサブピクセル精度を有すると決定された時間動きベクトル予測子を右シフトすることができる(228)。ビデオエンコーダ20は右シフトされた時間動きベクトル予測子に基づいてカレントピクチャ内の予測ブロックを決定することができる(230)。ビデオエンコーダ20は右シフトされた時間動きベクトル予測子に基づいて決定された予測ブロックとカレントブロックとの間の差分を表す残差データを生成することができる(232)。
【0151】
[0160]この開示の技術に従う例がここに記載される。ビデオエンコーダ20またはビデオデコーダ30のようなデオコーダは以下の例を実行することができることが理解されるべきである。
【0152】
[0161]例1.ビデオデータを符号化または復号する方法において、前記方法は、時間動きベクトル予測(TMVP)を用いてコード化されたイントラブロックコピー(イントラBC)コード化ブロックに関する動きベクトルを決定すること、コロケートされたブロックがイントラBCコード化されると決定することに応答してTMVPベクトルに基づいてコロケートされたブロックを決定すること、整数ピクセル精度を有するTMVPベクトルを用いて、リファレンスブロックを決定すること、およびコロケートされたブロックがインターコード化されると決定することに応答して、サブ整数ピクセル精度を有するTMVPベクトルを用いてリファレンスブロックを決定すること、を備える。
【0153】
[0162]例2.例1の方法において、リファレンスブロックに基づいてイントラブロックコピーコード化ブロックを符号化しまたはリファレンスブロックに基づいてイントラブロックコピーコード化ブロックを復号することをさらに備える。
【0154】
[0163]例3.例1の方法において、TMVPベクトルがサブ整数ピクセル精度を有するとき、TMVP動きベクトルを右シフトすることをさらに備える。
【0155】
[0164]例4.例1の方法において、コロケートされたブロックがイントラBCコード化されると決定することに応答して、サブ整数ピクセル精度を有するTMVPベクトルを用いることをさらに備える。
【0156】
[0165]例5.ビデオデータを符号化または復号する方法において、ビデオデータのIスライスをコード化すること、およびイントラブロックコピーモードがIスライスのブロックに関してイネーブルされるかどうかに基づいてIスライスのシンタックス要素に関するinitTypeの値を導出すること、およびシンタックス要素をCABACコード化するためのctxIdx値を決定するためにinitType変数を用いることを備える。
【0157】
[0166]例6.例5の方法において、シンタックス要素がイントラBCモードのみと関連するかどうかを決定すること、およびシンタックス要素がイントラBCモードのみと関連するとの決定に応答してinitTypeを0に等しく設定することをさらに備える。
【0158】
[0167]例7.例5の方法において、シンタックス要素をCABAC符号化することをさらに備える。
【0159】
[0168]例8.例5の方法において、シンタックス要素をCABAC復号することをさらに備える。
【0160】
[0169]例9.例5の方法において、イントラBCモードがIスライスに関してイネーブルされるとIスライスに関するイントラおよびインター予測モードの両方を可能にすることをさらに備える。
【0161】
[0170]例10.ビデオデータを符号化または復号する方法において、イントラブロックコピー(イントラBC)モードがイネーブルされ、スライスがIスライスであることに応答して、またはスライスがPまたはBスライスであると決定することに応答してピクチャのスライスをコード化すること、イントラBCモードがスライスに関してイネーブルされるとリファレンスピクチャリスト構成を変更することを備える。
【0162】
[0171]例11.例10の方法において、スライスがIスライスであるときおよびイントラBCモードがスライスに関してイネーブルされると1つのリファレンスピクチャリストのみを使用することをさらに備える。
【0163】
[0172]例12.例10の方法において、
スライスがIスライスでイントラBCモードがスライスに関してイネーブルされると、第2の独立したリファレンスピクチャリストを用いることをさらに備える。
【0164】
[0173]例13.例10の方法において、リファレンスピクチャリストの終わりにスライスのカレントピクチャを挿入することをさらに備える。
【0165】
[0174]例14.例10の方法において、リファレンスピクチャリストのロングタームリファレンスピクチャの前または始めでスライスのカレントピクチャを追加することをさらに備える。
【0166】
[0175]例15.例14の方法において、スライスはPスライスまたはBスライスである。
【0167】
[0176]例16.例10の方法において、スライスのスライスタイプに基づいてリファレンスピクチャリストのロケーションにカレントピクチャを追加する。
【0168】
[0177]例17.例10の方法において、カレントピクチャの予測タイプに基づいてリファレンスピクチャリストのロケーションにカレントピクチャを追加することをさらに備える。
【0169】
[0178]例18.例10の方法において、リファレンスピクチャリストからリファレンスピクチャを決定すること、およびリファレンスピクチャが従前に復号されたピクチャまたはピクチャであるときリファレンスピクチャに関する適応オフセットを上述のインループフィルタリングし、デブロッキングしおよびサンプルすることをさらに備える。
【0170】
[0179]例19.例10の方法において、ピクチャのコード化ユニットに関して、コード化ユニットに関してイントラBCモードがイネーブルされ、コード化ユニットに関してスキップモードがイネーブルされると決定することと、コード化ユニットに関してスキップモードがイネーブルされると決定することに応答して、リファレンスピクチャリスト構成の期間にマージ候補シンタックス要素のみをパースすることをさらに備える。
【0171】
[0180]例20.例10の方法において、イントラBCモードがスライスに関してイネーブルされたと決定すること、およびスライスに関してイントラBCモードがイネーブルされたと決定することに応答してピクチャに関する復号プロセスが変更されないと決定することをさらに備える。
【0172】
[0181]例21.例10の方法において、リファレンスピクチャリストを符号化することをさらに備える。
【0173】
[0182]例22.例10の方法において、リファレンスピクチャリストを復号することをさらに備える。この開示の一例において、イントラ予測モードは、イントラBCモード、イントラアンギュラーモード、イントラプレーナーモード、またはイントラDCモードの1つまたは複数を備え、ビデオデータのカレントブロックはIスライス、PスライスまたはBスライスのいずれか内にある。
【0174】
[0183]例23.この開示に記載された複数の例のいずれかの組み合わせ。
【0175】
[0184]この開示の他の例において、ビデオエンコーダ20はさらに、ビデオデータのカレントブロックに関する予測ブロックとして使用される1つまたは複数のリファレンスブロックの特定のリファレンスブロックを決定するようにさらに構成される。ここにおいて、イントラBCモードを用いてビデオデータのカレントブロックを符号化することは予測ブロックからビデオデータのカレントブロックを予測することを備える。
【0176】
[0185]例に依存して、本明細書で説明された技術のうちのいずれのある動作またはイベントも、異なるシーケンスで実行されうるか、加えられうるか、混合されうるか、または完全に除外されうるかが行われうる(例えば、すべての説明された動作またはイベントが技術の実施のために必要であるわけではない)。さらにある特定の例では、動作またはイベントは、例えば、マルチスレッド処理、割り込み処理、または複数のプロセッサを通して、連続的と言うよりむしろ同時に実行されうる。さらに、この開示のある態様は、明瞭さのために単一のモジュールまたはユニットにより実行されるように記載したが、この開示の技術はビデオコーダに関連するユニットまたはモジュールの組み合わせにより実行されることができる。
【0177】
[0186]この開示に従って、用語「or」は、コンテキストがそうでないと記載しない限り「および/または」として解釈されることができる。さらに、「1つまたは複数」、または「少なくとも1つ」等のようなフレーズはここに開示されたいくつかの特徴に関して使用され、他では使用されなかった。そのような言語が使用されなかった特徴は、コンテキストがそうでないと記載されない限りそのような暗黙の意味を有すると解することができる。
【0178】
[0187]この開示のある態様は例示のために1つまたは複数のビデオコード化規格(例えば、HEVC規格)について記載した。しかしながら、この開示において記載される技術は、いまだ開発されていないまたは依然として開発中の独占所有権のあるビデオ符号化処理または他の規格を含む他のビデオ符号化プロセスに有効であり得る。
【0179】
[0188]ここに記載された技術はビデオエンコーダ20(例えば、
図1および4)および/またはビデオデコーダ30(例えば、
図1および5)により実行されることができる。これらは両方とも一般的にビデオコーダと呼ばれることができる。同様に、ビデオコーディングは規定通りにビデオ符号化またはビデオ復号に言及することができる。
【0180】
[0189]この技術の種々の態様の特定の組み合わせを上述したけれども、これらの組み合わせはこの開示で記載された技術の例を単に図示するように提供される。従って、この開示の技術はこれらの例示的組み合わせに限定されるべきではなく、この開示に記載された技術の種々の態様の考えられる組み合わせを含むことができる。この開示に記載された技術は任意の組み合わせで一緒に使用されることができる。
【0181】
[0190]1つまたは複数の例において、この開示で記載された機能はハードウェア、ソフトウェア、ファームウェアまたはそれらの任意の組み合わせでインプリメントされることができる。ソフトウェアでインプリメントされる場合、機能は1つまたは複数の命令またはコード、コンピュータ可読媒体として記憶されるか送信されることができ、ハードウエアベースの処理ユニットにより実行されることができる。コンピュータ可読媒体はコンピュータ可読記憶媒体を含むことができ、それは、例えば、通信プロトコルに従って、ある場所から他の場所へコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体あるいはデータストレージのような有形的表現媒体に対応する。このように、コンピュータ可読媒体は一般に(1)非一時的であるタンジブル(tangible)コンピュータ可読記憶媒体または(2)信号または搬送波のような通信媒体に対応することができる。データストレージ媒体は、この開示で記載される技術のインプリメンテーションに関する命令、コードおよび/またはデータ構造を検索するために1つまたは複数のコンピュータまたは1つまたは複数のプロセッサによりアクセスされることができる任意の利用可能な媒体であり得る。コンピュータプログラムプロダクトはコンピュータ可読媒体を含むことができる。
【0182】
[0191]限定ではなく例示として、そのようなコンピュータ可読記憶媒体はRAM、ROM、EEPROM(登録商標)、CD−ROM、または他の光学ディスクストレージ、磁気ディスクストレージ、またはコンピュータによりアクセス可能であり命令またはデータ構造の形態で所望のプログラムコードを記憶するために使用されることができる任意の対の媒体を備えることができる。また、任意の接続は適切にコンピュータ可読媒体と呼ぶことができる。例えば、命令がウェブサイト、サーバ、または同軸ケーブル、ファイバ光ケーブル、ツイストペア、デジタル加入者線(DSL)を用いた他の遠隔ソース、または赤外線、無線およびマイクロ波のような無線技術から送信される場合、同軸ケーブル、ファイバ光ケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波のような無線技術は媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は接続、搬送波、信号または他の送信媒体を含まないが、そのかわり非一時的なタンジブルな記憶媒体に向けられていると理解される必要がある。ここで使用されるDiskおよびdiscはコンパクトディスク(CD)、レーザーディスク(登録商標)、光ディスク、デジタルバーサタイルディスク」(DVD)、フロッピー(登録商標)ディスク、およびブルーレイディスクを含み、disksは通常データを磁気的に再生し、一方discsはデータをレーザで光学的に再生する。上記組み合わせもまたコンピュータ可読媒体の範囲内に含まれることができる。
【0183】
[0192]命令は、1つまたは複数のデジタルシグナルプロセッサ(DSPs)、汎用マイクロプロセッサ、特定用途集積回路(ASICs)、フィールドプログラマブルロジックアレイ(FPGAs)、または他の等価な集積されたまたはディスクリートロジック回路のような1つまたは複数のプロセッサにより実行されることができる。したがって、ここで使用される「プロセッサ」という用語は上述した任意の構造またはここで記載された技術のインプリメンテーションのために適切な任意の他の構造に言及することができる。さらに、いくつかの態様において、ここで記載された機能性は符号化および復号のために構成された専用のハードウェアおよび/またはソフトウエアモジュール内に提供されることができ、または結合されたコーデックに内蔵されることができる。また、この技術は1つまたは複数の回路またはロジックエレメント内に完全にインプリメントされることができる。
【0184】
[0193]この開示の技術は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(例えば、チップセット)を含む多種多様のデバイスまたは装置内にインプリメントされることができる。種々のコンポーネント、モジュールまたはユニットはこの開示において、開示された技術を実行するように構成されたデバイスの機能的観点を強調するように記載されているが、必ずしも異なるハードウエアユニットによる実現を必要としない。むしろ、上述したように、種々のユニットは、コーデックハードウエアユニット内で結合されることができ、あるいは適切なソフトウエアおよび/またはファームウエアと組み合わせて、上述した1つまたは複数のプロセッサを含む相互動作可能なハードウエアユニットの集合により提供されることができる。
【0185】
[0194]種々の例について述べた。これらおよび他の例は以下のクレームの範囲内にある。
以下に本願の出願当初の特許請求の範囲に記載された発明を付記する。
[C1]
イントラブロックコピーモードを用いてビデオデータを復号する方法において、
カレントピクチャとリファレンスピクチャをリファレンスピクチャリストに含めることと、前記リファレンスピクチャは前記カレントピクチャと異なる、
前記リファレンスピクチャのコロケートされたブロックを決定することと、前記コロケートされたブロックは前記カレントピクチャのカレントブロックとコロケートされる、
前記コロケートされたブロックから時間動きベクトル予測子を導出することと、
前記時間動きベクトル予測子はサブピクセル精度を有することを決定することと、
サブピクセル精度を有すると決定された前記時間動きベクトル予測子を右シフトすることと、
前記右シフトされた時間動きベクトル予測子に基づいて前記カレントピクチャ内の予測ブロックを決定することと、および
残差ブロックのサンプルと前記予測ブロックの対応するサンプルとを合計することにより復号されたビデオブロックを形成することと、
を備えた方法。
[C2]
前記カレントピクチャは第1のピクチャであり、前記方法はさらに、
イントラ予測を用いて第2のピクチャのIスライスの第1のブロックを復号することと、および
イントラブロックコピーモードを用いて前記Iスライスの第2のブロックを復号することと
を備えた、C1の方法。
[C3]
前記カレントピクチャは、第1のピクチャであり、前記リファレンスピクチャリストは第1のリファレンスピクチャリストであり、前記方法はさらに、
イントラブロックコピーが第2のピクチャに関してイネーブルされるかどうかを示すシンタックス要素をビットストリームから取得することと、および
前記第2のピクチャのIスライスに関する復号プロセスの一部として、イントラブロックコピーが前記Iスライスに関してイネーブルされる前記シンタックス要素に基づいた決定に応答して第2のピクチャリスを含む第2のリファレンスピクチャリストを構築することとを含む、C1の方法。
[C4]
前記カレントピクチャと前記リファレンスピクチャを前記リファレンスピクチャリストに含めることは、
前記リファレンスピクチャリストにおいて、前記リファレンスピクチャリスト内のロングタームピクチャの前に前記カレントピクチャを含めることと、
前記リファレンスピクチャリストにおいて、スライスがIスライスか、Pスライスか、またはBスライスかどうかに基づいて前記リファレンスピクチャリスト内のロケーションに前記カレントピクチャを含めることと、
の1つを備える、C1の方法。
[C5]
イントラブロックコピーモード符号化ブロックに関する少なくとも1つの動きベクトル候補とインター予測モード符号化ブロックに関する少なくとも1つの候補を含む動きベクトル候補リストを生成することをさらに備えた、C1の方法。
[C6]
イントラブロックコピーモードを用いてビデオデータを符号化する方法において、
カレントピクチャとリファレンスピクチャをリファレンスピクチャリストに含めることと、前記リファレンスピクチャは前記カレントピクチャと異なる、
前記リファレンスピクチャのコロケートされたブロックを決定することと、前記コロケートされたブロックは前記カレントピクチャのカレントブロックとコロケートされる、
前記コロケートされたブロックから時間動きベクトル予測子を導出することと、
前記時間動きベクトル予測子がサブピクセル精度を有すると決定することと、
サブピクセル精度を有すると決定された前記時間動きベクトル予測子を右シフトすることと、
前記右シフトされた時間動きベクトル予測子に基づいて前記カレントピクチャ内の予測ブロックを決定することを、および
前記右シフトされた時間動きベクトル予測子に基づいて決定された前記予測ブロックと前記カレントブロックとの間の差分を表す残差データを生成することと、
を備えた方法。
[C7]
前記カレントピクチャは、第1のピクチャであり、前記方法はさらに、
イントラ予測を用いて第2のピクチャのIスライスの第1のブロックを符号化することと、および
イントラブロックコピーモードを用いて前記Iスライスの第2のブロックを符号化することと
を備えたC6の方法。
[C8]
前記カレントピクチャは第1のピクチャであり、前記リファレンスピクチャリストは第1のリファレンスピクチャリストであり、前記方法はさらに、
Iスライスに関してイントラブロックコピーがイネーブルされると第2のピクチャの前記Iスライスに関して第2のリファレンスピクチャリストを構築することと、前記第2のリファレンスピクチャリストは前記第2のピクチャを含む、
を備えた、C6の方法。
[C9]
前記カレントピクチャと前記リファレンスピクチャを前記リファレンスピクチャリストに含めることは、
前記リファレンスピクチャリストにおいて、前記リファレンスピクチャリスト内のロングタームピクチャの前に前記カレントピクチャを含めることと、
前記リファレンスピクチャリストにおいて、スライスがIスライスか、Pスライスか、またはBスライスかどうかに基づいて前記リファレンスピクチャリスト内のロケーションに前記カレントピクチャを含めることと、
の1つを備えた、C6の方法。
[C10]
イントラブロックコピーモード符号化ブロックに関する少なくとも1つの動きベクトル候補とインター予測モード符号化ブロックに関する少なくとも1つの候補を含む動きベクトル候補を生成することをさらに備えた、C6の方法。
[C11]
イントラブロックコピーモードを用いてビデオデータを復号するデバイスにおいて、
リファレンスピクチャのビデオデータを記憶するように構成されたメモリと、および
カレントピクチャと前記リファレンスピクチャをリファレンスピクチャリスト内に含め、前記リファレンスピクチャは前記カレントピクチャと異なる、
前記リファレンスピクチャのコロケートされたブロックを決定し、前記コロケートされたブロックは前記カレントピクチャのカレントブロックとコロケートされる、
前記コロケートされたブロックから時間動きベクトル予測子を導出し、
前記時間動きベクトル予測子はサブピクセル精度を有すると決定し、
サブピクセル精度を有すると決定された前記時間動きベクトル予測子を右シフトし、
前記右シフトされた時間動きベクトル予測子に基づいて、前記カレントピクチャ内の予測ブロックを決定し、
残差ブロックと前記予測ブロックの対応するサンプルを合計することにより復号されたブロックを形成する、
ように構成された1つまたは複数のプロセッサ、
を備えた、デバイス。
[C12]
前記カレントピクチャは、第1のピクチャであり、前記1つまたは複数のプロセッサは、さらに、
イントラ予測を用いて第2のピクチャのIスライスの第1のブロックを復号し、
イントラブロックコピーモードを用いて前記Iスライスの第2のブロックを復号する、
ように構成される、C11のデバイス。
[C13]
前記カレントピクチャは第1のピクチャであり、前記リファレンスピクチャリストは第1のリファレンスピクチャリストであり、前記1つまたは複数のプロセッサは、
イントラブロックコピーが第2のピクチャに関してイネーブルされるかどうかを示すシンタックス要素をビットストリームから取得することと、
前記第2のピクチャのIスライスに関する復号プロセスの一部として、前記Iスライスに関してイントラブロックコピーがイネーブルされるシンタックス要素に基づいた決定に応答して、第2のリファレンスピクチャリストを構築することと、前記第2のリファレンスピクチャリストは前記第2のピクチャを含む、
ようにさらに構成されたC11のデバイス。
[C14]
前記1つまたは複数のプロセッサは、前記リファレンスピクチャリスト内のロングタームピクチャの前に前記カレントピクチャを前記リファレンスピクチャリストに含めること、および
スライスがIスライス、PスライスまたはBスライスかどうかに基づいて前記リファレンスピクチャリスト内のロケーションに前記カレントピクチャを前記リファレンスピクチャリストに含めることの1つを実行するように構成される、C11のデバイス。
[C15]
前記1つまたは複数のプロセッサはさらに、イントラブロックコピーモード符号化ブロックに関する少なくとも1つの動きベクトル候補とインター予測モード符号化ブロックに関する少なくとも1つの候補を含む動きベクトル候補リストを生成するようにさらに構成されるC11のデバイス。
[C16]
前記デバイスは、
集積回路と、
マイクロプロセッサ、または
前記カレントピクチャを表示するように構成されたディスプレイ、または前記カレントピクチャを撮像するように構成されたカメラの1つまたは両方を備えた無線通信デバイス、
の少なくとも1つを備えた、C11のデバイス。
[C17]
前記デバイスはさらに復号されたビデオデータを表示するように構成されたディスプレイをさらに備えた、C11のデバイス。
[C18]
前記1つまたは複数のプロセッサはさらに前記ビデオデータを符号化するように構成され、前記デバイスはさらに、前記ビデオデータを撮像するように構成されたカメラを備えた、C11のデバイス。
[C19]
イントラブロックコピーモードを用いてビデオデータを符号化するためのデバイスにおいて、リファレンスピクチャのビデオデータを記憶するように構成されたメモリと、
カレントピクチャと前記リファレンスピクチャをリファレンスピクチャリスト内に含め、前記リファレンスピクチャは前記カレントピクチャと異なる、
前記リファレンスピクチャのコロケートされたブロックを決定し、前記コロケートされたブロックは前記カレントピクチャのカレントブロックとコロケートされる、
前記コロケートされたブロックから時間動きベクトル予測子を導出し、
前記時間動きベクトル予測子がサブピクセル精度を有すると決定し、
サブピクセル精度を有すると決定された前記時間動きベクトル予測子を右シフトし、
前記右シフトされた時間動きベクトル予測子に基づいて、前記カレントピクチャ内の予測ブロックを決定し、および
前記右シフトされた時間動きベクトル予測子に基づいて決定された前記予測ブロックと前記カレントブロックとの間の差分を表す残差データを生成する、
ように構成された1つまたは複数のプロセッサと、
を備えたデバイス。
[C20]
前記カレントピクチャは第1のピクチャであり、前記1つまたは複数のプロセッサは、さらに、
イントラ予測を用いて第2のピクチャのIスライスの第1のブロックを符号化し、イントラブロックコピーモードを用いて前記Iスライスの第2のブロックを符号化する、
ように構成された、C19のデバイス。
[C21]
前記カレントピクチャは、第1のピクチャであり、前記リファレンスピクチャリストは、第1のリファレンスピクチャリストであり、前記1つまたは複数のプロセッサは、さらに、
前記Iスライスに関してイントラブロックコピーがイネーブルされるとき第2のピクチャのIスライスに関する第2のリファレンスピクチャリストを構築する、前記第2のリファレンスピクチャリストは前記第2のピクチャを含む、
ように構成された、C19のデバイス。
[C22]
前記1つまたは複数のプロセッサは、
前記リファレンスピクチャリスト内のロングタームピクチャの前に前記カレントピクチャを前記リファレンスピクチャリストに含めること、
スライスがIスライスか、Pスライスか、あるいはBスライスかどうかに基づいて前記リファレンスピクチャリスト内のロケーションの前記カレントピクチャを前記リファレンスピクチャリストに含めること、
の1つを実行するように構成される、C19のデバイス。
[C23]
前記1つまたは複数のプロセッサは、さらに、イントラブロックコピーモード符号化ブロックに関する少なくとも1つの動きベクトル候補とインター予測モード符号化ブロックに関する少なくとも1つの候補を含む動きベクトル候補リストを生成するように構成される、C19のデバイス。
[C24]
集積回路と、
マイクロプロセッサと、または
前記カレントピクチャを表示するように構成されたディスプレイ、または前記カレントピクチャを撮像するように構成されたカメラの1つまたは両方を備えた無線通信デバイス、
の少なくとも1つを備えた、C19のデバイス。
[C25]
前記デバイスはさらに復号されたビデオデータを表示するように構成されたディスプレイをさらに備えた、C19のデバイス。
[C26]
前記1つまたは複数のプロセッサはさらにビデオデータを復号するように構成された、C19のデバイス。
[C27]
イントラブロックコピーモードを用いてビデオデータをコード化するための装置において、カレントピクチャとリファレンスピクチャをリファレンスピクチャリスト内に含める手段と、前記リファレンスピクチャは前記カレントピクチャと異なる、
前記リファレンスピクチャのコロケートされたブロックを決定する手段と、前記コロケートされたブロックは前記カレントピクチャのカレントブロックとコロケートされる、
前記コロケートされたブロックから時間動きベクトル予測子を導出する手段と、
前記時間動きベクトル予測子がサブピクセル精度を有することを決定する手段と、
サブピクセル精度を有すると決定された前記時間動きベクトル予測子を右シフトする手段と、
前記右シフトされた時間動きベクトル予測子に基づいて、前記カレントピクチャ内の予測ブロックを決定する手段と、
を備えた、装置。
[C28]
実行されると、ビデオデータをコード化するように構成されたコンピューティングデバイスの1つまたは複数のプロセッサに、
カレントピクチャとリファレンスピクチャをリファレンスピクチャリスト内に含ませ、前記リファレンスピクチャは前記カレントピクチャと異なる、
前記リファレンスピクチャのコロケートされたブロックを決定させ、前記コロケートされたブロックは前記カレントピクチャのカレントブロックとコロケートされる、
前記コロケートされたブロックから時間動きベクトル予測子を導出させ、
前記時間動きベクトル予測子がサブピクセル精度を有すると決定させ、
サブピクセル精度を有すると決定された前記時間動きベクトル予測子を右シフトさせ、および
前記右シフトされた時間動きベクトル予測子に基づいて、前記カレントピクチャ内の予測ブロックを決定させる、
命令を記憶した、非一時的コンピュータ読取可能記憶媒体。