[0018]本開示は、符号化ビットストリーム適合制約(たとえば、HEVCビットストリーム適合制約の変更)を利用するための技法について説明する。いくつかの例では、ビットストリーム適合制約は、シンタックス要素(たとえば、collocated_ref_idxシンタックス要素)によって参照される参照ピクチャが、コード化ピクチャのすべてのスライスについて同じであるものとし、現在ピクチャ自体でないものとすることを規定する。本開示は、そのような制約が適用される技法およびコーディングシナリオについて説明する。他の例では、本開示は、さらに、collocated_ref_idxによって参照されるピクチャが現在ピクチャでないものとするという制約を削除することを提案する。
[0019]他の例では、本開示は、ピクチャ内のいくつかのスライスは、参照として現在ピクチャのみを使用するが、同じピクチャ内の他のスライスは、参照として現在ピクチャならびに時間ピクチャを使用する、ピクチャのためのコーディング効率を改善するための方法について説明する。より一般的な場合、現在ピクチャが参照ピクチャとして含まれるかどうかにかかわらず、本開示の例示的な技法は、ピクチャ内のいくつかのスライスが時間動き予測を使用し、同じピクチャ内の他のスライスが時間予測を使用しないとき、適用可能である。
[0020]本開示の技法は、高効率ビデオコーディング(HEVC)規格(ITU−T H.265)、およびスクリーンコンテンツコーディング(SCC)などのそれの拡張に準拠するビデオコーデックに適用可能であり得る。しかしながら、本開示の技法は、将来のビデオコーディング規格、より高いビット深度(たとえば、8ビット超)をサポートするビデオコーディング技法、4:4:4、4:2:2、4:2:0、4:0:0などの異なるクロマサンプリングフォーマットなどを含む、ビデオコーディング技法に従って使用され得る。
[0021]ビデオシーケンスは、概して、ピクチャのシーケンスとして表される。一般に、ブロックベースのコーディング技法は、個々のピクチャの各々をコーディングするために使用される。すなわち、各ピクチャはブロックに分割され、ブロックの各々は個別にコーディングされる。ビデオデータのブロックをコーディングすることは、概して、ブロック中のサンプルのための予測された値(たとえば、ルーマサンプルおよび/またはクロマサンプルのようなピクセル値)を形成することと、残差値をコーディングすることとを伴う(involves)。予測された値は、1つまたは複数の予測ブロック中のサンプルを使用して形成される。残差値は、元の(original)ブロックのピクセルと予測されたサンプル値との間の差を表す。詳細には、ビデオデータの元のブロックはサンプル値のアレイを含み、予測されたブロックは予測されたピクセル値のアレイを含む。残差値は、元のブロックのサンプル値と予測されたサンプル値との間のサンプルごとの差分を表す。
[0022]ビデオデータのブロックのための予測技法は、概して、イントラ予測およびインター予測としてカテゴリー分類される。イントラ予測、または空間予測は、概して、同じピクチャ中の隣接する、前にコーディングされたブロックのピクセル値からブロックを予測することを伴う。インター予測、または時間予測は、概して、1つまたは複数の前にコーディングされたピクチャのピクセル値からブロックを予測することを伴う。パレットベースコーディング技法およびイントラブロックコピー技法を含む他の予測技法は、スクリーンコンテンツをコーディングする(たとえば、スクリーンコンテンツコーディング(SCC))ために使用され得る。
[0023]図1は、本開示の技法を利用し得る例示的なビデオ符号化および復号システム10を示すブロック図である。図1に示されているように、システム10は、宛先デバイス14によって、たとえば、ほぼリアルタイムで、または後で復号されるべき符号化ビデオデータを与えるソースデバイス12を含む。特に、ソースデバイス12は、コンピュータ可読媒体16を介して宛先デバイス14にビデオデータを与える。ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、タブレットコンピュータ、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲のデバイスのいずれかを備え得る。いくつかの場合には、ソースデバイス12および宛先デバイス14は、ワイヤレス通信のために装備され得る。したがって、ソースデバイス12および宛先デバイス14はワイヤレス通信デバイスであり得る。ソースデバイス12は、例示的なビデオ符号化デバイス(すなわち、ビデオデータを符号化するためのデバイス)である。宛先デバイス14は、例示的なビデオ復号デバイス(すなわち、ビデオデータを復号するためのデバイス)である。
[0024]図1の例では、ソースデバイス12は、ビデオソース18と、ビデオデータを記憶するように構成された記憶媒体19と、ビデオエンコーダ20と、出力インターフェース24とを含む。宛先デバイス14は、入力インターフェース26と、符号化ビデオデータを記憶するように構成された記憶媒体28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。他の例では、ソースデバイス12および宛先デバイス14は、他の構成要素または構成を含む。たとえば、ソースデバイス12は、外部カメラなど、外部ビデオソースからビデオデータを受信し得る。同様に、宛先デバイス14は、内蔵ディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。
[0025]図1の図示されたシステム10は一例にすぎない。ビデオデータを処理するための技法は、任意のデジタルビデオ符号化および/または復号デバイスによって実施され得る。概して、本開示の技法はビデオ符号化デバイスによって実施されるが、本技法は、一般に「コーデック」と呼ばれるビデオエンコーダ/デコーダによっても実施され得る。ソースデバイス12および宛先デバイス14は、ソースデバイス12が宛先デバイス14への送信のためのコード化ビデオデータを生成するような、コーディングデバイスの例にすぎない。いくつかの例では、ソースデバイス12および宛先デバイス14は、ソースデバイス12および宛先デバイス14の各々がビデオ符号化構成要素とビデオ復号構成要素とを含むように、実質的に対称的に動作し得る。したがって、システム10は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、またはビデオテレフォニーのための、ソースデバイス12と宛先デバイス14との間の一方向または双方向のビデオ送信をサポートし得る。
[0026]ソースデバイス12のビデオソース18は、ビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされたビデオを含んでいるビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオデータを受信するためのビデオフィードインターフェースを含み得る。さらなる代替として、ビデオソース18は、ソースビデオとしてのコンピュータグラフィックスベースのデータ、またはライブビデオとアーカイブビデオとコンピュータ生成ビデオとの組合せを生成し得る。ソースデバイス12は、ビデオデータを記憶するように構成された1つまたは複数のデータ記憶媒体(たとえば、記憶媒体19)を備え得る。本開示で説明される技法は、概してビデオコーディングに適用可能であり得、ワイヤレスおよび/またはワイヤード適用例に適用され得る。各場合において、キャプチャされたビデオ、プリキャプチャされたビデオ、またはコンピュータ生成ビデオは、ビデオエンコーダ20によって符号化され得る。出力インターフェース24は、符号化ビデオ情報をコンピュータ可読媒体16に出力し得る。
[0027]宛先デバイス14は、コンピュータ可読媒体16を介して復号されるべき符号化ビデオデータを受信し得る。コンピュータ可読媒体16は、ソースデバイス12から宛先デバイス14に符号化ビデオデータを移動することが可能な任意のタイプの媒体またはデバイスを備え得る。いくつかの例では、コンピュータ可読媒体16は、ソースデバイス12が、符号化ビデオデータを宛先デバイス14にリアルタイムで直接送信することを可能にするための通信媒体を備える。符号化ビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先デバイス14に送信され得る。通信媒体は、無線周波数(RF)スペクトルまたは1つまたは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースのネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス12から宛先デバイス14への通信を可能にするために有用であり得る任意の他の機器を含み得る。宛先デバイス14は、符号化ビデオデータと復号ビデオデータとを記憶するように構成された1つまたは複数のデータ記憶媒体を備え得る。
[0028]いくつかの例では、符号化データは、出力インターフェース24からストレージデバイスに出力され得る。同様に、符号化データは、入力インターフェースによってストレージデバイスからアクセスされ得る。ストレージデバイスは、ハードドライブ、Blu−ray(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、揮発性または不揮発性メモリ、あるいは符号化ビデオデータを記憶するための任意の他の好適なデジタル記憶媒体など、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。さらなる一例では、ストレージデバイスは、ソースデバイス12によって生成された符号化ビデオを記憶し得るファイルサーバまたは別の中間ストレージデバイスに対応し得る。宛先デバイス14は、ストリーミングまたはダウンロードを介してストレージデバイスから記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化ビデオデータを記憶することと、その符号化ビデオデータを宛先デバイス14に送信することとが可能な任意のタイプのサーバであり得る。例示的なファイルサーバは、(たとえば、ウェブサイトのための)ウェブサーバ、FTPサーバ、ネットワーク接続ストレージ(NAS)デバイス、またはローカルディスクドライブを含む。宛先デバイス14は、インターネット接続を含む、任意の標準のデータ接続を通して符号化ビデオデータにアクセスし得る。これは、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに好適であるワイヤレスチャネル(たとえば、Wi−Fi(登録商標)接続)、ワイヤード接続(たとえば、DSL、ケーブルモデムなど)、またはその両方の組合せを含み得る。ストレージデバイスからの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはそれらの組合せであり得る。
[0029]本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、動的適応ストリーミングオーバーHTTP(DASH)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されたデジタルビデオ、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例など、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオテレフォニーなどの適用例をサポートするために、一方向または双方向のビデオ送信をサポートするように構成され得る。
[0030]コンピュータ可読媒体16は、ワイヤレスブロードキャストまたはワイヤードネットワーク送信などの一時媒体、あるいはハードディスク、フラッシュドライブ、コンパクトディスク、デジタルビデオディスク、Blu−rayディスク、または他のコンピュータ可読媒体などの記憶媒体(すなわち、非一時的記憶媒体)を含み得る。いくつかの例では、ネットワークサーバ(図示せず)は、たとえば、ネットワーク送信を介して、ソースデバイス12から符号化ビデオデータを受信し、その符号化ビデオデータを宛先デバイス14に与え得る。同様に、ディスクスタンピング設備など、媒体製造設備のコンピューティングデバイスは、ソースデバイス12から符号化ビデオデータを受信し、その符号化ビデオデータを含んでいるディスクを生成し得る。したがって、コンピュータ可読媒体16は、様々な例において、様々な形態の1つまたは複数のコンピュータ可読媒体を含むと理解され得る。
[0031]宛先デバイス14の入力インターフェース26は、コンピュータ可読媒体16から情報を受信する。コンピュータ可読媒体16の情報は、ビデオエンコーダ20のビデオエンコーダ20によって定義され、またビデオデコーダ30によって使用される、ブロックおよび他のコード化ユニット、たとえば、ピクチャグループ(GOP)の特性および/または処理を記述するシンタックス要素を含む、シンタックス情報を含み得る。記憶媒体28は、入力インターフェース26によって受信された符号化ビデオデータを記憶し得る。ディスプレイデバイス32は、復号ビデオデータをユーザに対して表示し、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを備え得る。
[0032]ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアなど、様々な好適なエンコーダまたはデコーダ回路のいずれか、あるいはそれらの任意の組合せとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、デバイスは、好適な非一時的コンピュータ可読媒体にソフトウェアのための命令を記憶し、本開示の技法を実施するために1つまたは複数のプロセッサを使用してその命令をハードウェアで実行し得る。ビデオエンコーダ20およびビデオデコーダ30の各々は1つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも、それぞれのデバイス中で複合エンコーダ/デコーダ(コーデック)の一部として統合され得る。
[0033]いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、既存または将来の規格など、ビデオコーディング規格に従って動作し得る。例示的なビデオコーディング規格は、限定はしないが、ITU−T H.261、ISO/IEC MPEG−1 Visual、ITU−T H.262またはISO/IEC MPEG−2 Visual、ITU−T H.263、ISO/IEC MPEG−4 Visual、およびそれのスケーラブルビデオコーディング(SVC)拡張とマルチビュービデオコーディング(MVC)拡張とを含む、(ISO/IEC MPEG−4 AVCとしても知られる)ITU−T H.264を含む。さらに、新しいビデオコーディング規格、すなわち、それの範囲およびSCC拡張、3Dビデオコーディング(3D−HEVC)ならびにマルチビュー拡張(MV−HEVC)ならびにスケーラブル拡張(SHVC)を含む、高効率ビデオコーディング(HEVC)またはITU−T H.265が、ITU−Tビデオコーディングエキスパートグループ(VCEG:Video Coding Experts Group)とISO/IECモーションピクチャエキスパートグループ(MPEG:Motion Picture Experts Group)とのジョイントコラボレーションチームオンビデオコーディング(JCT−VC)によって最近開発された。
[0034]HEVCおよび他のビデオコーディング仕様では、ビデオシーケンスは一般に一連のピクチャを含む。ピクチャは「フレーム」と呼ばれることもある。ピクチャは、SL、SCb、およびSCrと示される3つのサンプルアレイを含み得る。SLはルーマサンプルの2次元アレイ(すなわち、ブロック)である。SCbはCbクロミナンスサンプルの2次元アレイである。SCrはCrクロミナンスサンプルの2次元アレイである。クロミナンスサンプルは、本明細書では「クロマ」サンプルと呼ばれることもある。他の事例では、ピクチャはモノクロームであり得、ルーマサンプルのアレイのみを含み得る。
[0035]ピクチャの符号化表現を生成するために、ビデオエンコーダ20はコーディングツリーユニット(CTU:coding tree unit)のセットを生成し得る。CTUの各々は、ルーマサンプルのコーディングツリーブロックと、クロマサンプルの2つの対応するコーディングツリーブロックと、それらのコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。モノクロームピクチャまたは3つの別々の色平面を有するピクチャでは、CTUは、単一のコーディングツリーブロックと、そのコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。コーディングツリーブロックはサンプルのN×Nブロックであり得る。CTUは「ツリーブロック」または「最大コーディングユニット」(LCU:largest coding unit)と呼ばれることもある。HEVCのCTUは、H.264/AVCなど、他の規格のマクロブロックに広い意味で類似し得る。しかしながら、CTUは、必ずしも特定のサイズに限定されるとは限らず、1つまたは複数のコーディングユニット(CU)を含み得る。スライスは、ラスタ走査順序で連続的に順序付けられた整数個のCTUを含み得る。
[0036]本開示は、1つまたは複数のサンプルブロックと、サンプルの1つまたは複数のブロックのサンプルをコーディングするために使用されるシンタックス構造とを指すために、「ビデオユニット」または「ビデオブロック」または「ブロック」という用語を使用し得る。例示的なタイプのビデオユニットは、CTU、CU、PU、変換ユニット(TU)、マクロブロック、マクロブロック区分などを含み得る。いくつかのコンテキストでは、PUの説明は、マクロブロックまたはマクロブロックパーティションの説明と交換され得る。例示的なタイプのビデオブロックは、コーディングツリーブロック、コーディングブロック、およびビデオデータの他のタイプのブロックを含み得る。
[0037]コード化CTUを生成するために、ビデオエンコーダ20は、コーディングツリーブロックをコーディングブロックに分割するためにCTUのコーディングツリーブロックに対して4分木区分を再帰的に実施し得、したがって「コーディングツリーユニット」という名称がある。コーディングブロックはサンプルのN×Nブロックである。CUは、ルーマサンプルアレイとCbサンプルアレイとCrサンプルアレイとを有するピクチャのルーマサンプルのコーディングブロックと、そのピクチャのクロマサンプルの2つの対応するコーディングブロックと、それらのコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。モノクロームピクチャまたは3つの別々の色平面を有するピクチャでは、CUは、単一のコーディングブロックと、そのコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。
[0038]ビデオエンコーダ20は、CUのコーディングブロックを1つまたは複数の予測ブロックに区分し得る。予測ブロックは、同じ予測が適用されるサンプルの矩形(すなわち、正方形または非正方形)ブロックである。CUの予測ユニット(PU)は、ルーマサンプルの予測ブロックと、クロマサンプルの2つの対応する予測ブロックと、それらの予測ブロックを予測するために使用されるシンタックス構造とを備え得る。モノクロームピクチャまたは3つの別々の色平面を有するピクチャでは、PUは、単一の予測ブロックと、その予測ブロックを予測するために使用されるシンタックス構造とを備え得る。ビデオエンコーダ20は、CUの各PUの予測ブロック(たとえば、ルーマ予測ブロック、Cb予測ブロック、およびCr予測ブロック)のための予測ブロック(たとえば、ルーマ予測ブロック、Cb予測ブロック、およびCr予測ブロック)を生成し得る。
[0039]ビデオエンコーダ20は、PUのための予測ブロックを生成するためにイントラ予測またはインター予測を使用し得る。ビデオエンコーダ20がPUの予測ブロックを生成するためにイントラ予測を使用する場合、ビデオエンコーダ20は、PUを含むピクチャの復号されたサンプルに基づいてPUの予測ブロックを生成し得る。
[0040]ビデオエンコーダ20がCUの1つまたは複数のPUのための予測ブロック(たとえば、ルーマ予測ブロック、Cb予測ブロック、およびCr予測ブロック)を生成した後、ビデオエンコーダ20は、CUのための1つまたは複数の残差ブロックを生成し得る。たとえば、ビデオエンコーダ20はCUのためのルーマ残差ブロックを生成し得る。CUのルーマ残差ブロック中の各サンプルは、CUの予測ルーマブロックのうちの1つ中のルーマサンプルとCUの元のルーマコーディングブロック中の対応するサンプルとの間の差分を示す。さらに、ビデオエンコーダ20はCUのためのCb残差ブロックを発生し得る。CUのCb残差ブロック中の各サンプルは、CUの予測Cbブロックのうちの1つ中のCbサンプルとCUの元のCbコーディングブロック中の対応するサンプルとの間の差分を示し得る。ビデオエンコーダ20はCUのためのCr残差ブロックをも発生し得る。CUのCr残差ブロック中の各サンプルは、CUの予測Crブロックのうちの1つ中のCrサンプルとCUの元のCrコーディングブロック中の対応するサンプルとの間の差分を示し得る。
[0041]さらに、ビデオエンコーダ20は、CUの残差ブロック(たとえば、ルーマ残差ブロック、Cb残差ブロック、およびCr残差ブロック)を1つまたは複数の変換ブロック(たとえば、ルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロック)に分解するために4分木区分を使用し得る。変換ブロックは、同じ変換が適用されるサンプルの矩形(たとえば、正方形または非正方形)ブロックである。CUの変換ユニット(TU)は、ルーマサンプルの変換ブロックと、クロマサンプルの2つの対応する変換ブロックと、変換ブロックサンプルを変換するために使用されるシンタックス構造とを備え得る。したがって、CUの各TUは、ルーマ変換ブロックとCb変換ブロックとCr変換ブロックとを有し得る。TUのルーマ変換ブロックはCUのルーマ残差ブロックのサブブロックであり得る。Cb変換ブロックはCUのCb残差ブロックのサブブロックであり得る。Cr変換ブロックはCUのCr残差ブロックのサブブロックであり得る。モノクロームピクチャまたは3つの別々の色平面を有するピクチャでは、TUは、単一の変換ブロックと、その変換ブロックのサンプルを変換するために使用されるシンタックス構造とを備え得る。
[0042]ビデオエンコーダ20は、TUのための係数ブロックを生成するためにTUの変換ブロックに1つまたは複数の変換を適用し得る。たとえば、ビデオエンコーダ20は、TUのためのルーマ係数ブロックを生成するために、TUのルーマ変換ブロックに1つまたは複数の変換を適用し得る。係数ブロックは変換係数の2次元アレイであり得る。変換係数はスカラー量であり得る。ビデオエンコーダ20は、TUのためのCb係数ブロックを発生するために、TUのCb変換ブロックに1つまたは複数の変換を適用し得る。ビデオエンコーダ20は、TUのためのCr係数ブロックを生成するためにTUのCr変換ブロックに1つまたは複数の変換を適用し得る。
[0043]係数ブロック(たとえば、ルーマ係数ブロック、Cb係数ブロックまたはCr係数ブロック)を生成した後に、ビデオエンコーダ20は、係数ブロックを量子化し得る。量子化は、概して、変換係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を行うプロセスを指す。ビデオエンコーダ20が係数ブロックを量子化した後に、ビデオエンコーダ20は、量子化変換係数を示すシンタックス要素をエントロピー符号化し得る。たとえば、ビデオエンコーダ20は、量子化変換係数を示すシンタックス要素に対してコンテキスト適応型バイナリ算術コーディング(CABAC:Context-Adaptive Binary Arithmetic Coding)を実施し得る。
[0044]ビデオエンコーダ20は、符号化ビデオデータを含むビットストリームを出力し得る。たとえば、ビットストリームは、コード化ピクチャおよび関連するデータの表現を形成するビットのシーケンスを備え得る。したがって、ビットストリームは、ビデオデータの符号化表現を備える。ビットストリームは、ネットワークアブストラクションレイヤ(NAL:network abstraction layer)ユニットのシーケンスを備え得る。NALユニットは、NALユニット中のデータのタイプの指示と、必要に応じてエミュレーション防止ビットが点在させられたローバイトシーケンスペイロード(RBSP:raw byte sequence payload)の形態でそのデータを含んでいるバイトとを含んでいる、シンタックス構造である。NALユニットの各々は、NALユニットヘッダを含み得、RBSPをカプセル化する。NALユニットヘッダは、NALユニットタイプコードを指示するシンタックス要素を含み得る。NALユニットのNALユニットヘッダによって指定されるNALユニットタイプコードは、NALユニットのタイプを示す。RBSPは、NALユニット内にカプセル化された整数個のバイトを含んでいるシンタックス構造であり得る。いくつかの事例では、RBSPはゼロビットを含む。
[0045]ビデオデコーダ30は、ビデオエンコーダ20によって生成されたビットストリームを受信し得る。さらに、ビデオデコーダ30は、ビットストリームからシンタックス要素を取得するために、ビットストリームをパースし得る。ビデオデコーダ30は、ビットストリームから取得されたシンタックス要素に少なくとも部分的に基づいてビデオデータのピクチャを再構成し得る。ビデオデータを再構成するためのプロセスは、概して、ビデオエンコーダ20によって実施されるプロセスの逆であり得る。たとえば、ビデオデコーダ30は、現在CUのPUのための予測ブロックを決定するためにPUの動きベクトルを使用し得る。さらに、ビデオデコーダ30は、現在CUのTUの係数ブロックを逆量子化し得る。ビデオデコーダ30は、現在CUのTUの変換ブロックを再構成するために、係数ブロックに対して逆変換を実施し得る。ビデオデコーダ30は、現在CUのPUのための予測ブロックのサンプルを現在CUのTUの変換ブロックの対応するサンプルに加算することによって、現在CUのコーディングブロックを再構成し得る。ピクチャの各CUのためのコーディングブロックを再構成することによって、ビデオデコーダ30はピクチャを再構成し得る。
[0046]いくつかの例では、ビデオエンコーダ20は、マージモードまたは高度動きベクトル予測(AMVP:advanced motion vector prediction)モードを使用して、インター予測を使用して符号化されたPUの動き情報をシグナリングし得る。言い換えれば、HEVCでは、動きパラメータの予測のために2つのモードを含み、一方はマージモードであり、他方はAMVPである。動き予測は、1つまたは複数の他のビデオユニットの動き情報に基づく、ビデオユニット(たとえば、PU)の動き情報の決定を備え得る。PUの動き情報は、PUの(1つまたは複数の)動きベクトルと、PUの(1つまたは複数の)参照インデックスと、予測方向とを含み得る。
[0047]ビデオエンコーダ20が、マージモードを使用して現在PUの動き情報をシグナリングするとき、ビデオエンコーダ20はマージ候補リストを生成する。言い換えれば、ビデオエンコーダ20は、動きベクトル予測子リスト構成プロセスを実施し得る。マージ候補リストは、現在PUに空間的にまたは時間的に隣接するPUの動き情報を示すマージ候補のセットを含む。すなわち、マージモードでは、動きパラメータ(たとえば、参照インデックス、動きベクトルなど)の候補リストが構成され、ここで、候補は、空間隣接ブロックおよび時間隣接ブロックからのものであり得る。
[0048]さらに、マージモードでは、ビデオエンコーダ20は、マージ候補リストからマージ候補を選択し得、選択されたマージ候補によって示された動き情報を現在PUの動き情報として使用し得る。ビデオエンコーダ20は、選択されたマージ候補のマージ候補リスト中の位置をシグナリングし得る。たとえば、ビデオエンコーダ20は、インデックスを候補リスト中に送信することによって、選択された動きベクトルパラメータをシグナリングし得る。ビデオデコーダ30は、ビットストリームから、候補リスト中へのインデックス(すなわち、候補リストインデックス)を取得し得る。さらに、ビデオデコーダ30は、同じマージ候補リストを生成し得、選択されたマージ候補の位置の指示に基づいて、選択されたマージ候補を決定し得る。ビデオデコーダ30は、次いで、現在PUのための予測ブロックを生成するために、選択されたマージ候補の動き情報を使用し得る。ビデオデコーダ30は、候補リストインデックスに少なくとも部分的に基づいて、候補リスト中の選択された候補を決定し得、ここにおいて、選択された候補は現在PUのための動きベクトルを指定する。このように、デコーダ側では、インデックスが復号されると、インデックスが指す対応するブロックのすべての動きパラメータは、現在PUによって継承され得る。
[0049]スキップモードはマージモードの特殊な場合と考えられ得る。スキップモードでは、ビデオエンコーダ20およびビデオデコーダ30は、ビデオエンコーダ20およびビデオデコーダ30がマージモードでマージ候補リストを使用するのと同じようにマージ候補リストを生成し、使用する。しかしながら、ビデオエンコーダ20が、スキップモードを使用して現在PUの動き情報をシグナリングするとき、ビデオエンコーダ20は、現在PUのための残差データをシグナリングしない。したがって、ビデオデコーダ30は、残差データを使用せずに、マージ候補リスト中の選択された候補の動き情報によって示される参照ブロックに基づいて、PUのための予測ブロックを決定し得る。
[0050]AMVPモードは、ビデオエンコーダ20が候補リストを生成し得、候補リストから候補を選択し得るという点で、マージモードと同様である。ただし、ビデオエンコーダ20がAMVPモードを使用して現在PUの参照ピクチャリスト(RefPicListX)動き情報をシグナリングするとき、ビデオエンコーダ20は、現在PUのためのRefPicListX MVPフラグをシグナリングすることに加えて、現在PUのためのRefPicListX MVDと、現在PUのためのRefPicListX参照インデックスとをシグナリングし得る。現在PUのためのRefPicListX MVPフラグは、AMVP候補リスト中の選択されたAMVP候補の位置を示し得る。現在PUのためのRefPicListX MVDは、現在PUのRefPicListX動きベクトルと選択されたAMVP候補の動きベクトルとの間の差分を示し得る。このようにして、ビデオエンコーダ20は、RefPicListX MVPフラグと、RefPicListX参照インデックス値と、RefPicListX MVDとをシグナリングすることによって、現在PUのRefPicListX動き情報をシグナリングし得る。言い換えれば、現在PUのための動きベクトルを表す、ビットストリーム中のデータは、参照インデックスと、候補リストへのインデックスと、MVDとを表すデータを含み得る。
[0051]さらに、現在PUの動き情報が、AMVPモードを使用してシグナリングされるとき、ビデオデコーダ30は、ビットストリームから、現在PUのためのMVDと、MVPフラグとを取得し得る。ビデオデコーダ30は、同じAMVP候補リストを生成し得、MVPフラグに基づいて、選択されたAMVP候補を決定し得る。ビデオデコーダ30は、MVDを、選択されたAMVP候補によって示される動きベクトルに加算することによって、現在PUの動きベクトルを復元し得る。すなわち、ビデオデコーダ30は、選択されたAMVP候補によって示される動きベクトルと、MVDとに基づいて、現在PUの動きベクトルを決定し得る。ビデオデコーダ30は、次いで、現在PUのための予測ブロックを生成するために、復元された動きベクトル、または現在PUの動きベクトルを使用し得る。
[0052]現在PUに時間的に隣接するPU(すなわち、現在PUとは異なる時間インスタンス中にあるPU)の動き情報に基づくマージ候補リストまたはAMVP候補リスト中の候補は、時間動きベクトル予測子(TMVP:temporal motion vector predictor)と呼ばれることがある。TMVPを決定するために、ビデオコーダ(たとえば、ビデオエンコーダ20および/またはビデオデコーダ30)は、現在PUとコロケートされたPUを含む参照ピクチャを最初に識別し得る。言い換えれば、ビデオコーダはコロケートピクチャを識別し得る。現在ピクチャの現在スライスがBスライス(すなわち、双方向インター予測されたPUを含むことが可能にされるスライス)である場合、ビデオエンコーダ20は、コロケートピクチャがどの参照ピクチャリストからのものであるか(たとえば、RefPicList0またはRefPicList1)を示すシンタックス要素(たとえば、collocated_from_l0_flag)をスライスヘッダ中でシグナリングし得る。ビデオデコーダ30が、コロケートピクチャを含む参照ピクチャリストを識別した後、ビデオデコーダ30は、識別された参照ピクチャリスト中のコロケート参照ピクチャを識別するために、スライスヘッダ中でシグナリングされ得る別のシンタックス要素(たとえば、collocated_ref_idx)を使用し得る。
[0053]ビデオコーダは、(たとえば、collocated_ref_idxシンタックス要素によって示されるように)参照ピクチャインデックスによって識別される参照ピクチャを検査することによって、コロケートPUを識別し得る。TMVPは、コロケートPUを含んでいるCUの右下PUの動き情報、またはこのPUを含んでいるCUの中心PU内の右下PUの動き情報のいずれかを示し得る。コロケートPUを含んでいるCUの右下PUは、PUの予測ブロックの右下サンプルのすぐ下および右のロケーションをカバーするPUであり得る。言い換えれば、TMVPは、参照ピクチャ中にあり、現在PUの右下コーナーとコロケートされたロケーションをカバーする、PUの動き情報を示し得るか、またはTMVPは、参照ピクチャ中にあり、現在PUの中心とコロケートされたロケーションをカバーする、PUの動き情報を示し得る。
[0054]上記のプロセスによって識別される動きベクトルが、マージモードまたはAMVPモードのための動き候補を生成するために使用される場合(When)、動きベクトルは、(ピクチャ順序カウント(POC:picture order count)値によって反映される)時間的ロケーションに基づいてスケーリングされ得る。たとえば、ビデオコーダは、参照ピクチャと現在ピクチャのPOC値との差分がより大きいとき、参照ピクチャと現在ピクチャのPOC値との差分がより小さいときよりも大きな量だけ動きベクトルの大きさを増加させ得る。HEVCでは、シーケンスパラメータセット(SPS)はsps_enable_temporal_mvp_flagシンタックス要素を含む。sps_enable_temporal_mvp_flagシンタックス要素は、時間動きベクトル予測子が使用され得るか否かを指定する。
[0055]リモートデスクトップ、リモートゲーミング、ワイヤレスディスプレイ、自動車インフォテインメント、クラウドコンピューティングなど、多くの適用例が、日常個人生活においてありふれたものになりつつある。これらの適用例におけるビデオコンテンツは、一般に、自然コンテンツ、テキスト、人工グラフィックスなどの組合せである。テキストおよび人工グラフィックスでは、コンテンツの1つまたは複数の領域は、(数例を挙げると、文字、アイコン、およびシンボルなどの)繰返しパターンを含み得、しばしば存在する。イントラブロックコピー(BC:block copying)は、この種類の冗長の削除を可能にし、それにより、ピクチャ内コーディング効率を潜在的に改善する、技法である。イントラBCプロセスはHEVC範囲拡張規格において採用された(これは、以後、HEVCのスクリーンコンテンツコーディング(SCC)拡張に移された)。
[0056]イントラBC技法を使用してビデオデータの現在ブロックを予測するために、ビデオコーダは、ビデオデータの現在ブロックと同じピクチャ内にあるビデオデータの予測ブロック(すなわち、前にコーディングされたビデオデータのブロック)を識別するブロックベクトルを決定し得る。一例として、ビデオエンコーダは、ビデオデータの現在ブロックにぴったり一致することがわかる、前にコーディングされたビデオデータのブロックとして予測ブロックを選択し、現在ブロックに対する予測ブロックの位置を示すブロックベクトルを生成し得る。別の例として、ビデオデコーダは、現在ブロックに対する予測ブロックの位置を示すブロックベクトルの指示を受信し得る。
[0057]イントラBCを使用してコーディングされた現在コーディングユニット(CU)の場合、ビデオエンコーダ20は、同じピクチャ中の探索領域から(「予測ブロック」と呼ばれることもある)予測信号を取得し得る。いくつかの事例では、ビデオエンコーダ20は、現在CUから変位された予測ブロックの位置を示すベクトル、たとえば、ブロックベクトル106を符号化し得る。いくつかの例では、ブロックベクトルは、現在CUの左上コーナーの位置に対する予測ブロックの左上コーナーの位置を示し得る。ブロックベクトルは、いくつかの事例では、オフセットベクトル、変位ベクトル、または動きベクトルと呼ばれることもある。ビデオエンコーダ20はまた、現在ビデオブロックのピクセル値と予測ブロック中の予測サンプルとの間の差分を示す残差データを符号化し得る。
[0058]概して、イントラBCコーディングモードは、特殊な形態のインター予測と考えられ得る。インター予測とは異なり、他のピクチャから予測ブロックを取得するのではなく(rather than)、イントラBCコーディング技法は、同じピクチャから予測ブロックを取得する。しかしながら、インター予測とは異なり、イントラBCは時間動きベクトル予測子を使用しない。これは、イントラBCでは、参照ピクチャが現在ピクチャであるからである。
[0059]HEVC SCC仕様の前のバージョン、R.Joshiら、「High Efficiency Video Coding (HEVC) Screen Content Coding: Draft 6」、ITU−T SG16WP3とISO/IEC JTC1/SC29/WG11とのジョイントコラボレーティブチームオンビデオコーディング(JCT−VC)、第23回会合、サンディエゴ、米国、2016年2月19〜26日(以下「JCTVC−W1005−v1」)では、スライスセグメントヘッダがslice_temporal_mvp_enabled_flagシンタックス要素とcollocated_ref_idxシンタックス要素とを含み得る。slice_temporal_mvp_enabled_flagの値は、スライスセグメントヘッダが、スライスセグメントヘッダのためのシンタックステーブルの以下の部分に示されているように、collocated_ref_idxシンタックス要素を含む特定のシンタックス要素を含むかどうかを示す。
[0060]JCTVC−W1005−v1のセクション7.4.7.1からの以下のテキストは、slice_temporal_mvp_enabled_flagについて説明する。
slice_temporal_mvp_enabled_flagは、時間動きベクトル予測子がインター予測のために使用され得るかどうかを指定する。slice_temporal_mvp_enabled_flagが0に等しい場合、現在ピクチャのシンタックス要素は、時間動きベクトル予測子が現在ピクチャの復号において使用されないように制約されるものとする。他の場合(slice_temporal_mvp_enabled_flagが1に等しい)、時間動きベクトル予測子は現在ピクチャの復号において使用され得る。存在しないとき、slice_temporal_mvp_enabled_flagの値は0に等しいと推論される。
currLayerIdを現在NALユニットのnuh_layer_idに等しいとする。slice_temporal_mvp_enabled_flagとTemporalIdの両方が0に等しいとき、復号順序において現在ピクチャに先行する(precedes)currLayerIdに等しいnuh_layer_idをもつ任意のピクチャからの時間動きベクトルが、復号順序において現在ピクチャに後続する(follows)任意のコード化ピクチャの復号において使用されないように、復号順序において現在ピクチャに後続する、currLayerIdに等しいnuh_layer_idをもつすべてのコード化ピクチャのためのシンタックス要素が制約されるものとする。
注1 − Iスライス中でslice_temporal_mvp_enabled_flagが0に等しいとき、それは、ピクチャの規範的復号プロセスに影響を与えず、ビットストリーム制約を表すにすぎない。
注2 − 0に等しいTemporalIdをもつスライス中でslice_temporal_mvp_enabled_flagが0に等しいとき、デコーダは、復号ピクチャバッファ中の、currLayerIdに等しいnuh_layer_idをもつすべての参照ピクチャのための「動きベクトルストレージ」を空にし得る。
[0061]JCTVC−W1005−v1の以下のテキストは、collocated_from_l0_flagシンタックス要素およびcollocated_ref_idxシンタックス要素について説明する。
1に等しいcollocated_from_l0_flagは、時間動きベクトル予測のために使用されるコロケートピクチャが参照ピクチャリスト0から導出されることを指定する。0に等しいcollocated_from_l0_flagは、時間動きベクトル予測のために使用されるコロケートピクチャが参照ピクチャリスト1から導出されることを指定する。collocated_from_l0_flagが存在しないとき、それは1に等しいと推論される。
collocated_ref_idxは、時間動きベクトル予測のために使用されるコロケートピクチャの参照インデックスを指定する。
slice_typeがPに等しいとき、またはslice_typeがBに等しく、collocated_from_l0_flagが1に等しいとき、collocated_ref_idxはリスト0中のピクチャを参照し、collocated_ref_idxの値は、両端値を含む0〜num_ref_idx_l0_active_minus1の範囲内にあるものとする。
slice_typeがBに等しく、collocated_from_l0_flagが0に等しいとき、collocated_ref_idxはリスト1中のピクチャを参照し、collocated_ref_idxの値は、両端値を含む0〜num_ref_idx_l1_active_minus1の範囲内にあるものとする。
collocated_ref_idxが存在しないとき、collocated_ref_idxの値は0に等しいと推論される。
collocated_ref_idxによって参照されるピクチャが、コード化ピクチャのすべてのスライスについて同じであるものとし、現在ピクチャ自体でないものとすることが、ビットストリーム適合の要件である。
[0062]概して、slice_temporal_mvp_enabled_flagは、時間動きベクトル予測子の使用がスライスのために可能にされるか否かを示す。時間動きベクトル予測子がスライスのために可能にされる場合、collocated_ref_idxシンタックス要素の値は、時間動きベクトル予測のために使用される参照ピクチャのためのインデックスである。
[0063]JCTVC−W1005−v1の節7.4.7.1は、以下のように、値の推論とビットストリーム適合制約とを含む、シンタックス要素collocated_ref_idxのセマンティクスを定義する。
存在しないとき、collocated_ref_idxの値は0に等しいと推論される。
collocated_ref_idxによって参照されるピクチャが、コード化ピクチャのすべてのスライスについて同じであるものとし、現在ピクチャ自体でないものとすることが、ビットストリーム適合の要件である。
[0064]このビットストリーム適合制約は、場合によっては、ビットストリームに対する(on)いくつかの(some)不要な制限を生じ、場合によっては、コーディング効率に影響を及ぼす。一例として、現在ピクチャ中のスライスが2つの時間参照ピクチャT0およびT1を使用することについて考える(ここで、T0および/またはT1は、現在ピクチャ自体であることも現在ピクチャ自体でないこともある)。現在ピクチャ中に2つのスライスがあることについても考える。JCTVC−W1005−v1によって定義されているように、slice_temporal_mvp_enabled_flagが各スライスについて値0をとる場合、collocated_ref_idxの値は各スライスについて0であると推論される。この場合、スライスのための参照ピクチャリスト(RPL:reference picture list)の以下の構成が、JCTVC−W1005−v1のビットストリーム適合制約によって禁止される。
[0065]これは、0のcollocated_ref_idxが、スライス0の場合T0を指し、スライス1の場合T1を指す(points to)からである。したがって、両方のスライスのRPL中の第1のエントリを同じになるようにするために、参照ピクチャ並べ替えまたは何らかの他の機構を使用することが必要であり得る。これは潜在的に不要であり、slice_temporal_mvp_enabled_flagの値が0である(すなわち、時間予測子がスライスのために使用されない)とき、ビットを浪費し得る。この場合、collocated_ref_idx、およびcollocated_ref_idxによって参照されるピクチャは、時間予測子が使用されないので、再構成されたピクチャに対する影響を有さず、したがって、そのような時間予測子を含んでいる参照ピクチャへのインデックスは、それらの特定のスライスを必要としない。
[0066]JCTVC−W1005−v1のビットストリーム制約が不要であり得る別の例は、少なくとも1つのIスライスがピクチャ中に存在するときである。HEVCのいくつかの例では、Iスライスは、Iスライスがイントラ予測を使用してコーディングされるにすぎないので、参照としての現在ピクチャの使用を許可しないことに留意されたい。
[0067]同じく、この場合、collocated_ref_idxの値は、0であると推論されることになる。Iスライスの場合、参照ピクチャリストがないので、collocated_ref_idxによって指されるピクチャは定義さえされず、もちろん、使用されない。したがって、この例では、ビットストリーム適合制約の適合検査は不可能である。
[0068]JCTVC−W1005−v1のビットストリーム制約が不要であり得る別の例は、少なくとも1つのIスライス(イントラスライスタイプ)が存在し、以下のように、slice_temporal_mvp_enabled_flagが1に等しい(すなわち、時間予測子が可能にされる)ピクチャの場合である。
[0069]この場合、(たとえば、collocated_ref_idxの値によって示されるような)コロケートピクチャは、Pスライスタイプ(Pインタースライスタイプ)の場合、導出され、Iスライスタイプの場合、未定義であり、したがって、適合検査を実施することが可能でない。Pスライスタイプは、単方向インター予測および/またはイントラ予測を使用してコーディングされ得るスライスである。Bスライスタイプ(Bインタースライスタイプ)は、単方向インター予測、双方向インター予測、および/またはイントラ予測を使用してコーディングされ得るスライスである。
[0070]概して、JCTVC−W1005−v1の例を含む、HEVCのためのいくつかの例示的な提案における現在の適合検査の場合、ビットストリームが常に少なくとも1つのIスライスを有するので、すべてのビットストリームが適合するとは限らない。したがって、コロケートピクチャ適合検査は、JCTVC−W1005−v1の制約を使用して実施することが可能でない。
[0071]上記に鑑みて、本開示は、シンタックス要素のそれらのインスタンスが復号プロセスに影響を与える場合のみの、シンタックス要素(およびシンタックス要素から導出された変数)のためのビットストリーム適合検査について説明する。変数およびシンタックス要素が復号結果に影響を及ぼさない場合、ビットストリーム適合検査は実施されない。
[0072]たとえば、コロケート参照ピクチャインデックスシンタックス要素適合検査(たとえば、collocated_ref_idxシンタックス要素に対するビットストリーム適合検査)の場合、ビデオエンコーダ20および/またはビデオデコーダ30は、パラメータ(たとえば、collocated_ref_idxシンタックス要素)が復号プロセスに影響を与えないかまたは適合検査からの復号出力を変更しない場合を除外するように構成され得る。すなわち、ビデオエンコーダ20および/またはビデオデコーダ30は、以下で定義される状況においてのみ、適合検査を実施し得る。
[0073]一例では、本開示は、以下のように、slice_temporal_mvp_enabled_flagが1に等しいとき(すなわち、時間動きベクトル予測子がスライスのために可能にされるとき)のみ、ビットストリーム適合制約が適用されるように、ビットストリーム適合制約を変更することを提案する。
slice_temporal_mvp_enabled_flagが1に等しいとき、collocated_ref_idxによって参照されるピクチャが、コード化ピクチャのすべてのスライスについて同じであるものとし、collocated_ref_idxによって参照されるピクチャが現在ピクチャ自体でないものとすることが、ビットストリーム適合の要件である。
[0074]この例では、ビデオエンコーダ20および/またはビデオデコーダ30は、時間動きベクトル予測子がスライスのために可能にされるときのみ、collocated_ref_idxの値に対してビットストリーム適合検査を実施し得る。ビデオエンコーダ20および/またはビデオデコーダ30は、時間動きベクトル予測子がスライスのために可能にされないとき、適合検査を実施しない。ビデオエンコーダ20および/またはビデオデコーダ30は、特定のスライスのためのcollocated_ref_idxの値がすべての他のスライスのためのcollocated_ref_idxと同じピクチャを指すことを検証するために、ビットストリーム適合検査を実施し得る。参照ピクチャリスト管理プロセスにより、collocated_ref_idxは、異なるスライスについて異なる値を有し得るが、依然として、同じ参照ピクチャを指し得ることに留意されたい。すなわち、異なるスライスは、異なる順序で参照ピクチャにインデックス値を割り当て得る。ビットストリーム適合検査はまた、collocated_ref_idxの値が現在ピクチャ自体を参照していないことを検証する。
[0075]ビデオエンコーダ20は、各スライスヘッダのためのcollocated_ref_idxの値を生成した後に、ビットストリーム適合検査を実施するように構成され得る。言い換えれば、ビデオエンコーダ20は、ビデオエンコーダ20がcollocated_ref_idxに割り当てた値が、あらかじめ定義されたビットストリーム適合の基準を満たすことを検証するために、ビットストリーム適合検査を実施するように構成され得る。そのようなプロセスは、上記で定義されたビットストリーム適合制約のために、または以下で説明される例のいずれかのために使用され得る。
[0076]ビデオデコーダ30は、受信された符号化ビデオビットストリームに対してビットストリーム適合検査を実施するように構成され得る。ビデオデコーダ30が、(受信されたのか推論されたのかにかかわらず(whether received or inferred))collocated_ref_idxシンタックス要素の値を決定するためにスライスヘッダを受信およびパースした後に、ビデオデコーダ30は、値が、あらかじめ定義された適合制約を満たす(たとえば、ピクチャのためのすべてのcollocated_ref_idxシンタックス要素が同じ参照ピクチャを指す)ことを検証するために、特定のスライスのためのcollocated_ref_idxシンタックス要素の値を同じピクチャの他のスライスのためのcollocated_ref_idxシンタックス要素の値と比較し得る。ビデオデコーダ30が、ビットストリームが適合検査に合格したと決定した場合、ビデオデコーダ30は、通常通り復号に進み得る。ビデオデコーダ30が、ビットストリームが適合検査に合格しないと決定した場合、ビデオデコーダ30はエラーをロギングし得る。ビデオデコーダ30は、ビットストリーム適合検査が満たされない場合でも、依然として、ビットストリームを復号することを試み得る。
[0077]別の例では、本開示は、ビデオエンコーダ20および/またはビデオデコーダ30が、以下のように、スライスタイプ(たとえば、スライスタイプシンタックス要素の値)とslice_temporal_mvp_enabled_flagの値の両方を考慮に入れるように、ビットストリーム適合制約を変更することを提案する。
collocated_ref_idxによって参照されるピクチャが、slice_temporal_mvp_enabled_flagの値が1に等しく、slice_typeが2に等しくないコード化ピクチャのすべてのスライスについて同じであるものとすることが、ビットストリーム適合の要件である。さらに、slice_temporal_mvp_enabled_flagの値が1に等しいとき、collocated_ref_idxによって参照されるピクチャは、現在ピクチャ自体でないものとする。
[0078]この例では、ビデオエンコーダ20および/またはビデオデコーダ30は、時間動きベクトル予測子がスライスのために可能にされるとき、およびスライスタイプがイントラスライスタイプでないときのみ、collocated_ref_idxの値に対してビットストリーム適合検査を実施し得る。ビデオエンコーダ20および/またはビデオデコーダ30は、時間動きベクトル予測子がスライスのために可能にされないとき、またはスライスタイプがイントラスライスタイプであるとき、適合検査を実施しない。JCTVC−W1005−v1において定義されているように、2の値を有するシンタックス要素slice_typeはイントラスライスタイプ(Iスライス)を示す。したがって、ビデオエンコーダ20は、collocated_ref_idxが、スライスタイプPまたはB(たとえば、非イントラ)のものであり、slice_temporal_mvp_enabled_flagの値が1に等しい(すなわち、時間動きベクトル予測子が有効にされた)スライスのためにのみ、同じピクチャを参照するものとするという制約を課する。上記で説明されたように、ビデオデコーダ30は、受信されたビデオ符号化ビットストリームに対して同じ適合検査を実施し得る。
[0079]slice_temporal_mvp_enabled_flagの値が0に等しい(すなわち、時間動きベクトル予測子が有効にされない)とき、collocated_ref_idxによって参照されるピクチャは、再構成されたピクチャに影響を及ぼさない。したがって、collocated_ref_idxによって参照されるピクチャは、slice_temporal_mvp_enabled_flagの値が1に等しいときのみ、現在ピクチャでないものとする。
[0080]上記で説明されたように、JCTVC−W1005−v1では、collocated_ref_idxのセマンティクスにおける節7.4.7.1では、以下のように示すビットストリーム適合制約がある。
collocated_ref_idxによって参照されるピクチャが、コード化ピクチャのすべてのスライスについて同じであるものとし、現在ピクチャ自体でないものとすることが、ビットストリーム適合の要件である。
[0081]この制約は、(最終)参照ピクチャリスト(RPL)中に現在ピクチャのみをもつスライスがある場合、slice_temporal_mvp_enabled_flagが0であるものとすることを暗示する。ピクチャ中のすべてのスライスがslice_temporal_mvp_enabled_flagの同じ値を有することもビットストリーム適合要件であるので、それは、(最終)RPL中に現在ピクチャのみをもつ少なくとも1つのスライスがある場合、ピクチャのすべてのスライスについて、slice_temporal_mvp_enabled_flagの値が0であるものとすることを暗示する。上記の記述は、本開示の前の例において明記されているように、ビットストリーム適合制約が変更される場合でも、真である。
[0082]HEVCのいくつかの例では、ピクチャのためのTemporalIdが0である場合、slice_temporal_mvp_enabled_flagのセマンティクスに従って、同じレイヤ中の復号順序において後のピクチャは、復号順序において現在ピクチャの前のピクチャからの時間動きベクトル予測子を使用しないものとする。これは、デコーダ(たとえば、ビデオデコーダ30)が復号順序において以前のピクチャの動きベクトル情報をフラッシュする(flush)ことを可能にし得る。以前は(HEVC規格の以前のバージョンによれば)、ビデオエンコーダは、誤り耐性(resilience)目的で動きベクトル情報のフラッシングを有効にすべきかどうかを制御し、コーディング効率と誤り耐性との間の最適トレードオフを行うことができた。JCTVC−W1005−v1の提案される技法では、このフレキシビリティは、現在ピクチャが(最終)参照ピクチャリスト(RPL)中の現在ピクチャのみをもつ少なくとも1つのスライスを含んでいるときはいつでも失われる。そのフレキシビリティを保つために、ビデオエンコーダは、現在ピクチャ以外の何らかのピクチャをRPL中に含めなければならないことになる。現在ピクチャ自体を指すアクティブ参照インデックスのみを有することが望ましい場合、RPL中に何らかの(some)他のピクチャを追加することは、ブロックレベルにおいて参照インデックスのシグナリングを不必要に必要とし(require)、したがって、著しいコーディングオーバーヘッドを生じることになる。
[0083]上記に鑑みて、本開示は以下の追加の技法を提案する。JCTVC−W1005−v1の節7.4.7.1中のビットストリーム適合制約は、collocated_ref_idxのセマンティクスにおいて、以下のように変更され得る。以下のテキストは、JCTVC−W1005−v1のHEVC SCC仕様に対する例示的な変更、および/または上記で説明された技法のうちのいくつかに対する例示的な変更を示す。挿入されるテキストは、<insert>タグと</insert>タグとの間に示される。削除されるテキストは、<delete>タグと</delete>タグとの間に示される。
<insert>slice_temporal_mvp_enabled_flagが1に等しいとき、</insert>collocated_ref_idxによって参照されるピクチャが、コード化ピクチャのすべてのスライスについて同じであるものとする<delete>および現在ピクチャ自体でないものとする</delete>ことが、ビットストリーム適合の要件である。
[0084]別の例では、上記で説明された変更ビットストリーム適合制約は、以下のように変更され得る。
collocated_ref_idxによって参照されるピクチャが、slice_temporal_mvp_enabled_flagの値が1に等しく、slice_typeが2に等しくないコード化ピクチャのすべてのスライスについて同じであるものとすることが、ビットストリーム適合の要件である<delete>さらに、slice_temporal_mvp_enabled_flagの値が1に等しいとき、collocated_ref_idxによって参照されるピクチャは、現在ピクチャ自体でないものとする</delete>。
[0085]さらに、collocated_ref_idxが現在ピクチャを参照する場合、時間動きベクトル予測候補は、利用不可能として扱われる。これは、JCTVC−W1005−v1に対する以下の変更によって達成され得る。
8.5.3.2.8 時間ルーマ動きベクトル予測のための導出プロセス
このプロセスへの入力は以下の通りである。
− 現在ピクチャの左上ルーマサンプルに対する、現在のルーマ予測ブロックの左上サンプルを指定するルーマロケーション(xPb,yPb)、
− ルーマ予測ブロックの幅および高さを指定する2つの変数nPbWおよびnPbH、
− Xが0または1である、参照インデックスrefIdxLX。
このプロセスの出力は、以下の通りである。
− 動きベクトル予測mvLXCol、
− 利用可能性フラグavailableFlagLXCol。
変数currPbは、ルーマロケーション(xPb,yPb)における現在ルーマ予測ブロックを指定する。
変数mvLXColおよびavailableFlagLXColは、以下のように導出される。
− slice_temporal_mvp_enabled_flagが0に等しい場合、mvLXColの両方の成分は0に等しく設定され、availableFlagLXColは0に等しく設定される。
<insert>そうではなく、参照ピクチャが現在ピクチャである場合、mvLXColの両方の成分は0に等しく設定され、availableFlagLXColは0に等しく設定される</insert>。
− 他の場合(slice_temporal_mvp_enabled_flagが1に等しい)、以下の順序付きステップが適用される。
・・・
[0086]他の例では、コロケートピクチャのための適合検査は、以下のように変更され得る。以下の例は、任意の組合せで互いに実施され得る。
[0087]一例では、collocated_ref_idxシンタックス要素の定義は、以下を具陳するようにJCTVC−W1005−v1において変更され得る。<insert>存在せず、slice_typeが2に等しくないとき、collocated_ref_idxの値は0に等しいと推論される。</insert>スライスタイプがIである(すなわち、slice_typeが2に等しい)とき、ビデオエンコーダ20および/またはビデオデコーダ30はコロケート参照インデックスを推論せず、適合検査は、コロケート参照インデックスのために実施されない。言い換えれば、ビデオエンコーダ20および/またはビデオデコーダ30は、スライスのためのスライスタイプがイントラスライスでないとき、適合検査を実施するように構成される。
[0088]本開示の別の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、コロケートピクチャが復号プロセスにおいて必要とされるかまたは関係するときのみ、collocated_ref_idxシンタックス要素の値のための適合検査を実施するように構成される。ビデオエンコーダ20および/またはビデオデコーダ30は、collocated_ref_idxシンタックス要素が適合検査に合格することが可能であるような方法で、スライスのためのcollocated_ref_idxシンタックス要素の値を導出するように構成される。たたとえば、ビデオエンコーダ20および/またはビデオデコーダ30は、ピクチャ中のIスライスについて導出されるあるコロケートピクチャを導出するように構成され得る。そのようなコロケートピクチャはIスライスのために必要とされないが、それはすべてのスライスについて同じであり、したがって、適合検査が満たされる。コロケートピクチャは、slice_temporal_mvp_enabled_flagの値にかかわらず、Iスライスのために必要とされず、slice_temporal_mvp_enabled_flagが0に等しい(すなわち、時間動きベクトル予測子が可能にされない)とき、非Iスライスのために必要とされない。
[0089]本開示の別の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、slice_temporal_mvp_enabled_flagが1に等しく(すなわち、時間動きベクトル予測子が有効にされ)、ピクチャのスライスのスライスタイプがIスライスタイプ以外である(たとえば、slice_typeが2に等しくない)場合のみ、collocated_ref_idxに対して適合検査を実施するように構成され得る。
[0090]本開示の別の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、slice_temporal_mvp_enabled_flagが1に等しく(すなわち、時間動きベクトル予測子が有効にされ)、ピクチャのスライスのスライスタイプがIスライスタイプ以外であり(たとえば、slice_typeが2に等しくなく)、スライスが現在ピクチャ以外の参照ピクチャを有する場合のみ、collocated_ref_idxに対して適合検査を実施するように構成され得る。現在ピクチャが唯一の参照ピクチャである場合、それは、slice_temporal_mvp_enabled_flagの値にかかわらず、コロケートピクチャであり得ない。この場合、ビデオエンコーダ20および/またはビデオデコーダ30は、そのようなスライスのためのcollocated_ref_idxに対して適合検査を実施しないように構成され得る。
[0091]本開示の別の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、コロケートピクチャがスライスの復号プロセスにおいて使用されるか、またはスライス復号出力において影響を与える場合のみ、collocated_ref_idxに対して適合検査を実施するように構成され得る。ビデオエンコーダ20および/またはビデオデコーダ30が、コロケートピクチャを導出するが、スライス中のコロケートピクチャを使用しないように構成された場合、ビデオエンコーダ20および/またはビデオデコーダ30は、そのようなピクチャのための参照インデックス(たとえば、collocated_ref_idx)のための適合検査をスキップするように構成され得る。
[0092]本開示の別の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、導出されたコロケートピクチャのためにのみcollocated_ref_idxに対して適合検査を実施するように構成され得る。ビデオエンコーダ20および/またはビデオデコーダ30がいくつかのスライスのためのコロケートピクチャを導出しない場合、ビデオエンコーダ20および/またはビデオデコーダ30は、collocated_ref_idxのための適合検査を実施し(perform)ないことがある。
[0093]本開示の別の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、slice_temporal_mvp_enabled_flagが1に等しいとき(すなわち、時間動きベクトル予測子が有効にされたとき)、そのスライスのためにのみcollocated_ref_idxに対して適合検査を実施するように構成され得る。
[0094]JCTVC−W1005−v1では、ピクチャ内のいくつかのスライスは、現在ピクチャのみを参照として使用し得るが、同じピクチャ中の他のスライスは、時間ピクチャならびに現在ピクチャを参照として使用し得る。現在ピクチャ以外の(1つまたは複数の)ピクチャを参照として使用するスライスの場合、(コーディング効率観点から)時間動きベクトル予測(mvp)候補(たとえば、時間動きベクトル予測子)の使用を可能にすることが望ましいことがある。これは、シンタックス要素slice_temporal_mvp_enabled_flagが、そのようなスライスの場合、1に等しい値(すなわち、時間動きベクトル予測子が有効にされた)を有すべきであることを暗示する。JCTVC−W1005−v1によれば、slice_temporal_mvp_enabled_flagの値がコード化ピクチャのすべてのスライスセグメントヘッダについて同じであるものとすることが、規範的要件(normative requirement)である。したがって、コード化ピクチャの1つのスライスが時間mvp候補を使用する場合、slice_temporal_mvp_enabled_flagは、そのコード化ピクチャのすべてのスライスセグメントヘッダについて値1を有すべきである。
[0095]一方、JCTVC−W1005−v1は、collocated_ref_idxが、時間動きベクトル予測のために使用されるコロケートピクチャの参照インデックスを示すことを明記している。上記で説明されたように、JCTVC−W1005−v1は、collocated_ref_idxによって参照されるピクチャが、コード化ピクチャのすべてのスライスについて同じであるものとし、現在ピクチャ自体でないものとすることが、ビットストリーム適合の要件であることを示す。
[0096]slice_temporal_mvp_enabled_flagおよびcollocated_ref_idxシンタックス要素に対する制約に基づいて、JCTVC−W1005−v1は、スライスのうちの1つが現在ピクチャのみを参照として有する場合、そのスライスのための時間動きベクトル予測が無効にされることか、または等価的に、そのスライスのためのslice_temporal_mvp_enabled_flagが値0を有することが規範的要件であることを暗示する。これは、slice_temporal_mvp_enabled_flagがそのピクチャのすべてのスライスセグメントヘッダについて値0を有することを暗示する。
[0097]したがって、JCTVC−W1005−v1によれば、ピクチャのスライスのうちの1つが現在ピクチャのみを参照として使用する場合、時間動きベクトル予測がそのピクチャ中のすべてのスライスについて無効にされることが規範的要件である。すなわち、slice_temporal_mvp_enabled_flagは、そのピクチャのすべてのスライスセグメントヘッダについて値0を有する。上述のように、これは、コーディング効率の損失につながり得る。
[0098]コーディング効率観点からより効率的でない代替ソリューションは、現在ピクチャのみを参照として使用するスライスについて、JCTVC−W1005−v1の現在の制約を満たすために追加の時間参照が導入されることである。ビデオエンコーダは、現在の仕様の場合のように任意の動きベクトルをシグナリングする能力に影響を及ぼすことなしに、追加の時間参照の使用を回避し得る。しかしながら、このシナリオでは、参照インデックスは、推論されるのではなく、シグナリングされる必要があり、それにより、コーディング効率の損失につながる。
[0099]本開示の技法は、時間参照ピクチャを使用するスライスのための時間動きベクトル予測の使用を有効にする。したがって、本開示は、時間MVPの使用がスライスごとに(on a slice-by-slice basis)決定され得ることと、ビデオエンコーダ20および/またはビデオデコーダ30が、同じピクチャの異なるスライスについて別様に(differently)時間MVPを使用するための決定を行い得ることとについて説明する。さらに、本開示は、1に等しいslice_temporal_mvp_enabled_flagを有する同じピクチャ内のスライスについて、collocated_ref_idxが同じであるものとすることについて説明する。slice_temporal_mvp_enabled_flagとcollocated_ref_idxとに対する規範的要件は、以下で説明されるように変更される。
[0100]たとえば、ビデオエンコーダ20はビデオデータを符号化し得る。この例では、ビデオエンコーダ20はビデオデータのピクチャの第1のスライスを符号化し得る。さらに、この例では、ビデオエンコーダ20は、同じピクチャの第2のスライスを符号化し得る。第1のスライスを符号化することの一部として、ビデオエンコーダ20は、第1のスライスのためのスライスヘッダ中に、時間動きベクトル予測が第1のスライスについて有効にされたことを示すシンタックス要素を含め得る。第2のスライスを符号化することの一部として、ビデオエンコーダ20は、第2のスライスのためのスライスヘッダ中に、時間動きベクトル予測が第2のスライスについて無効にされたことを示すシンタックス要素を含め得る。(スライスセグメントヘッダはスライスヘッダとも呼ばれ得る。)したがって、ビデオエンコーダ20は、ピクチャのスライスのスライスヘッダ中に、時間動きベクトル予測がスライスのいくつかについて有効にされるが、ピクチャのスライスの他のスライスについて有効にされないことを示すシンタックス要素を含め得る。本開示のいくつかの例では、時間動きベクトル予測が有効にされたピクチャの各スライスについて、ビデオエンコーダ20は、ビットストリーム中に、同じ参照ピクチャが時間動きベクトル予測のために使用されることを示すシンタックス要素(たとえば、collocated_ref_idx)を含める。
[0101]ビデオデコーダ30は、符号化ビデオデータを復号し得る。符号化ビデオデータを復号することの一部として、ビデオデコーダ30は、ビデオデータのピクチャの第1のスライスのスライスヘッダから、時間動きベクトル予測が第1のスライスについて有効にされたことを示すシンタックス要素(たとえば、slice_temporal_mvp_enabled_flag)を取得し得る。さらに、この例では、ビデオデコーダ30は、同じピクチャの第2のスライスのスライスヘッダから、時間動きベクトル予測がそのスライスについて無効にされたことを示すシンタックス要素(たとえば、slice_temporal_mvp_enabled_flag)を取得し得る。
[0102]時間動きベクトル予測がスライスについて有効にされたとき、ビデオコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)は、現在ピクチャのスライスの現在ブロック(たとえば、PU)の動きパラメータ(たとえば、1つまたは複数動きベクトルおよび参照インデックス)を決定するために時間動きベクトル予測を使用し得る。たとえば、ビデオコーダは、時間参照ピクチャ(たとえば、現在ピクチャとは異なるピクチャ順序カウント(POC)値を有するピクチャ、または現在ピクチャとは異なるアクセスユニット中のピクチャ)中のブロックの動きパラメータを指定する候補(たとえば、マージモードまたはAMVP候補)を決定し得る。上記で説明されたように、ビデオコーダは、現在ブロックの動きパラメータを決定するために、動き予測子リスト(たとえば、マージまたはAMVP候補リスト)中の選択された候補を使用し得る。ビデオコーダは、現在ブロックのための予測ブロックを決定するために現在ブロックの動きパラメータを使用し得る。現在ブロックを符号化することの一部として、ビデオエンコーダ20は、残差データを生成するために予測ブロックを使用し得る。本開示中の他の場所で説明されるように、ビデオエンコーダ20は、ビットストリーム中に、残差データに基づくデータを含め得る。現在ブロックを復号することの一部として、ビデオデコーダ30は、現在ブロックのサンプルを再構成するために予測ブロックと残差データとを使用し得る。このようにして、時間動きベクトル予測がスライスについて有効にされたことを示すシンタックス要素に基づいて、ビデオデコーダ30は、スライスのブロックを復号するために時間動きベクトル予測を使用し得る。時間動きベクトル予測がスライスについて有効にされない(すなわち、無効にされた)とき、ビデオコーダは、スライスの任意のブロックをコーディングする(すなわち、符号化または復号する)ために時間動きベクトル予測を使用しないことがある。
[0103]例1
[0104]以下のテキストは、本開示の1つまたは複数の技法による、JCTVC−W1005−v1に対する例示的な変更を示す。挿入されるテキストは、<insert>タグと</insert>タグとの間に示される。削除されるテキストは、<delete>タグと</delete>タグとの間に示される。
7.4.7.1 一般的なスライスセグメントヘッダセマンティクス
存在するとき、スライスセグメントヘッダシンタックス要素slice_pic_parameter_set_id、pic_output_flag、no_output_of_prior_pics_flag、slice_pic_order_cnt_lsb、short_term_ref_pic_set_sps_flag、short_term_ref_pic_set_idx、<insert>および</insert>num_long_term_sps、num_long_term_pics<delete>、およびslice_temporal_mvp_enabled_flag</delete>の値は、コード化ピクチャのすべてのスライスセグメントヘッダ中で同じであるものとする。存在するとき、スライスセグメントヘッダシンタックス要素lt_idx_sps[i]、poc_lsb_lt[i]、used_by_curr_pic_lt_flag[i]、delta_poc_msb_present_flag[i]、およびdelta_poc_msb_cycle_lt[i]の値は、iの各可能な値についてコード化ピクチャのすべてのスライスセグメントヘッダ中で同じであるものとする。
・・・
<insert>スライスが現在ピクチャのみを参照として含んでいる場合、slice_temporal_mvp_enabled_flagが0に等しいものとすることが、ビットストリーム適合の要件である。</insert>
・・・
collocated_ref_idxのセマンティクスにおいて、
collocated_ref_idxによって参照されるピクチャが、<insert>1に等しいslice_temporal_mvp_enabled_flagを有する、</insert>コード化ピクチャのすべてのスライスについて同じであるものとし、現在ピクチャ自体でないものとすることが、ビットストリーム適合の要件である。
[0105] [仕様抜粋の終了]
[0106] これは、スライスが現在ピクチャのみを参照として含んでいる場合以外は、スライスtemporal_mvp_enabled_flagの値に対する制限がないという点で、最も一般的な場合である。
[0107]例2
[0108]この第2の例では、追加の制約がシンタックス要素slice_temporal_mvp_enabled_flagに課される。
7.4.7.1 一般的なスライスセグメントヘッダセマンティクス
存在するとき、スライスセグメントヘッダシンタックス要素slice_pic_parameter_set_id、pic_output_flag、no_output_of_prior_pics_flag、slice_pic_order_cnt_lsb、short_term_ref_pic_set_sps_flag、short_term_ref_pic_set_idx、<insert>および</insert>num_long_term_sps、num_long_term_pics<delete>、およびslice_temporal_mvp_enabled_flag</delete>の値は、コード化ピクチャのすべてのスライスセグメントヘッダ中で同じであるものとする。存在するとき、スライスセグメントヘッダシンタックス要素lt_idx_sps[i]、poc_lsb_lt[i]、used_by_curr_pic_lt_flag[i]、delta_poc_msb_present_flag[i]およびdelta_poc_msb_cycle_lt[i]の値は、iの各可能な値についてコード化ピクチャのすべてのスライスセグメントヘッダ中で同じであるものとする。
<insert>存在するとき、スライスセグメントヘッダシンタックス要素slice_temporal_mvp_enabled_flagの値は、現在ピクチャ以外の参照ピクチャを使用するコード化ピクチャのスライスのすべてのスライスセグメントヘッダ中で同じであるものとする。</insert>
<insert>スライスが現在ピクチャのみを参照として含んでいる場合、slice_temporal_mvp_enabled_flagが0に等しいものとすることが、ビットストリーム適合の要件である。</insert>
・・・
collocated_ref_idxのセマンティクスにおいて、
collocated_ref_idxによって参照されるピクチャが、<insert>1に等しいslice_temporal_mvp_enabled_flagを有する、</insert>コード化ピクチャのすべてのスライスについて同じであるものとし、現在ピクチャ自体でないものとすることが、ビットストリーム適合の要件である。
[0109]例3
[0110]いくつかの例では、前の実施形態において言及された制約は、以下のように変更され得る。
<insert>存在するとき、スライスセグメントヘッダシンタックス要素slice_temporal_mvp_enabled_flagの値は、コード化ピクチャの、Iスライスタイプでないスライスのすべてのスライスセグメントヘッダ中で同じであるものとする。</insert>
[0111]別の代替例では、
<insert>存在するとき、スライスセグメントヘッダシンタックス要素slice_temporal_mvp_enabled_flagの値は、slice_temporal_mvp_enabled_flagが明示的にシグナリングされる(推論されない)コード化ピクチャのスライスのすべてのスライスセグメントヘッダ中で同じであるものとする。</insert>
[0112]例4
[0113]代替的に、シンタックス要素slice_temporal_mvp_enabled_flagは、スライスが現在ピクチャのみを参照として含んでいるとき、シグナリングされない。一例として、スライスが、現在ピクチャでない少なくとも1つの参照ピクチャを含んでいる場合、変数sliceContainsTemporalRefPicは1に等しくなるように設定される。
[0114]いくつかの事例では、本開示の例の2つまたはそれ以上は、一緒に使用され得る。他の事例では、本開示の例は、別々に使用される。
[0115]図2は、本開示で説明される適合制約検査技法の任意の組合せを実装し得る例示的なビデオエンコーダを示すブロック図である。ビデオエンコーダ20は、ビデオスライス内のビデオブロックのイントラコーディングおよびインターコーディングを実施し得る。イントラコーディングは、所与のビデオフレームまたはピクチャ内のビデオの空間冗長性を低減または除去するために空間予測に依拠する。インターコーディングは、ビデオシーケンスの隣接フレームまたはピクチャ内のビデオの冗長性を低減または除去するために時間予測またはビュー間予測に依拠する。イントラモード(Iモード)は、いくつかの空間ベースの圧縮モードのいずれかを指すことがある。単方向予測(Pモード)または双予測(Bモード)などのインターモードは、いくつかの時間ベースの圧縮モードのいずれかに含み得る。ビデオエンコーダ20はまた、本明細書で説明されるように、同じピクチャ内のビデオデータの予測ブロックからのビデオデータのブロックのイントラ予測のためのモード、たとえば、イントラBCモードを利用するように構成され得る。
[0116]図2の例では、ビデオエンコーダ20は、区分ユニット35と、予測処理ユニット41と、再構成領域メモリ64と、フィルタ処理ユニット66と、参照ピクチャメモリ68と、残差生成ユニット50と、変換処理ユニット52と、量子化処理ユニット54と、エントロピー符号化ユニット56とを含む。予測処理ユニット41は、動き推定ユニット42と、動き補償ユニット44と、イントラ予測処理ユニット46と、イントラブロックコピー(イントラBC)ユニット48とを含む。ビデオブロック再構成のために、ビデオエンコーダ20はまた、逆量子化処理ユニット58と、逆変換処理ユニット60と、加算器62とを含む。
[0117]様々な例では、ビデオエンコーダ20のユニットは、本開示の技法を実施する役割を担い得る。また、いくつかの例では、本開示の技法は、ビデオエンコーダ20のユニットのうちの1つまたは複数の中で分割され得る。たとえば、予測処理ユニット41は、本開示の技法を、単独で、または、動き推定ユニット42、動き補償ユニット44、イントラ予測処理ユニット46、再構成領域メモリ64、およびエントロピー符号化ユニット56など、ビデオエンコーダの他のユニットと組み合わせて実施し得る。
[0118]上記で説明されたように、ビデオエンコーダ20は、各スライスヘッダのためのcollocated_ref_idxの値を生成した後に、ビットストリーム適合検査を実施するように構成され得る。言い換えれば、ビデオエンコーダ20は、ビデオエンコーダ20がcollocated_ref_idxに割り当てた値が、あらかじめ定義されたビットストリーム適合の基準を満たすことを検証するために、ビットストリーム適合検査を実施するように構成され得る。そのようなプロセスは、上記で定義されたビットストリーム適合制約のために使用され得る。
[0119]一例では、ビデオエンコーダ20は、ビデオデータの現在ピクチャを符号化し、現在ピクチャの1つまたは複数のスライスのためのそれぞれのコロケート参照ピクチャインデックスシンタックス要素を生成するように構成され得る。ビデオエンコーダ20は、イントラスライスタイプを有さず、時間動きベクトル予測子が有効にされた、1つまたは複数のスライスのうちのスライスのためにのみビットストリーム適合検査を実施するようにさらに構成され得る。ビットストリーム適合検査は、各それぞれのコロケート参照ピクチャインデックスシンタックス要素が同じピクチャを指し、現在ピクチャ自体を参照しないように、それぞれのコロケート参照ピクチャインデックスシンタックス要素の値を制約する。
[0120]図2に示されているように、ビデオエンコーダ20はビデオデータを受信し、区分ユニット35はビデオデータをビデオブロックに区分する。この区分は、たとえば、LCUおよびCUの4分木構造に応じて、スライス、タイル、または他のより大きいユニットへの区分、ならびにビデオブロック区分をも含み得る。ビデオエンコーダ20は、概して、符号化されるべきビデオスライス内のビデオブロックを符号化する構成要素を示している。スライスは、複数のビデオブロックに(および、場合によっては、タイルと呼ばれるビデオブロックのセットに)分割され得る。
[0121]予測処理ユニット41は、レートひずみ結果(たとえば、コーディングビットレートおよびひずみレベル)に基づいて現在ビデオブロックのために、本開示で説明される技法による、複数のイントラコーディングモードのうちの1つ、複数のインターコーディングモードのうちの1つ、またはイントラBCモードなど、複数の可能なコーディングモードのうちの1つを選択し得る。予測処理ユニット41は、得られた予測ブロックを、残差ブロックデータを生成するために残差生成ユニット50に与え、たとえば、参照ピクチャとして、他のビデオブロックの予測において使用するための現在ブロックを再構成するために加算器62に与え得る。
[0122]予測処理ユニット41内のイントラ予測処理ユニット46は、空間圧縮を行うために、コーディングされるべき現在ブロックと同じピクチャまたはスライス中の1つまたは複数の隣接ブロックに対して現在ビデオブロックのイントラ予測コーディングを実施し得る。予測処理ユニット41内の動き推定ユニット42および動き補償ユニット44は、たとえば、時間圧縮を行うために、1つまたは複数の参照ピクチャ中の1つまたは複数の予測ブロックに対して現在ビデオブロックのインター予測コーディングを実施する。
[0123]動き推定ユニット42は、ビデオシーケンスの所定のパターンに従ってビデオスライスのためのインター予測モードを決定するように構成され得る。動き推定ユニット42と動き補償ユニット44とは、高度に統合され得るが、概念的な目的のために別個に示されている。動き推定ユニット42によって実施される動き推定は、ビデオブロックの動きを推定する動きベクトルを発生するプロセスである。動きベクトルは、たとえば、参照ピクチャ内の予測ブロックに対する、現在ビデオピクチャ内のビデオブロックのPUの変位を示し得る。同様に、本開示の技法によるイントラBCのために使用されるブロックベクトルは、同じフレームまたはピクチャ内の予測ブロックに対する現在ビデオフレームまたはピクチャ内のビデオブロックのPUの変位を示す。イントラBCユニット48は、インター予測のための動き推定ユニット42による動きベクトルの決定と同様の様式で、イントラBCコーディングのためのベクトル、たとえば、ブロックベクトルを決定し得るか、またはブロックベクトルを決定するために動き推定ユニット42を利用し得る。
[0124]たとえば、インター予測またはイントラBC予測のために動き推定ユニット42および/またはイントラBCユニット48によって識別される予測ブロックは、ピクセル差分に関してコーディングされるべきビデオブロックのPUの予測ブロック中のサンプルにぴったり一致する(closely match)ことがわかるサンプルを含むブロックである。いくつかの例では、動き推定ユニット42および/またはイントラBCユニット48は、絶対差分和(SAD)、2乗差分和(SSD)、および/または他の差分メトリックに基づいてピクセル差分を決定し得る。いくつかの例では、ビデオエンコーダ20は、参照ピクチャメモリ68に記憶された参照ピクチャのサブ整数ピクセル位置または再構成領域メモリ64に記憶された現在ピクチャの再構成領域のための値を計算し得る。たとえば、ビデオエンコーダ20は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置、または他の分数ピクセル位置の値を補間し得る。したがって、動き推定ユニット42および/またはイントラBCユニット48は、フルピクセル位置と分数ピクセル位置とに対して予測ブロックの探索を実施し、分数ピクセル精度でベクトルを出力し得る。
[0125]動き推定ユニット42は、PUの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコード化スライス中のビデオブロックのPUのための動きベクトルを計算し得る。参照ピクチャは、第1の参照ピクチャリスト(リスト0またはRefPicList0)または第2の参照ピクチャリスト(リスト1またはRefPicList1)から選択され得、それらの各々は、参照ピクチャメモリ68に記憶された1つまたは複数の参照ピクチャを識別する。動き推定ユニット42は、計算された動きベクトルをエントロピー符号化ユニット56と動き補償ユニット44とに送る。
[0126]動き補償ユニット44によって実施される動き補償は、動き推定によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成すること、場合によってはサブピクセル精度への補間を実施することを伴い得る。ビデオブロックのPUのための動きベクトルを受信すると、動き補償ユニット44は、動きベクトルが参照ピクチャリストのうちの1つにおいてそれを指す予測ブロックの位置を特定し得る。
[0127]いくつかの例では、イントラBCユニット48は、動き推定ユニット42および動き補償ユニット44に関して上記で説明された様式と同様の様式で、ベクトルを生成し、予測ブロックをフェッチし得るが、予測ブロックは、現在ブロックと同じピクチャまたはフレーム中にあり、ベクトルは、動きベクトルの対語としてブロックベクトルと呼ばれる。他の例では、イントラBCユニット48は、本明細書で説明される技法に従ってイントラBC予測のためのそのような機能を実施するために、全体的にまたは部分的に、動き推定ユニット42および動き補償ユニット44を使用し得る。いずれの場合も、イントラBCでは、予測ブロックは、絶対差分和(SAD)、2乗差分和(SSD)、または他の差分メトリックによって決定され得るピクセル差分に関して、コーディングされるべきブロックにぴったり一致することがわかるブロックであり得、ブロックの識別は、サブ整数ピクセル位置のための値の計算を含み得る。
[0128]予測ブロックが、イントラBC予測による同じピクチャからのものであるのか、インター予測による異なるピクチャからのものであるのかにかかわらず、ビデオエンコーダ20は、コーディングされている現在ビデオブロックのサンプル値から予測ブロックのサンプル値(たとえば、ピクセル値)を減算することによって、残差ビデオブロックを形成し、サンプル差分値を形成し得る。サンプル差分値は、ブロックのための残差データを形成し、ルーマ成分差分とクロマ成分差分の両方を含み得る。残差生成ユニット50は、この減算演算を実施する1つまたは複数の構成要素を表す。いくつかの例では、サンプル差分値を形成するために減算を直接実施することとは対照的に、残差生成ユニット50は、減算演算をエミュレートするために(すなわち、結果が、減算と同じであるが、減算の計算複雑さを伴わないように)動作を実施し得る。このようにして、残差生成ユニット50はイントラBCコーディングの計算複雑さを低減し得る。
[0129]イントラBCユニット48および/または動き補償ユニット44はまた、ビデオスライスのビデオブロックを復号する際に、ビデオデコーダ30など、ビデオデコーダが使用するためのビデオブロックとビデオスライスとに関連するシンタックス要素を生成し得る。シンタックス要素は、たとえば、予測ブロックを識別するために使用されるベクトルを定義するシンタックス要素、予測モードを示すフラグ、または本開示の技法に関して説明される他のシンタックスを含み得る。
[0130]イントラ予測処理ユニット46は、上記で説明されたように、動き推定ユニット42と動き補償ユニット44とによって実施されるインター予測、またはイントラBCユニット48によって実施されるイントラBC予測の代替として、現在ブロックをイントラ予測し得る。特に、イントラ予測処理ユニット46は、現在ブロックを符号化するために使用すべきイントラ予測モードを決定し得る。いくつかの例では、イントラ予測処理ユニット46は、たとえば、別個の符号化パス中に、様々なイントラ予測モードを使用して現在ビデオブロックを符号化し得、イントラ予測処理ユニット46(または、いくつかの例では、予測処理ユニット41)は、テストされたモードから使用するのに適切なイントラ予測モードを選択し得る。たとえば、イントラ予測処理ユニット46は、様々なテストされたイントラ予測モードのためのレートひずみ分析を使用してレートひずみ値を計算し、テストされたモードの中で最良のレートひずみ特性を有するイントラ予測モードを選択し得る。レートひずみ分析は、概して、符号化ブロックと、符号化ブロックを生成するために符号化された元の符号化されていないブロックとの間のひずみ(またはエラー)の量、ならびに符号化ブロックを生成するために使用されるビットレート(すなわち、ビット数)を決定する。イントラ予測処理ユニット46は、どのイントラ予測モードがブロックについて最良のレートひずみ値を呈するかを決定するために、様々な符号化ブロックのためのひずみおよびレートから比を計算し得る。
[0131]いずれの場合も、ブロックのためのイントラ予測モードを選択した後に、イントラ予測処理ユニット46は、ブロックのための選択されたイントラ予測モードを示す情報をエントロピー符号化ユニット56に与え得る。エントロピー符号化ユニット56は、本開示の技法に従って、選択されたイントラ予測モードを示す情報を符号化し得る。ビデオエンコーダ20は、複数のイントラ予測モードインデックステーブルおよび複数の変更されたイントラ予測モードインデックステーブル(コードワードマッピングテーブルとも呼ばれる)と、様々なブロックの符号化コンテキストの定義と、コンテキストの各々について使用すべき、最確イントラ予測モード、イントラ予測モードインデックステーブル、変更されたイントラ予測モードインデックステーブルの指示とを含み得る構成データを送信ビットストリーム中に含め得る。
[0132]予測処理ユニット41が、インター予測、イントラ予測、またはイントラBC予測を介して現在ビデオブロックのための予測ブロックを生成した後に、ビデオエンコーダ20は、たとえば、残差生成ユニット50を介して、現在ビデオブロックから予測ブロックを減算することによって残差ビデオブロックを形成する。残差ブロック中の残差ビデオデータは、1つまたは複数のTU中に含まれ、変換処理ユニット52に適用され得る。変換処理ユニット52は、離散コサイン変換(DCT)または概念的に同様の変換などの変換を使用して、残差ビデオデータを残差変換係数に変換する。変換処理ユニット52は、残差ビデオデータをピクセル領域から周波数領域などの変換領域に変換し得る。
[0133]変換処理ユニット52は、得られた変換係数を量子化処理ユニット54に送り得る。量子化処理ユニット54は、ビットレートをさらに低減するために変換係数を量子化する。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって変更され得る。いくつかの例では、量子化処理ユニット54は、次いで、量子化変換係数を含む行列の走査を実施し得る。代替的に、エントロピー符号化ユニット56が走査を実施し得る。
[0134]量子化の後に、エントロピー符号化ユニット56は量子化変換係数をエントロピー符号化する。たとえば、エントロピー符号化ユニット56は、コンテキスト適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)、確率間隔区分エントロピー(PIPE)コーディングあるいは別のエントロピー符号化方法または技法を実施し得る。エントロピー符号化ユニット56は、イントラBCモードによる予測のために、ベクトル成分、フラグ、および他のシンタックス要素を含む、シンタックス要素の2値化および符号化のための本明細書で説明される技法のいずれかを実施し得る。エントロピー符号化ユニット56によるエントロピー符号化の後に、符号化ビデオビットストリームは、ビデオデコーダ30に送信されるか、あるいはビデオデコーダ30が後で送信するかまたは取り出すためにアーカイブされ得る。
[0135]逆量子化処理ユニット58および逆変換処理ユニット60は、他のビデオブロックの予測のために参照ブロックとして後で使用するためにピクセル領域において残差ブロックを再構成するために、それぞれ逆量子化および逆変換を適用する。動き補償ユニット44および/またはイントラBCユニット48は、残差ブロックを参照ピクチャリストのうちの1つ内の参照ピクチャのうちの1つの予測ブロックに加算することによって参照ブロックを計算し得る。動き補償ユニット44および/またはイントラBCユニット48はまた、動き推定において使用するためのサブ整数ピクセル値を計算するために、再構成された残差ブロックに1つまたは複数の補間フィルタを適用し得る。
[0136]加算器62は、再構成されたビデオブロックを生成するために、再構成された残差ブロックを、動き補償ユニット44および/またはイントラBCユニット48によって生成された動き補償予測ブロックに加算する。再構成領域メモリ64は、本明細書で説明されるように、ビデオエンコーダ20、たとえば、イントラBCユニット48によって、現在ビデオブロックのイントラBCのための再構成領域の定義に従って、再構成されたビデオブロックを記憶する。再構成領域メモリ64は、フィルタ処理ユニット66によってインループフィルタ処理されていない再構成されたビデオブロックを記憶し得る。加算器62は、再構成されたビデオブロックを再構成領域メモリ64と並列にフィルタ処理ユニット66に与え得るか、または再構成領域メモリ64は、イントラBCのための再構成領域がもはや必要とされないとき、再構成されたビデオブロックをフィルタ処理ユニット66に解放し得る。いずれの場合も、イントラBCユニット48は、現在ビデオブロックを予測するために、再構成領域メモリ64中の再構成されたビデオブロックを現在ビデオブロックと同じピクチャ内の予測ビデオブロックについて探索し得る。
[0137]フィルタ処理ユニット66は、再構成されたビデオブロックに対してインループフィルタ処理を実施し得る。インループフィルタ処理は、再構成されたビデオからブロッキネスアーティファクトを除去するためにブロック境界をフィルタ処理するためのデブロックフィルタ処理を含み得る。インループフィルタ処理は、再構成されたビデオを改善するためにSAOフィルタ処理をも含み得る。そのうちのいくつかがインループフィルタ処理され得る、再構成されたブロックは、参照ピクチャとして参照ピクチャメモリ68に記憶され得る。参照ピクチャは、後続のビデオフレームまたはピクチャ中のブロックをインター予測するために、動き推定ユニット42および動き補償ユニット44によって予測ブロックとして使用され得る再構成されたブロックを含み得る。
[0138]図3は、本開示で説明される適合制約検査技法の任意の組合せを実装し得る例示的なビデオデコーダ30を示すブロック図である。図3の例では、ビデオデコーダ30は、エントロピー復号ユニット80と、予測処理ユニット81と、逆量子化処理ユニット86と、逆変換処理ユニット88と、加算器90と、再構成領域メモリ92と、フィルタ処理ユニット94と、参照ピクチャメモリ96とを含む。予測処理ユニット81は、動き補償ユニット82と、イントラ予測処理ユニット84と、イントラブロックコピー(イントラBC)ユニット85とを含む。ビデオデコーダ30は、いくつかの例では、図2からのビデオエンコーダ20に関して説明された符号化パスとは概して逆の復号パスを実施し得る。
[0139]様々な例では、ビデオデコーダ30のユニットは、本開示の技法を実施する役割を担い得る。また、いくつかの例では、本開示の技法は、ビデオデコーダ30のユニットのうちの1つまたは複数の間で分割され得る。たとえば、イントラBCユニット85は、本開示の技法を、単独で、または、動き補償ユニット82、イントラ予測処理ユニット84、再構成領域メモリ92、およびエントロピー復号ニット80など、ビデオデコーダ30の他のユニットと組み合わせて実施し得る。
[0140]上記で説明されたように、ビデオデコーダ30は、受信された符号化ビデオビットストリームに対してビットストリーム適合検査を実施するように構成され得る。ビデオデコーダ30が、(受信されたのか推論されたのかにかかわらず)collocated_ref_idxシンタックス要素の値を決定するためにスライスヘッダを受信およびパースした後に、ビデオデコーダ30は、値が、あらかじめ定義された適合制約を満たすことを検証するために、特定のスライスのためのcollocated_ref_idxシンタックス要素の値を同じピクチャの他のスライスのためのcollocated_ref_idxシンタックス要素の値と比較し得る。ビデオデコーダ30が、ビットストリームが適合検査に合格したと決定した場合、ビデオデコーダ30は、通常通り復号に進み得る。ビデオデコーダ30が、ビットストリームが適合検査に合格しないと決定した場合、ビデオデコーダ30はエラーをロギングし得る。ビデオデコーダ30は、ビットストリーム適合検査が満たされない場合でも、依然として、ビットストリームを復号することを試み得る。
[0141]本開示の一例では、ビデオデコーダ30は、ビデオデータの符号化された現在ピクチャを受信することと、符号化された現在ピクチャの1つまたは複数のスライスのためのそれぞれのコロケート参照ピクチャインデックスシンタックス要素を受信することとを行うように構成され得る。ビデオデコーダ30は、イントラスライスタイプを有さず、時間動きベクトル予測子が有効にされた、1つまたは複数のスライスのうちのスライスのためにのみビットストリーム適合検査を実施するようにさらに構成され得る。ビットストリーム適合検査は、各それぞれのコロケート参照ピクチャインデックスシンタックス要素が同じピクチャを指し、符号化された現在ピクチャ自体を参照しないかどうかを決定する。
[0142]復号プロセス中に、ビデオデコーダ30は、ビデオエンコーダ20から、符号化ビデオスライスのビデオブロックと、関連するシンタックス要素とを表す符号化ビットストリームを受信する。ビデオデコーダ30のエントロピー復号ユニット80は、量子化係数と、インター予測のための動きベクトルと、イントラBC予測のためのブロックベクトルと、本明細書で説明される他のシンタックス要素とを生成するために、ビットストリームをエントロピー復号する。エントロピー復号ユニット80は、イントラBCモードによる予測のために、ベクトル成分、フラグ、および他のシンタックス要素を含む、シンタックス要素の2値化および符号化のための本明細書で説明される技法のいずれかの逆を実施し得る。エントロピー復号ユニット80は、予測処理ユニット81にベクトルおよび他のシンタックス要素をフォワーディングする。ビデオデコーダ30は、シーケンスレベル、ピクチャレベル、ビデオスライスレベルおよび/またはビデオブロックレベルにおいてシンタックス要素を取得し得る。
[0143]いくつかの例では、エントロピー復号ユニット80は、ブロックベクトルを符号化するためにエンコーダ20のエントロピー符号化ユニット56によって使用される符号化プロセスとは概して逆であるプロセスを使用する。たとえば、エントロピー復号ユニット80は、3つのシンタックス要素に基づいてブロックベクトルの成分を復号し得る。
[0144]イントラBCユニット80は、選択されたブロックベクトル予測子候補と、シンタックス要素によって示された差分(すなわち、選択されたブロックベクトル予測子と現在ブロックのためのブロックベクトルとの間の差分)とに基づいて、現在ブロックのためのブロックベクトルの値を決定し得る。このようにして、エントロピー復号ユニット80およびイントラBCユニット80は、符号化されたブロックベクトルを復号し得る。
[0145]ビデオスライスがイントラコード化(I)スライスとしてコーディングされたとき、予測処理ユニット81のイントラ予測処理ユニット84は、シグナリングされたイントラ予測モードと、現在フレームまたはピクチャの前に復号されたブロックからのデータとに基づいて、現在ビデオスライスのビデオブロックのための予測データを生成し得る。ビデオフレームがインターコード化(すなわち、BまたはP)スライスとしてコーディングされたとき、予測処理ユニット81の動き補償ユニット82は、エントロピー復号ユニット80から受信された動きベクトルおよび他のシンタックス要素に基づいて現在ビデオスライスのビデオブロックのための予測ブロックを生成する。予測ブロックは、参照ピクチャリストのうちの1つ内の参照ピクチャのうちの1つから生成され得る。ビデオデコーダ30は、参照ピクチャメモリ96に記憶された参照ピクチャに基づいて、デフォルト構成技法または任意の他の技法を使用して、参照フレームリスト、すなわち、RefPicList0とRefPicList1とを構成し得る。ビデオブロックが、本明細書で説明されるイントラBCモードに従ってコーディングされたとき、予測処理ユニット81のイントラBCユニット85は、エントロピー復号ユニット80から受信されたブロックベクトルおよび他のシンタックス要素に基づいて、現在ビデオブロックのための予測ブロックを生成する。予測ブロックは、ビデオエンコーダ20によって定義され、再構成領域メモリ92から取り出される現在ビデオブロックと同じピクチャ内の再構成領域内にあり得る。
[0146]動き補償ユニット82およびイントラBCユニット85は、ベクトルおよび他のシンタックス要素をパースすることによって現在ビデオスライスのビデオブロックのための予測情報を決定し、復号されている現在ビデオブロックのための予測ブロックを生成するために、その予測情報を使用する。たとえば、動き補償ユニット82は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード(たとえば、イントラまたはインター予測)と、インター予測スライスタイプ(たとえば、BスライスまたはPスライス)と、スライスのための参照ピクチャリストのうちの1つまたは複数のための構成情報と、スライスの各インター符号化ビデオブロックのための動きベクトルと、スライスの各インターコード化ビデオブロックのためのインター予測ステータスと、現在ビデオスライス中のビデオブロックを復号するための他の情報とを決定するために、受信されたシンタックス要素のうちのいくつかを使用する。同様に、イントラBCユニット85は、現在ビデオブロックがイントラBCモードを使用して予測されたことと、ピクチャのどのビデオブロックが再構成された領域内にあり、再構成領域メモリ92に記憶されるべきであるかを示す構成情報と、スライスの各イントラBC予測ビデオブロックのためのブロックベクトルと、スライスの各イントラBC予測ビデオブロックのためのイントラBC予測ステータスと、現在ビデオスライス中のビデオブロックを復号するための他の情報とを決定するために、受信されたシンタックス要素のうちのいくつか、たとえば、フラグを使用し得る。
[0147]動き補償ユニット82およびイントラBCユニット85はまた、補間フィルタに基づいて補間を実施し得る。動き補償ユニット82およびイントラBCユニット85は、予測ブロックのサブ整数ピクセルのための補間値を計算するために、ビデオブロックの符号化中にビデオエンコーダ20によって使用された補間フィルタを使用し得る。この場合、動き補償ユニット82およびイントラBCユニット85は、受信されたシンタックス要素からビデオエンコーダ20によって使用された補間フィルタを決定し、予測ブロックを生成するためにその補間フィルタを使用し得る。
[0148]逆量子化処理ユニット86は、ビットストリーム中で与えられ、エントロピー復号ユニット80によって復号された、量子化変換係数を逆量子化、すなわち、量子化解除する。逆量子化プロセスは、量子化の程度を決定し、同様に、適用されるべき逆量子化の程度を決定するための、ビデオスライス中の各ビデオブロックについてビデオエンコーダ20によって計算される量子化パラメータの使用を含み得る。逆変換処理ユニット88は、ピクセル領域において残差ブロックを生成するために、逆変換、たとえば、逆DCT、逆整数変換、または概念的に同様の逆変換プロセスを変換係数に適用する。
[0149]動き補償ユニット82またはイントラBCユニット85が、ベクトルおよび他のシンタックス要素に基づいて現在ビデオブロックのための予測ブロックを生成した後に、ビデオデコーダ30は、逆変換処理ユニット88からの残差ブロックを動き補償ユニット82およびイントラBCユニット85によって生成された対応する予測ブロックと加算することによって、復号ビデオブロックを形成する。加算器90は、再構成されたビデオブロックを生成するためにこの加算演算を実施する1つまたは複数の構成要素を表す。
[0150]再構成領域メモリ92は、本明細書で説明されるように、ビデオエンコーダ20による現在のビデオブロックのイントラBCのための再構成領域の定義に従って、再構成されたビデオブロックを記憶する。再構成領域メモリ92は、フィルタ処理ユニット394によってインループフィルタ処理されていない再構成されたビデオブロックを記憶し得る。加算器90は、再構成されたビデオブロックを再構成領域メモリ92と並列にフィルタ処理ユニット94に与え得るか、または再構成領域メモリ92は、イントラBCのための再構成領域がもはや必要とされないとき、再構成されたビデオブロックをフィルタ処理ユニット94に解放し得る。いずれの場合も、イントラBCユニット85は、再構成領域メモリ92から現在ビデオブロックのための予測ビデオブロックを取り出す。
[0151]フィルタ処理ユニット94は、再構成されたビデオブロックに対してインループフィルタ処理を実施し得る。インループフィルタ処理は、再構成されたビデオからブロッキネスアーティファクトを除去するためにブロック境界をフィルタ処理するためのデブロックフィルタ処理を含み得る。インループフィルタ処理は、再構成されたビデオを改善するためにSAOフィルタ処理をも含み得る。そのうちのいくつかがインループフィルタ処理され得る、再構成されたブロックは、参照ピクチャとして参照ピクチャメモリ68に記憶され得る。参照ピクチャは、後続のビデオフレームまたはピクチャ中のブロックをインター予測するために、動き補償ユニット82によって予測ブロックとして使用され得る再構成されたブロックを含み得る。参照ピクチャメモリ96はまた、図1のディスプレイデバイス31などのディスプレイデバイス上で後で提示するために復号ビデオを記憶する。
[0152]図4は、本開示の例示的な符号化プロセスを示すフローチャートである。図4の技法は、ビデオエンコーダ20の1つまたは複数のハードウェアユニットによって実施され得る。
[0153]本開示の一例では、ビデオエンコーダ20は、ビデオデータの現在ピクチャを符号化し(100)、現在ピクチャの1つまたは複数のスライスのためのそれぞれのコロケート参照ピクチャインデックスシンタックス要素を生成する(102)ように構成され得る。ビデオエンコーダ20は、イントラスライスタイプを有さず、時間動きベクトル予測子が有効にされた、1つまたは複数のスライスのうちのスライスのためにのみビットストリーム適合検査を実施する(104)ようにさらに構成され得る。一例では、ビットストリーム適合検査は、各それぞれのコロケート参照ピクチャインデックスシンタックス要素が同じピクチャを指し、現在ピクチャ自体を参照しないように、それぞれのコロケート参照ピクチャインデックスシンタックス要素の値を制約する。本開示のさらなる一例では、ビデオエンコーダ20は、1つまたは複数のスライスのためのスライスタイプを決定することと、スライスタイプがPインタースライスタイプ、Bインタースライスタイプ、またはイントラスライスタイプのうちの1つを含む、時間動きベクトル予測子が1つまたは複数のスライスのためにインター予測のために有効にされるか否かを決定することとを行うように構成され得る。
[0154]本開示の別の例では、ビデオエンコーダ20は、イントラスライスタイプを有する1つまたは複数のスライスのうちのスライスのために、または時間動きベクトル予測子が無効にされた1つまたは複数のスライスのうちのスライスのためにビットストリーム適合検査を実施しないように構成され得る。
[0155]本開示の別の例では、ビデオエンコーダ20は、対応するスライスのためのそれぞれのスライスヘッダ中でそれぞれのコロケート参照ピクチャインデックスシンタックス要素を生成することと、1つまたは複数のスライスのそれぞれのスライスヘッダ中で時間動きベクトル予測子有効フラグ(temporal motion vector predictor enabled flag)を生成することとを行うように構成され得る。一例では、それぞれのコロケート参照ピクチャインデックスシンタックス要素は、それぞれのcollocated_ref_idxシンタックス要素であり、時間動きベクトル予測子有効フラグはslice_temporal_mvp_enabled_flagである。
[0156]本開示の別の例では、ビデオエンコーダ20は、現在ピクチャを参照ピクチャとして使用するインター予測モードを使用して、ビデオデータの現在ピクチャの1つまたは複数のブロックを符号化するように構成され得る。
[0157]本開示の別の例では、ビデオエンコーダ20は、もう1つの(one more)スライスのうちの第1のスライスのためのスライスヘッダ中に、時間動きベクトル予測子が第1のスライスのために有効にされたことを示すシンタックス要素を含めることと、1つまたは複数のスライスのうちの第2のスライスのための第2のスライスヘッダ中に、時間動きベクトル予測子が第2のスライスのために無効にされたことを示すシンタックス要素を含めることとを行うように構成され得る。
[0158]本開示の別の例では、ビデオエンコーダ20は、符号化されるべきビデオデータの現在ピクチャをキャプチャすることと、ビデオデータの符号化された現在ピクチャを出力することとを行うように構成され得る。
[0159]図5は、本開示の例示的な復号プロセスを示すフローチャートである。図4の技法は、ビデオデコーダの1つまたは複数のハードウェアユニットによって実施され得る。
[0160]本開示の一例では、ビデオデコーダ30は、ビデオデータの符号化された現在ピクチャを受信し(150)、符号化された現在ピクチャの1つまたは複数のスライスのためのそれぞれのコロケート参照ピクチャインデックスシンタックス要素を受信する(152)ように構成され得る。ビデオデコーダ30は、イントラスライスタイプを有さず、時間動きベクトル予測子が有効にされた、1つまたは複数のスライスのうちのスライスのためにのみビットストリーム適合検査を実施する(154)ようにさらに構成され得る。一例では、ビットストリーム適合検査は、各それぞれのコロケート参照ピクチャインデックスシンタックス要素が同じピクチャを指し、符号化された現在ピクチャ自体を参照しないかどうかを決定する。本開示のさらなる一例では、ビデオデコーダ30は、1つまたは複数のスライスのためのスライスタイプを決定することと、スライスタイプがPインタースライスタイプ、Bインタースライスタイプ、またはイントラスライスタイプのうちの1つを含む、時間動きベクトル予測子が1つまたは複数のスライスのためにインター予測のために有効にされるか否かを決定することとを行うように構成され得る。
[0161]本開示の別のものでは、ビデオデコーダ30は、イントラスライスタイプを有する1つまたは複数のスライスのうちのスライスのために、または時間動きベクトル予測子が無効にされた1つまたは複数のスライスのうちのスライスのためにビットストリーム適合検査を実施しないように構成され得る。
[0162]本開示の別のものでは、ビデオデコーダ30は、対応するスライスのためのそれぞれのスライスヘッダ中でそれぞれのコロケート参照ピクチャインデックスシンタックス要素を受信することと、1つまたは複数のスライスのそれぞれのスライスヘッダ中で時間動きベクトル予測子有効フラグを受信することとを行うように構成され得る。本開示の一例では、それぞれのコロケート参照ピクチャインデックスシンタックス要素は、それぞれのcollocated_ref_idxシンタックス要素であり、時間動きベクトル予測子有効フラグはslice_temporal_mvp_enabled_flagである。
[0163]本開示の別のものでは、ビデオデコーダ30は、現在ピクチャを参照ピクチャとして使用するインター予測モードを使用して、ビデオデータの現在ピクチャの1つまたは複数のブロックを復号するように構成され得る。
[0164]1つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応する、コンピュータ可読記憶媒体を含み得るか、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、(1)非一時的である有形コンピュータ可読記憶媒体、あるいは(2)信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明された技法の実装のための命令、コードおよび/またはデータ構造を取り出すために、1つまたは複数のコンピュータまたは1つまたは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
[0165]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、あるいは命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびBlu−rayディスク(disc)を含み、ここで、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
[0166]命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、あるいは他の等価な集積回路またはディスクリート論理回路など、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用される「プロセッサ」という用語は、上記の構造、または本明細書で説明される技法の実装に好適な他の構造のいずれかを指すことがある。さらに、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成された専用ハードウェアおよび/またはソフトウェアモジュール内に与えられるか、あるいは複合コーデックに組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素で十分に実装され得る。
[0167]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置で実装され得る。本開示では、開示される技法を実施するように構成されたデバイスの機能的態様を強調するために、様々な構成要素、モジュール、またはユニットが説明されたが、それらの構成要素、モジュール、またはユニットは、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上記で説明されたように、様々なユニットが、好適なソフトウェアおよび/またはファームウェアとともに、上記で説明された1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられるか、または相互動作可能なハードウェアユニットの集合によって与えられ得る。
[0168]様々な例が説明された。これらおよび他の例は、以下の特許請求の範囲内に入る。