[0035]3次元ビデオ(3DV)コーディングでは、同じシーンの画像が異なる視点からキャプチャされる。異なる視点から同じシーンのピクチャを見せると、閲覧者に立体3次元効果を与え得る。異なる視点から同時にキャプチャされた同じシーンのピクチャは非常に類似していることがあるので、ビデオエンコーダは、ビュー間予測を使用して、異なる視点からの他のピクチャ中のブロックに基づいてピクチャのブロックを予測することによって送られるデータの量を低減させ得る。「アクセスユニット」という用語は、同じ時間インスタンスに対応するピクチャのセットを指すために使用される。「ビューコンポーネント」は、単一のアクセスユニット中のビューのコード化表現であり得る。
[0036]送られるデータの量をさらに低減させるために、ビデオエンコーダは、現在コーディングされているピクチャと同じアクセスユニット中の以前にコーディングされたビューコンポーネントに基づいてビュー合成予測(VSP)ピクチャを生成し得る。ビデオエンコーダは、参照ピクチャリスト中にVSPピクチャを含み得る。ビデオエンコーダが現在のビデオユニット(たとえば、マクロブロック(MB:macroblock)、MBパーティション、サブMBパーティション、予測ユニット(PU:prediction unit)など)を符号化するとき、ビデオエンコーダは、現在のビデオユニットのための予測ブロックを生成する際に参照ピクチャとしてVSPピクチャを使用し得る。さらに、ビデオエンコーダは、参照インデックスおよび動きベクトルをシグナリングし得る。参照インデックスは、参照ピクチャリスト内でのVSPピクチャの位置を示し得る。動きベクトルは、VSPピクチャ内の参照ブロックと現在のビデオユニットのサンプルブロックとの間の空間変位を示す。
[0037]ビデオエンコーダは、動きベクトル差分(MVD:motion vector difference)を使用して動きベクトルをシグナリングし得る。MVDは、動きベクトル予測子と現在のビデオユニットの動きベクトルとの間の差を示し得る。動きベクトル予測子は、隣接ブロックの動きベクトルであり得る。
[0038]ビデオデコーダは、ビデオエンコーダと同じVSPピクチャを生成し得、ビデオエンコーダと同じ参照ピクチャリストを生成し得る。さらに、ビデオデコーダは、参照インデックスに基づいて、現在のビデオユニットのための予測ブロックがVSPピクチャに基づいて生成されるべきであると判断し得る。さらに、ビデオデコーダは、シグナリングされたMVDに少なくとも部分的に基づいて、現在のビデオユニットの動きベクトルを判断し得る。ビデオデコーダは、次いで、動きベクトルに少なくとも部分的に基づいて、VSPピクチャ内の参照ブロックを判断し得る。次に、ビデオデコーダは、参照ブロックに少なくとも部分的に基づいて、現在のビデオユニットのための予測ブロックを判断し得る。ビデオデコーダは、現在のビデオユニットのための予測ブロックに少なくとも部分的に基づいて、現在のビデオユニットのサンプルブロックを再構成し得る。
[0039]上述のように、ビデオエンコーダが、現在のビデオユニットのための予測ブロックを生成するためにVSPピクチャを使用するとき、ビデオエンコーダは、ビデオデコーダが現在のビデオユニットの動きベクトルを導出するMVDをシグナリングする。ビデオエンコーダがVSPピクチャを使用して現在のビデオユニットのための予測ブロックを生成するとき、動きベクトルは、ほとんど常に0に極めて近くなる。すなわち、VSPピクチャ中の参照ブロックは、現在のビデオユニットのサンプルブロックとほとんど常にコロケートされる。
[0040]VSPピクチャ中の参照ブロックが、現在のビデオユニットのサンプルブロックとほとんど常にコロケートされるので、現在のビデオユニットがVSPピクチャに基づいて符号化された場合、ビデオデコーダは、ビットストリームから現在のビデオユニットのためのMVDを復号することなしに、現在のビデオユニットの動きベクトルが0に等しくなると判断することが可能であり得る。したがって、現在のビデオユニットがVSPピクチャに基づいて符号化されたとき、現在のビデオユニットのためのMVDをシグナリングすることはビットの浪費であり得る。さらに、現在のビデオユニットがVSPピクチャに基づいて符号化されたとき、現在のビデオユニットのためのMVDをシグナリングすることは不要であるので、現在のビデオユニットがVSPピクチャに基づいて符号化されたことを示すシンタックス要素のシグナリングによって、参照ピクチャリスト中にVSPピクチャを含めることが不要になり得る。
[0041]本開示の技法によれば、ビデオエンコーダは、複数のテクスチャビューと複数の深度ビューとのコード化表現を含むビットストリーム中で、現在のビデオユニットが現在のテクスチャビューコンポーネントのVSPピクチャから予測されるかどうかを示すシンタックス要素をシグナリングし得る。いくつかの例では、現在のビデオユニットは、MB、MBパーティション、またはサブMBパーティションであり得る。他の例では、現在のビデオユニットは予測ユニット(PU)であり得る。いくつかの例では、現在のビデオユニットがVSPピクチャから予測されることをシンタックス要素が示すとき、ビデオエンコーダは、現在のビデオユニットについての動き情報をシグナリングしない。言い換えれば、ビデオエンコーダは、ビットストリームから、現在のビデオユニットについての動き情報を省略する。たとえば、現在のビデオユニットがVSPピクチャから予測されるとき、ビデオエンコーダは、現在のビデオユニットのための参照インデックスまたはMVDをシグナリングしない。逆に、現在のビデオユニットがVSPピクチャから予測されないとき、ビデオエンコーダは、ビットストリーム中で、現在のビデオユニットについての動き情報をシグナリングし得る。したがって、ビデオエンコーダは、現在のビデオユニットがVSPピクチャから予測されるかどうかに少なくとも部分的に基づいて、ビットストリーム中で現在のビデオユニットについての動き情報をシグナリングすべきかどうかを判断し得る。現在のビデオユニットがVSPピクチャから予測されるときに現在のビデオユニットの動き情報をシグナリングしないことによって、ビデオエンコーダは、ビットストリーム中のビット数を低減させ得る。
[0042]同様に、本開示の技法によれば、ビデオデコーダは、現在のアクセスユニットの以前にコーディングされたテクスチャビューコンポーネントと現在のアクセスユニットの深度ビューコンポーネントとに少なくとも部分的に基づいて、VSPピクチャを生成し得る。さらに、ビデオデコーダは、複数のテクスチャビューと複数の深度ビューとのコード化表現を含むビットストリームから、現在のビデオユニットがVSPピクチャから予測されるかどうかを示すシンタックス要素を復号し得る。現在のビデオユニットがVSPピクチャから予測されないとき、ビデオデコーダは、ビットストリームから、現在のビデオユニットについての動き情報を復号し得、現在のビデオユニットのサンプルブロックを再構成するために現在のビデオユニットについての動き情報を使用し得る。現在のビデオユニットがVSPピクチャから予測されるとき、ビデオデコーダは、現在のビデオユニットのサンプルブロックを再構成するためにVSPピクチャを使用し得る。
[0043]図1は、本開示の技法を利用し得る例示的なビデオコーディングシステム10を示すブロック図である。本明細書で使用する「ビデオコーダ」という用語は、ビデオエンコーダとビデオデコーダの両方を総称的に指す。本開示では、「ビデオコーディング」または「コーディング」という用語は、ビデオ符号化またはビデオ復号を総称的に指すことがある。
[0044]図1に示すように、ビデオコーディングシステム10は、ソースデバイス12と宛先デバイス14とを含む。ソースデバイス12は、符号化ビデオデータを生成する。したがって、ソースデバイス12は、ビデオ符号化デバイスまたはビデオ符号化装置と呼ばれることがある。宛先デバイス14は、ソースデバイス12によって生成された符号化ビデオデータを復号し得る。したがって、宛先デバイス14は、ビデオ復号デバイスまたはビデオ復号装置と呼ばれることがある。ソースデバイス12および宛先デバイス14は、ビデオコーディングデバイスまたはビデオコーディング装置の例であり得る。
[0045]ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、モバイルコンピューティングデバイス、ノートブック(たとえば、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、車内コンピュータなどを含む、広範囲のデバイスを備え得る。
[0046]宛先デバイス14は、チャネル16を介してソースデバイス12から符号化ビデオデータを受信し得る。チャネル16は、ソースデバイス12から宛先デバイス14に符号化ビデオデータを移動することが可能な1つまたは複数の媒体またはデバイスを備え得る。一例では、チャネル16は、ソースデバイス12が符号化ビデオデータを宛先デバイス14にリアルタイムで直接送信することを可能にする1つまたは複数の通信媒体を備え得る。この例では、ソースデバイス12は、ワイヤレス通信プロトコルなどの通信規格に従って符号化ビデオデータを変調し得、変調されたビデオデータを宛先デバイス14に送信し得る。1つまたは複数の通信媒体は、無線周波数(RF)スペクトルあるいは1つまたは複数の物理伝送線路など、ワイヤレスおよび/またはワイヤード通信媒体を含み得る。1つまたは複数の通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはグローバルネットワーク(たとえば、インターネット)など、パケットベースネットワークの一部を形成し得る。1つまたは複数の通信媒体は、ソースデバイス12から宛先デバイス14への通信を可能にする、ルータ、スイッチ、基地局、または他の機器を含み得る。
[0047]別の例では、チャネル16は、ソースデバイス12によって生成された符号化ビデオデータを記憶する記憶媒体を含み得る。この例では、宛先デバイス14は、ディスクアクセスまたはカードアクセスを介して記憶媒体にアクセスし得る。記憶媒体は、Blu−ray(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、または符号化ビデオデータを記憶するための他の好適なデジタル記憶媒体など、様々なローカルにアクセスされるデータ記憶媒体を含み得る。
[0048]さらなる例では、チャネル16は、ソースデバイス12によって生成された符号化ビデオデータを記憶するファイルサーバまたは別の中間ストレージデバイスを含み得る。この例では、宛先デバイス14は、ストリーミングまたはダウンロードを介して、ファイルサーバまたは他の中間ストレージデバイスに記憶された符号化ビデオデータにアクセスし得る。ファイルサーバは、符号化ビデオデータを記憶することと、符号化ビデオデータを宛先デバイス14に送信することとが可能なタイプのサーバであり得る。例示的なファイルサーバには、(たとえば、ウェブサイト用の)ウェブサーバ、ファイル転送プロトコル(FTP)サーバ、ネットワーク接続ストレージ(NAS)デバイス、およびローカルディスクドライブが含まれる。
[0049]宛先デバイス14は、インターネット接続などの標準的なデータ接続を通して符号化ビデオデータにアクセスし得る。例示的なタイプのデータ接続は、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに好適である、ワイヤレスチャネル(たとえば、Wi−Fi(登録商標)接続)、有線接続(たとえば、DSL、ケーブルモデムなど)、またはその両方の組合せを含み得る。ファイルサーバからの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはその両方の組合せであり得る。
[0050]本開示の技法は、ワイヤレス適用例または設定に限定されない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえばインターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのビデオデータの符号化、データ記憶媒体に記憶されたビデオデータの復号、または他の適用例など、様々なマルチメディア適用例をサポートするビデオコーディングに適用され得る。いくつかの例では、ビデオコーディングシステム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオ電話などの用途をサポートするために、単方向または双方向のビデオ送信をサポートするように構成され得る。
[0051]図1の例では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、出力インターフェース22とを含む。いくつかの例では、出力インターフェース22は、変調器/復調器(モデム)および/または送信機を含み得る。ビデオソース18は、たとえばビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされたビデオデータを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオデータを受信するためのビデオフィードインターフェース、および/またはビデオデータを生成するためのコンピュータグラフィックスシステム、あるいはビデオデータのそのようなソースの組合せを含み得る。
[0052]ビデオエンコーダ20は、ビデオソース18からのビデオデータを符号化し得る。いくつかの例では、ソースデバイス12は、出力インターフェース22を介して宛先デバイス14に符号化ビデオデータを直接送信する。他の例では、符号化ビデオデータはまた、復号および/または再生のための宛先デバイス14による後のアクセスのために記憶媒体またはファイルサーバ上に記憶され得る。
[0053]図1の例では、宛先デバイス14は、入力インターフェース28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。いくつかの例では、入力インターフェース28は、受信機および/またはモデムを含む。入力インターフェース28は、チャネル16を介して符号化ビデオデータを受信し得る。ディスプレイデバイス32は、宛先デバイス14と一体化され得るかまたはその外部にあり得る。概して、ディスプレイデバイス32は、復号ビデオデータを表示する。ディスプレイデバイス32は、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスを備え得る。
[0054]いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、それのスケーラブルビデオコーディング(SVC:Scalable Video Coding)およびマルチビュービデオコーディング(MVC:Multiview Video Coding)拡張を含む、ISO/IEC MPEG−4 VisualおよびITU−T H.264(ISO/IEC MPEG−4 AVCとしても知られる)などのビデオ圧縮規格に従って動作する。MVCのドラフトは、2013年3月13日現在、http://www.itu.int/rec/T−REC−H.264−201003−S/enからダウンロードで利用可能である、「Advanced video coding for generic audiovisual services」、ITU−T勧告H.264、2010年3月に記載されており、その内容全体が参照により本明細書に組み込まれる。H.264/AVCのMVC拡張の別の最近のドラフトは、2013年3月13日現在、http://wftp3.itu.int/av−arch/jvt−site/2009_01_Geneva/JVT−AD007.zipにおいてダウンロードで利用可能であり、その内容全体が参照により本明細書に組み込まれる。
[0055]さらに、「WD of MVC extension for inclusion of depth maps」、MPEG文献w12351に記載されているMVC規格の拡張、すなわち、「MVCベースの3DV」(すなわち、MVC互換3DV)があり、その内容全体が参照により本明細書に組み込まれる。いくつかの事例では、MVCベースの3DVに準拠する任意の正当なビットストリームは、MVCプロファイル、たとえば、ステレオハイプロファイルに準拠するサブビットストリームを常に含み得る。
[0056]さらに、H.264/AVCへの3次元ビデオ(3DV)コーディング拡張、すなわち、AVCベースの3DVを生成するための取り組みが進行中である。「3DV−AVC Working Draft 1」と呼ばれるAVCベースの3DVのワーキングドラフト(WD)は、以下、参照により本明細書に組み込まれる。AVCベースの3DVの別のドラフトは、2013年3月13日現在、http://phenix.it−sudparis.eu/jct2/doc_end_user/documents/2_Shanghai/wg11/JCT3V−B1002−v1.zipにおいて利用可能である、Mannukselaら、「3DV−AVC Draft Text 4」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11とのJoint Collaborative Team on 3D Video Coding Extension Development、第2回会合、上海、中国、2012年10月に記載されており、その内容全体が参照により本明細書に組み込まれる。AVCベースの3DVのための参照ソフトウェアの説明は、Miska M.Hannuksela、「Test Model for AVC based 3D video coding」、ISO/IEC JTC1/SC29/WG11 MPEG2011/N12558、サンノゼ、米国、2012年2月として利用可能である。参照ソフトウェアは、2013年3月13日現在、http://mpeg3dv.research.nokia.com/svn/mpeg3dv/trunk/から利用可能であり、その内容全体が参照により本明細書に組み込まれる。
[0057]他の例では、ビデオエンコーダ20およびビデオデコーダ30は、ITU−T H.261、ISO/IEC MPEG−1 Visual、ITU−T H.262またはISO/IEC MPEG−2 Visual、およびITU−T H.264、ISO/IEC Visualに従って動作し得る。ビデオエンコーダ20およびビデオデコーダ30は、ITU−T Video Coding Experts Group(VCEG)とISO/IEC Motion Picture Experts Group(MPEG)とのJoint Collaboration Team on Video Coding(JCT−VC)によって現在開発中の高効率ビデオコーディング(HEVC)規格を含む他のビデオ圧縮規格に従って動作し得る。
[0058]「HEVC Working Draft 4」と呼ばれる次回のHEVC規格のドラフトは、2013年3月13日現在、http://phenix.int−evry.fr/jct/doc_end_user/documents/6_Torino/wg11/JCTVC−F803−v8.zipから利用可能である、Brossら、「WD4: Working Draft 4 of High Efficiency Video Coding」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11とのビデオコーディング共同研究部会(JCT−VC)、第6回会合、トリノ、イタリア、2011年7月に記載されており、その内容全体が参照により本明細書に組み込まれる。「HEVC Working Draft 6」と呼ばれる次のHEVC規格の別のドラフトは、2013年3月13日現在、http://phenix.int−evry.fr/jct/doc_end_user/documents/8_San%20Jose/wg11/JCTVC−H1003−v22.zipから利用可能である、Brossら、「High Efficiency Video Coding (HEVC) text specification draft 6」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11とのビデオコーディング共同研究部会(JCT−VC)、第8回会合、サンノゼ、カリフォルニア州、2012年2月に記載されており、その内容全体が参照により本明細書に組み込まれる。「HEVC Working Draft 9」と呼ばれる次回のHEVC規格の別のドラフトは、2013年3月13日現在、http://phenix.int−evry.fr/jct/doc_end_user/documents/11_Shanghai/wg11/JCTVC−K1003−v8.zipからダウンロード可能である、Brossら、「High Efficiency Video Coding (HEVC) text specification draft 9」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11とのビデオコーディング共同研究部会(JCT−VC)、第11回会合、上海、中国、2012年10月に記載されており、その内容全体が参照により本明細書に組み込まれる。
[0059]さらに、HEVCのための3DV拡張を生成するための取り組みが進行中である。HEVCの3DV拡張は、HEVCベースの3DVまたはHEVC−3DVと呼ばれることがある。MPEGにおけるHEVCベースの3DVコーデックは、その内容全体が参照により本明細書に組み込まれる、Schwarzら、「Description of 3D Video Technology Proposal by Fraunhofer HHI (HEVC compatible; configuration A)」、ISO/IEC JTC1/SC29/WG11 MPEG2011/m22570、ジュネーブ、スイス、2011年11月(以下、「文献m22570」)、およびその内容全体が参照により本明細書に組み込まれる、Wegnerら、「Poznan University of Technology tools for 3DV coding integrated into 3D−HTM」、ISO/IEC JTC1/SC29/WG11 MPEG2011/m23783、サンノゼ、米国、2012年2月(以下、「文献m23783」)に提案された解決策に基づく。参照ソフトウェアの記述は、Schwarzら、「Test Model under Consideration for HEVC based 3D video coding」、ISO/IEC JTC1/SC29/WG11 MPEG2011/N12559、サンノゼ、米国、2012年2月として利用可能であり、その内容全体が参照により本明細書に組み込まれる。参照ソフトウェアは、2013年3月13日現在、https://hevc.hhi.fraunhofer.de/svn/svn_3DVCSoftware/trunkから利用可能である。本開示の技法についてH.264/AVCおよびHEVCに関して説明したが、そのような技法は、他のコーディング規格に適用され得、いかなる特定のコーディング規格または技法にも限定されない。
[0060]図1は一例にすぎず、本開示の技法は、符号化デバイスと復号デバイスとの間のデータ通信を必ずしも含むとは限らないビデオコーディング設定(たとえば、ビデオ符号化またはビデオ復号)に適用され得る。他の例では、データがローカルメモリから取り出されること、ネットワークを介してストリーミングされることなどが行われる。ビデオ符号化デバイスがデータを符号化してメモリに記憶し得、および/またはビデオ復号デバイスがメモリからデータを取り出して復号し得る。多くの例では、符号化および復号は、互いに通信しないが、メモリにデータを符号化し、かつ/またはメモリからデータを取り出して復号するだけであるデバイスによって実行される。
[0061]ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ハードウェアなど、様々な好適な回路のいずれか、あるいはそれらの任意の組合せとして実装され得る。本技法が部分的にソフトウェアで実装される場合、デバイスは、好適な非一時的コンピュータ可読記憶媒体にソフトウェアの命令を記憶し得、1つまたは複数のプロセッサを使用してその命令をハードウェアで実行して、本開示の技法を実行し得る。(ハードウェア、ソフトウェア、ハードウェアとソフトウェアの組合せなどを含む)上記のいずれも、1つまたは複数のプロセッサであると見なされ得る。ビデオエンコーダ20およびビデオデコーダ30の各々は1つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも、それぞれのデバイスにおいて複合エンコーダ/デコーダ(コーデック)の一部として統合され得る。
[0062]本開示では、概して、ビデオエンコーダ20が、ある情報をビデオデコーダ30などの別のデバイスに「シグナリング」することに言及することがある。「シグナリング」という用語は、概して、圧縮ビデオデータを復号するために使用されるシンタックス要素および/または他のデータの通信を指し得る。そのような通信は、リアルタイムまたはほぼリアルタイムで行われ得る。代替的に、そのような通信は、符号化時に符号化ビットストリーム中でシンタックス要素をコンピュータ可読記憶媒体に記憶するときに行われることがあるなど、ある時間期間にわたって行われ得、次いで、これらの要素は、この媒体に記憶された後の任意の時間に復号デバイスによって取り出され得る。
[0063]ビデオシーケンスは、一般に一連のピクチャを含む。ピクチャは「フレーム」と呼ばれることもある。ピクチャは、SL、SCbおよびSCrと表される3つのサンプルアレイを含み得る。SLは、ルーマサンプルの2次元アレイ(すなわち、ブロック)である。SCbは、Cbクロミナンスサンプルの2次元アレイである。SCrは、Crクロミナンスサンプルの2次元アレイである。クロミナンスサンプルは、本明細書では「クロマ」サンプルと呼ばれることもある。他の例では、ピクチャは、モノクロームであり得、ルーマサンプルのアレイのみを含み得る。
[0064]ピクチャの符号化表現を生成するために、ビデオエンコーダ20は、ピクチャのサンプルアレイを等しいサイズのブロックに分割し得る。たとえば、H.264/AVCでは、ビデオエンコーダ20は、ピクチャをマクロブロック(MB)に分割し得る。MBは、3つのサンプルアレイを有するピクチャのルーマサンプルの16×16ブロックおよびクロマサンプルの2つの対応するブロック、またはモノクロームピクチャもしくは3つの個別のカラープレーンを使用してコード化されるピクチャのサンプルの16×16ブロックである。H.264/AVCでは、スライスは、特定のスライスグループ内でのラスタ走査において連続的に順序付けられている整数個のMBまたはMBペアを含み得る。
[0065]ビデオエンコーダ20は、MBを1つまたは複数のMBパーティションのセットに区分し得る。MBパーティションは、3つのサンプルアレイを有するピクチャについてのインター予測のためにMBを区分することによって得られたルーマサンプルの1つのブロックおよびクロマサンプルの2つの対応するブロック、またはモノクロームピクチャもしくは3つの個別のカラープレーンを使用してコード化されるピクチャのインター予測のためにMBを区分することによって得られたルーマサンプルの1つのブロックである。いくつかの事例では、ビデオエンコーダ20は、MBをサブMBに区分し得る。各サブMBは、MBのサンプルの1/4であり、すなわち、1つのコーナーが、3つのサンプルアレイを有するピクチャのためのMBのコーナーに位置する8×8ルーマブロックおよび2つの対応するクロマブロック、または1つのコーナーが、モノクロームピクチャまたは3つの個別のカラープレーンを使用して符号化されるピクチャのためのMBのコーナーに位置する8×8ルーマブロックである。サブMBパーティションは、3つのサンプルアレイを有するピクチャについてのインター予測のためにサブMBを区分することによって得られたルーマサンプルの1つのブロックおよびクロマサンプルの2つの対応するブロック、またはモノクロームピクチャもしくは3つの個別のカラープレーンを使用してコード化されるピクチャのインター予測のためにサブMBを区分することによって得られたルーマサンプルの1つのブロックである。MBまたはMBパーティションのルーマおよびクロマブロックは、一般に、MBまたはMBパーティションのサンプルブロックと呼ばれることがある。
[0066]HEVCでは、ビデオエンコーダ20は、コーディングツリーユニット(CTU:coding tree unit)のセットを生成し得る。CTUの各々は、ルーマサンプルのコーディングツリーブロック、クロマサンプルの2つの対応するコーディングツリーブロック、およびコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造であり得る。コーディングツリーブロックは、サンプルのN×Nブロックであり得る。CTUは「最大コーディングユニット」(LCU:largest coding unit)と呼ばれることもある。HEVCでは、スライスは整数個のCTUを備え得る。HEVCのCTUは、H.264/AVCなど、他の規格のMBに広い意味で類似し得る。しかしながら、CTUは、必ずしも特定のサイズに限定されるとは限らず、1つまたは複数のコーディングユニット(CU:coding unit)を含み得る。CUは、ルーマサンプルアレイ、CbサンプルアレイおよびCrサンプルアレイ、ならびにコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造を有するピクチャのルーマサンプルの1つのコーディングブロックおよびクロマサンプルの2つの対応するコーディングブロックであり得る。コーディングブロックは、サンプルのN×Nブロックである。
[0067]さらに、HEVCでは、CUは、1つまたは複数の予測ユニット(PU)を有し得る。PUは、ピクチャのルーマサンプルの1つの予測ブロックと、クロマサンプルの2つの対応する予測ブロックと、予測ブロックサンプルを予測するために使用されるシンタックス構造とであり得る。予測ブロックは、同じ予測が適用されるサンプルの方形(たとえば、M×N)ブロックであり得る。CUのPUの予測ブロックは、CUのコーディングブロックのパーティションであり得る。PUのルーマおよびクロマブロックは、一般に、PUのサンプルブロックと呼ばれることがある。
[0068]ビデオエンコーダ20が現在のビデオユニット(MB、MBパーティション、PUなど)を符号化するとき、ビデオエンコーダ20は、現在のビデオユニットのための予測ルーマおよびクロマブロックを生成し得る。ビデオエンコーダ20は、予測ブロックを生成するためにイントラ予測またはインター予測を実行し得る。ビデオエンコーダ20がイントラ予測を実行するとき、ビデオエンコーダ20は、現在のビデオユニットと同じピクチャ内のサンプルに少なくとも部分的に基づいて、現在のビデオユニットのための予測ルーマおよびクロマブロックを生成し得る。
[0069]ビデオエンコーダ20が、現在のビデオユニットのための予測ルーマおよびクロマブロックを生成するためにインター予測を実行するとき、ビデオエンコーダ20は、1つまたは複数の参照ピクチャ内の参照ブロックに基づいて予測ブロックを生成し得る。参照ピクチャは、現在のビデオユニットを含んでいるピクチャ以外のピクチャであり得る。より詳細には、ビデオエンコーダ20は、第1の参照ピクチャリスト(RefPicList0)と第2の参照ピクチャリスト(RefPicList1)とを生成し得る。RefPicList0およびRefPicList1は、参照ピクチャのリストである。ビデオエンコーダ20が、現在のビデオユニットを符号化するために単方向インター予測を使用する場合、ビデオエンコーダ20は、参照ブロックを含む参照ピクチャのRefPicList0またはRefPicList1のいずれかの内の位置を示す参照インデックスをシグナリングし得る。ビデオエンコーダ20はまた、現在のビデオユニットのルーマブロックと参照ブロックとの間の空間変位を示す動きベクトルをシグナリングし得る。ビデオエンコーダ20が双方向インター予測を使用する場合、ビデオエンコーダ20は、参照ブロックを含んでいる参照ピクチャのRefPicList0およびRefPicList1内の位置を示す2つの参照インデックスをシグナリングし得る。ビデオエンコーダ20はまた、現在のビデオユニットのルーマブロックと参照ブロックとの間の空間変位を示す動きベクトルをシグナリングし得る。
[0070]H.264/AVCでは、各インターMB(すなわち、インター予測を使用して符号化された各MB)は、1つの16×16MBパーティション、2つの16×8MBパーティション、2つの8×16MBパーティション、または4つの8×8MBパーティションの4つの異なる方法のうちの1つで区分され得る。1つのブロック中の異なるMBパーティションは、方向(RefPicList0またはRefPicList1)ごとに異なる参照インデックスを有し得る。MBが4つの8×8MBパーティションに区分されないとき、MBはMBパーティション全体について各方向に1つの動きベクトルしか有しない。この場合、MBパーティションは、16×16、8×16または16×8のサイズを有することができる。MBが、4つの8×8MBパーティションに区分されるとき、各8×8MBパーティションはサブブロックにさらに区分され得、その各々が各方向に異なる動きベクトルを有することができる。8×8MBパーティションを、1つの8×8サブブロック、2つの8×4サブブロック、2つの4×8サブブロック、および4つの4×4サブブロックのサブブロックに区分する4つの異なる方法がある。サブブロックの各々は、各方向に異なる動きベクトルを有し得る。
[0071]H.264/AVCでは、ビデオエンコーダ20は、動きベクトル差分(MVD)をシグナリングすることによって、現在のビデオユニット(たとえば、MBまたはMBパーティション)の動きベクトルをシグナリングし得る。MVDは、動きベクトル予測子と現在のビデオユニットの動きベクトルとの間の差を示す。動きベクトル予測子は、隣接ブロックの動きベクトルであり得る。隣接ブロックは、現在のビデオユニットのサンプルブロックの上にまたはそれの左側にあり得る。動きベクトル予測子を生成する際に使用するために隣接ブロックが利用可能でない場合、動きベクトル予測子の水平および垂直成分は0に等しくなり得る。理由の中でも、隣接ブロックと現在のブロックとが異なるスライス中にある、隣接ブロックが現在のピクチャの境界内にないなどの場合、隣接ブロックは利用可能でないことがある。
[0072]さらに、H.264/AVCでは、ビデオエンコーダ20は、MBのためのシンタックス要素を含むMBレイヤシンタックス構造を生成し得る。MBレイヤシンタックス構造は、MBの区分モードに応じて、MB予測シンタックス構造またはサブMB予測シンタックス構造を含み得る。MB予測シンタックス構造またはサブMB予測シンタックス構造は、MBについての動き情報またはMBのMBパーティションについての動き情報を示すシンタックス要素を含み得る。たとえば、MB予測シンタックス構造およびサブMB予測シンタックス構造は、参照インデックスおよびMVDを指定するシンタックス要素を含み得る。
[0073]さらに、HEVCでは、ビデオエンコーダ20が、現在のPUのための予測ブロックを生成するためにインター予測を使用するとき、ビデオエンコーダ20は、マージモードまたは適応動きベクトル予測(AMVP:Adaptive Motion Vector Prediction)モードを使用して現在のPUについての動き情報をシグナリングし得る。マージモードまたはAMVPモードのいずれのモードでも、ビデオエンコーダ20は、予測子候補のリスト(すなわち、候補リスト)を生成し得る。予測子候補は、現在のPU以外のPUの動き情報を指定し得る。マージモードでは、ビデオエンコーダ20は、選択された予測子候補の候補リスト内の位置をシグナリングし得る。PUの動き情報は、選択された予測子候補によって指定された動き情報と同じであり得る。AMVPモードでは、ビデオエンコーダ20は、選択された予測子候補、参照インデックス、および現在のPUのためのMVDの候補リスト内の位置をシグナリングし得る。現在のPUのためのMVDは、選択された予測子候補の動きベクトルと現在のPUの動きベクトルとの間の差に基づき得る。
[0074]ビデオエンコーダ20が、現在のビデオユニット(MB、MBパーティション、PUなど)に対応する予測ブロックを生成した後、ビデオエンコーダ20は残差ブロックを生成し得る。残差ブロック中の各サンプルは、現在のビデオユニットのサンプルブロック中の対応するサンプルと予測ブロックとの間の差に基づき得る。ビデオエンコーダ20は、1つまたは複数の変換係数ブロックを生成するために残差ブロックに変換を適用し得る。ビデオエンコーダ20は、現在のビデオユニットを表すために使用されるビット数をさらに低減するために変換係数ブロックを量子化し得る。変換係数ブロックを量子化した後、ビデオエンコーダ20は、変換係数ブロック内の変換係数を表すシンタックス要素と他のシンタックス要素とをエントロピー符号化し得る。たとえば、ビデオエンコーダ20は、コンテキスト適応型バイナリ算術コーディング(CABAC)、コンテキスト適応型可変長コーディング(CAVLC)、指数ゴロムコーディング、またはシンタックス要素に対する別のタイプのエントロピー符号化を実行し得る。ビデオエンコーダ20は、エントロピー符号化されたシンタックス要素を含むビットストリームを出力し得る。
[0075]シンタックス要素にCABAC符号化を適用するために、ビデオエンコーダ20は、「ビン」と呼ばれる一連の1つまたは複数のビットを形成するためにシンタックス要素を2値化し得る。さらに、ビデオエンコーダ20はコーディングコンテキストを識別し得る。コーディングコンテキストは、特定の値を有するビンをコーディングする確率を識別し得る。たとえば、コーディングコンテキストは、0の値のビンをコーディングする0.7の確率と、1の値のビンをコーディングする0.3の確率とを示し得る。コーディングコンテキストを識別した後、ビデオエンコーダ20は、間隔を下位サブ間隔と上位サブ間隔とに分割し得る。サブ間隔のうちの一方は値0に関連付けられ得、他方のサブ間隔は値1に関連付けられ得る。サブ間隔の幅は、関連する値について識別されたコーディングコンテキストによって示される確率に比例し得る。シンタックス要素のビンが下位サブ間隔に関連する値を有する場合、符号化された値は下位サブ間隔の下位境界に等しくなり得る。シンタックス要素の同じビンが上位サブ間隔に関連する値を有する場合、符号化された値は上位サブ間隔の下位境界に等しくなり得る。シンタックス要素の次のビンを符号化するために、ビデオエンコーダ20は、符号化されたビットの値に関連するサブ間隔である間隔で、これらのステップを繰り返し得る。ビデオエンコーダ20が次のビンについてこれらのステップを繰り返すとき、ビデオエンコーダ20は、識別されたコーディングコンテキストおよび符号化されたビンの実際の値によって示された確率に基づく修正された確率を使用し得る。
[0076]ビデオエンコーダ20は、エントロピー符号化されたシンタックス要素を含むビットストリームを出力し得る。ビットストリームは、コード化ピクチャおよび関連するデータの表現を形成するビットのシーケンスを含み得る。ビットストリームは、一連のネットワークアブストラクションレイヤ(NAL:network abstraction layer)ユニットを備え得る。NALユニットの各々は、NALユニットヘッダを含み、ローバイトシーケンスペイロード(RBSP:raw byte sequence payload)をカプセル化する。NALユニットヘッダは、NALユニットタイプコードを含むシンタックス要素を含み得る。NALユニットのNALユニットヘッダによって指定されるNALユニットタイプコードは、NALユニットのタイプを示す。RBSPは、NALユニット内にカプセル化された整数個のバイトを含んでいるシンタックス構造であり得る。いくつかの例では、RBSPはゼロビットを含む。
[0077]異なるタイプのNALユニットは、異なるタイプのRBSPをカプセル化し得る。たとえば、第1のタイプのNALユニットはピクチャパラメータセット(PPS)のためのRBSPをカプセル化し得、第2のタイプのNALユニットはコード化スライスのためのRBSPをカプセル化し得、第3のタイプのNALユニットは補足エンハンスメント情報(SEI:supplemental enhancement information)のためのRBSPをカプセル化し得、その他もあり得る。(パラメータセットおよびSEIメッセージのためのRBSPではなく)ビデオコーディングデータのためのRBSPをカプセル化するNALユニットは、ビデオコーディングレイヤ(VCL:video coding layer)NALユニットと呼ばれることがある。
[0078]ビデオデコーダ30は、ビデオデータの符号化表現を含むビットストリームを受信し得る。ビデオデコーダ30は、ビットストリームのシンタックス要素を復号するためにビットストリームをパースし得る。ビットストリームのシンタックス要素を復号することの一部として、ビデオデコーダ30は、ビットストリームのシンタックス要素をエントロピー復号し得る。たとえば、ビデオデコーダ30は、少なくともいくつかのシンタックス要素に対してCABAC復号を実行し得る。ビデオデコーダ30は、現在のビデオユニットのための予測ブロックを生成するために、現在のビデオユニット(MB、MBパーティション、PUなど)に関連するシンタックス要素に少なくとも部分的に基づいて、インター予測またはイントラ予測を実行し得る。さらに、ビデオデコーダ30は、現在のビデオユニットに関連する変換係数ブロックの変換係数を逆量子化し得、変換係数ブロックに1つまたは複数の逆変換を適用して残差ブロックを生成し得る。ビデオデコーダ30は、残差ブロックと予測ブロックとに少なくとも部分的に基づいて現在のビデオユニットブロックのためのサンプルブロックを再構成し得る。このようにして、ピクチャのブロックを再構成することによって、ビデオデコーダ30はピクチャを再構成し得る。
[0079]ビデオデコーダ30がシンタックス要素に対してCABAC復号を実行するとき、ビデオデコーダ30はコーディングコンテキストを識別し得る。ビデオデコーダ30は、次いで、間隔を下位サブ間隔と上位サブ間隔とに分割し得る。サブ間隔のうちの一方は値0に関連付けられ得、他方のサブ間隔は値1に関連付けられ得る。サブ間隔の幅は、関連する値について識別されたコーディングコンテキストによって示される確率に比例し得る。符号化された値が下位サブ間隔内にある場合、ビデオデコーダ30は、下位サブ間隔に関連する値を有するビンを復号し得る。符号化された値が上位サブ間隔内にある場合、ビデオデコーダ30は、上位サブ間隔に関連する値を有するビンを復号し得る。シンタックス要素の次のビンを復号するために、ビデオデコーダ30は、符号化された値を含んでいるサブ間隔である間隔で、これらのステップを繰り返し得る。ビデオデコーダ30が次のビンについてこれらのステップを繰り返すとき、ビデオデコーダ30は、識別されたコーディングコンテキストおよび復号されたビンによって示された確率に基づく修正された確率を使用し得る。ビデオデコーダ30は、次いで、ビンを逆2値化してシンタックス要素を復元し得る。
[0080]上述のように、マルチビュービデオコーディング(MVC)はH.264/AVC規格の拡張である。H.264/AVCのMVC拡張では、異なる視点からの同じシーンの複数のビューがあり得る。「アクセスユニット」という用語は、同じ時間インスタンスに対応するピクチャのセットを指すために使用される。したがって、ビデオデータは、時間とともに生じる一連のアクセスユニットとして概念化され得る。「ビューコンポーネント」は、単一のアクセスユニット中のビューのコード化表現であり得る。本開示では、「ビュー」は、同じビュー識別子に関連する一連のビューコンポーネントを指すことがある。
[0081]H.264/AVCのMVC拡張はビュー間予測をサポートする。ビュー間予測は、H.264/AVCにおいて使用されるインター予測と同様であり、同じシンタックス要素を使用し得る。ただし、ビデオコーダが現在のビデオユニット(MBまたはMBパーティションなど)に対してビュー間予測を実行するとき、ビデオエンコーダ20は、参照ピクチャとして、現在のビデオユニットと同じアクセスユニット中にあるが異なるビュー中にあるピクチャを使用し得る。対照的に、従来のインター予測は、参照ピクチャとして異なるアクセスユニット中のピクチャのみを使用する。
[0082]MVCでは、ビデオデコーダ(たとえば、ビデオデコーダ30)が、あるビュー中のピクチャを他のビュー中のピクチャと無関係に復号することができる場合、そのビューは「ベースビュー」と呼ばれることがある。非ベースビューのうちの1つの中のピクチャをコーディングするとき、ピクチャが、異なるビュー中にあるがビデオコーダが現在コーディング中のピクチャと同じ時間インスタンス(すなわち、アクセスユニット)内にある場合、ビデオコーダ(ビデオエンコーダ20またはビデオデコーダ30など)は、参照ピクチャリストにピクチャを追加し得る。他のインター予測参照ピクチャと同様に、ビデオコーダは、参照ピクチャリストの任意の位置にビュー間予測参照ピクチャを挿入し得る。
[0083]MVCでは、ビュー間予測は、視差動き補償によってサポートされ得る。視差動き補償は、H.264/AVC動き補償のシンタックスを使用するが、異なるビュー中のピクチャを参照ピクチャとして使用することが可能であり得る。2つ以上のビューのコーディングがMVCによってサポートされ得る。MVCの利点のうちの1つは、MVCエンコーダが3Dビデオ入力として3つ以上のビューを使用し得、MVCデコーダがそのようなマルチビュー表現を復号し得ることである。その結果、MVCをサポートするビデオデコーダは、3つ以上のビューをもつ3Dビデオコンテンツを処理し得る。
[0084]さらに、H.264/AVCの新生のMVCベースの3DV拡張がある。MVCベースの3DVは、MVC互換性を維持しながら3D拡張を可能にするように設計されている。MVCベースの3DVは、深度マップを提供する。したがって、MVCベースの3DVは、「MVCプラス深度」、「MVC+D」、または「深度を含むMVC互換拡張」と呼ばれることもある。その内容全体が参照により本明細書に組み込まれる、Suzukiら、「WD of MVC extensions for inclusion of depth maps」、ISO/IEC/JTC1/SC29/WG11/N12351、2011年12月は、MVC互換3DVのドラフトである。その内容全体が参照により本明細書に組み込まれる、Suzukiら、「WD of MVC extensions for inclusion of depth maps」、ISO/IEC/JTC1/SC29/WG11/N12544、2012年2月は、MVC互換3DVの後のドラフトである。
[0085]深度マップは、ピクセル(たとえば、サンプル)値が、対応する「テクスチャ」ピクチャ中に示されるオブジェクトの3次元深度を表すピクチャである。いくつかの例では、深度マップ中のより明るいピクセル値は、カメラにより近いオブジェクトに対応し得、深度マップ中のより暗いピクセル値は、カメラからより遠くのオブジェクトに対応し得る。「テクスチャ」ピクチャは、通常のH.264/AVCピクチャであり得る。
[0086]本開示では、ビューのテクスチャ部分は「テクスチャビュー」と呼ばれることがあり、ビューの深度部分は「深度ビュー」と呼ばれることがある。1つのアクセスユニット中のビューのテクスチャ部分、すなわち、1つのアクセスユニット中のテクスチャビューは、「テクスチャビューコンポーネント」と呼ばれることがある。1つのアクセスユニット中のビューの深度部分、すなわち1つのアクセスユニット中の深度ビューは、「深度ビューコンポーネント」と呼ばれることがある。したがって、「ビューコンポーネント」という用語は、1つのアクセスユニット中のビューを指すことがあり、同じアクセスユニットのテクスチャビューコンポーネントと深度ビューコンポーネントの両方を集合的に指すことがある。
[0087]上述のように、H.264/AVCの3DV拡張、すなわち、AVCベースの3DVを生成するための取り組みが進行中である。MVCベースの3DVと同様に、AVCベースの3DVは、深度マップを提供する。AVCベースの3DVでは、ビデオエンコーダ20は、アクセスユニットの他のビューと同じ方法で深度マップを符号化し得る。MVCベースの3DVとは対照的に、AVCベースの3DVでは、テクスチャビューコンポーネントに基づいて深度ビューコンポーネントを符号化することが可能であり得る。これは、コーディング効率を高め得るが、複雑さを増大させ得る。AVCベースの3DVは、MVCと互換性がないことがある。
[0088]AVCベースの3DVでは、ビデオエンコーダ20は、利用可能なテクスチャおよび深度ビューコンポーネントに基づいて合成テクスチャビューコンポーネントを生成し得る。すなわち、ループ内ビュー合成予測(VSP)は、拡張テクスチャコーディングのためにAVCベースの3DV(および他のビデオコーディング規格)においてサポートされる。合成テクスチャビューコンポーネントは、深度マップと1つまたは複数のテクスチャビューコンポーネントとに基づいて合成されたテクスチャビューコンポーネントであり得る。すなわち、現在のビューのコーディングのためにVSPを使用可能にするために、同じアクセスユニットの以前にコーディングされたテクスチャおよび深度ビューコンポーネントがビュー合成のために使用され得る。
[0089]たとえば、特定のテクスチャビューコンポーネントは、左眼テクスチャビューコンポーネントであり得、ビデオエンコーダ20は、3DV再生のための右眼テクスチャビューコンポーネントを生成し得る。いくつかの事例では、合成テクスチャビューコンポーネントは、アクセスユニット間予測またはビュー間予測のための参照ピクチャとして使用され得る。したがって、VSPから生じる合成ピクチャは、時間的およびビュー間参照フレームに続く初期参照ピクチャリスト(すなわち、RefPicList 0および/またはRefPicList 1)中に含まれ得る。参照ピクチャとして使用される合成テクスチャビューコンポーネントはビュー合成参照ピクチャ(VSRP:view synthesis reference picture)、ビュー合成予測(VSP)参照ピクチャ、または単に、VSPピクチャと呼ばれることがある。
[0090]AVCベースの3DVのためのいくつかテストモデルでは、VSPは、RefPicList0またはRefPicList1などの参照ピクチャリストに合成ピクチャを追加することによって実現される。この手法に関するいくつかの潜在的な問題がある。たとえば、VSP参照ピクチャに対する動きベクトルは、一般に、極めて0に近くなる。すなわち、VSPピクチャ内の参照ブロックに対する動きベクトルはほとんど常に0の大きさを有する。しかしながら、そのようなテストモデルの手法は、動きベクトル差分についてのコンテキストの効率を低減し得る。たとえば、VSPブロックの動きベクトルは、一般に、0であるが、しかしながら、隣接ブロックが時間的ピクチャを用いて予測される場合、動きベクトル予測は、0に近くならないように導出され得、したがって、不要な動きベクトル差分をシグナリングする必要があり得るか、またはさもなければ、動きベクトル予測子は不十分である。
[0091]本開示のいくつか技法によれば、ビデオエンコーダ20は、ビットストリーム中で、現在のビデオユニットがVSPピクチャから予測されるかどうかを示すシンタックス要素をシグナリングし得る。いくつかの例では、現在のビデオユニットは、MB、MBパーティション、または別のタイプのユニットであり得る。H.264/AVCが使用される例では、MBまたはMBパーティションがVSPピクチャから予測されるかどうかを示すために、VSPモードのシグナリングがMBまたはMBパーティションレベルで導入される。ビデオユニット(たとえば、MBまたはMBパーティション)のVSPモードは、ビデオユニットがVSPピクチャから予測されるかどうかを示す。
[0092]いくつかの例では、現在のビデオユニットがVSPピクチャから予測されるとき、ビデオエンコーダ20は、現在のビデオユニットについての動き情報をシグナリングしない。H.264/AVCが使用される例では、現在のビデオユニットについての動き情報は、1つまたは複数の参照インデックスと1つまたは複数のMVDとを含み得る。HEVCが使用される例では、現在のビデオユニットについての動き情報は、1つまたは複数の参照インデックスと、1つまたは複数の動きベクトル候補インデックスと、1つまたは複数のMVDと、予測方向インジケータとを含み得る。
[0093]さらに、現在のビデオユニットがVSPピクチャから予測されるとき、ビデオエンコーダ20は、現在のビデオユニットのサンプルブロックとコロケートされたVSPピクチャのブロックに少なくとも部分的に基づいて、現在のビデオユニットのための予測ブロックを生成し得る。ビデオエンコーダ20は、現在のビデオユニットのための残差ブロックを生成し得る。残差ブロックは、現在のビデオユニットのサンプルブロックと現在のビデオユニットのための予測ブロックとの間の差を示し得る。ビデオエンコーダ20は、残差ブロックのサンプルを変換し、量子化し、エントロピー符号化し得る。
[0094]ビデオデコーダ30は、ビットストリームから、シンタックス要素を復号し、シンタックス要素に少なくとも部分的に基づいて、現在のビデオユニットがVSPピクチャから予測されるかどうかを判断し得る。現在のビデオユニットがVSPピクチャから予測されるとき、ビデオデコーダ30は、現在のビデオユニットとコロケートされたVSPピクチャのブロックに少なくとも部分的に基づいて、現在のビデオユニットのための予測ブロックを生成し得る。ビデオデコーダ30は、ビットストリームから、現在のビデオユニットについての動き情報を復号することなしに、現在のビデオユニットのための予測ブロックを生成し得る。
[0095]したがって、本開示の技法によれば、予測ブロックがVSPピクチャ中のコロケートブロックに一致するように、ビデオコーダは、現在のビデオユニット(たとえば、MBまたはMBパーティション)のための予測ブロックを生成し得る。言い換えれば、現在のビデオユニットがVSPピクチャから予測されるとき、ビデオコーダは、VSPピクチャから現在のビデオユニットのコロケートブロックをコピーする。
[0096]ビデオデコーダ30は、現在のビデオユニットがVSPピクチャから予測されるとき、現在のビデオユニットについての動き情報を復号することなしに現在のビデオユニットのための予測ブロックを生成することが可能であり得るので、参照ピクチャリスト中にVSPピクチャを含めることは不要であり得る。したがって、本開示の技法によれば、参照ピクチャリストにVSPピクチャを追加するのではなく、ビデオコーダ(ビデオエンコーダ20またはビデオデコーダ30など)は参照ピクチャリストにVSPピクチャを追加しない。
[0097]さらに、本開示の技法によれば、ビデオコーダは、隣接ブロック(たとえば、隣接MBまたはMBパーティション)に関連する情報に少なくとも部分的に基づいて、現在のビデオユニット(たとえば、現在のMBまたはMBパーティション)の動き情報をエントロピーコーディングするためのコーディングコンテキストを選択し得る。隣接ブロック(たとえば、隣接MBまたはMBパーティション)がVSPピクチャから予測されるとき、ビデオコーダは、隣接ブロックに関連する情報が、現在のビデオユニットの動き情報をエントロピーコーディングするためのコーディングコンテキストを選択する際に使用するために利用不可能であると判断し得る。たとえば、特定のMBまたは特定のMBパーティションの動き情報をエントロピーコーディングするためのエントロピーコーディングコンテキストを構成するとき、VSPピクチャを使用するMBまたはMBパーティションは、エントロピーコーディングコンテキストの選択において使用するために利用不可能であると見なされる。ビデオコーダは、隣接ブロックに関連する情報がコーディングコンテキストを選択する際に使用するために利用不可能であると判断すると、ビデオコーダは、コーディングコンテキストを選択するために隣接ブロックに関連する情報を使用しない。したがって、VSPピクチャを使用するブロック(たとえば、MBまたはMBパーティション)は、現在のビデオユニットの動きに関係するシンタックス要素についてのエントロピーコーディングコンテキストにまったく影響を及ぼし得ない。
[0098]上記のように、ビデオエンコーダ20は、MB、MBパーティション、サブMBパーティションなどのビデオユニットがVSPピクチャから予測されるかどうかを示すシンタックス要素をシグナリングし得る。たとえば、ビデオエンコーダ20は、MBがVSPピクチャから予測されるかどうかを示すシンタックス要素を生成し得、ビデオエンコーダ20は、MBパーティションがVSPピクチャから予測されるかどうかを示すシンタックス要素を生成し得、サブMBパーティションがVSPピクチャから予測されるかどうかを示すシンタックス要素を生成し得る。本開示の技法によれば、ビデオコーダは、MB、MBパーティション、およびサブMBパーティションがVSPピクチャから予測されるかどうかを示すシンタックス要素をエントロピーコーディングするとき、同じまたは異なるコーディングコンテキストを使用し得る。たとえば、VSPモードを示す導入されたMBまたはMBパーティションレベルシンタックス要素は、エントロピーコーディングするために同じまたは異なるコンテキストを共有し得る。
[0099]ビデオデコーダ30は、動きベクトル予測子およびMVDに基づいて、現在のビデオユニットの動きベクトルを予測(すなわち、判断)し得る。H.264/AVCでは、動きベクトル予測子は、隣接ブロックが利用可能であるとき、隣接ブロック(たとえば、隣接MB、MBパーティション、またはサブMBパーティション)の動きベクトルから導出され得る。本開示の技法によれば、ビデオコーダが現在のビデオユニットの動きベクトルを予測するとき、VSPピクチャから予測されるブロック(たとえば、MBまたはMBパーティション)は利用不可能であると見なされ得る。
[0100]H.264/AVCおよびそれの拡張では、ビデオエンコーダ20は、スライスのためのスライスヘッダシンタックス構造とスライスのためのスライスデータシンタックス構造とを生成し得る。上記のように、スライスは整数個のMBを含み得る。スライスのためのスライスデータシンタックス構造は、スライスのMBのためのMBレイヤシンタックス構造を含み得る。MBのためのMBレイヤシンタックス構造は、MBのためのシンタックス要素を含み得る。AVCベースの3DV試験モデル(3D−ATM)のいくつかのバージョンでは、スライスのためのスライスデータシンタックス構造は、スライスのMBのためのmb_skip_flagシンタックス要素を含み得る。スライスがPスライスまたはSPスライスであるとき、MBのためのmb_skip_flagシンタックス要素は、MBがP_Skipモードで符号化されるかどうかを示す。スライスがBスライスであるとき、MBのためのmb_skip_flagシンタックス要素は、MBがB_Skipモードで符号化されるかどうかを示す。たとえば、MBのためのmb_skip_flagシンタックス要素が1に等しくなり、スライスがPまたはSPスライスである場合、ビデオデコーダ30は、MBのためのmb_typeがP_Skipであると推論し得る(MBタイプは、P MBタイプと総称される)。mb_skip_flagシンタックス要素が1に等しくなり、スライスがBスライスである場合、ビデオデコーダ30は、MBのためのmb_typeがB_Skipであると推論し得る(MBタイプは、B MBタイプと総称される)。この例では、MBのためのmb_skip_flagが0に等しくなる場合、MBはスキップされない。
[0101]MBがP_Skipモードで符号化されるとき、ビデオデコーダ30は、MBの予測ルーマおよびクロマブロックが参照ピクチャ中のコロケートMBのルーマおよびクロマブロックに一致するように、MBのための予測ルーマおよびクロマブロックを導出し得る。したがって、MBがP_Skipモードで符号化されるとき、MBのためのMBレイヤシンタックス構造は、参照ピクチャの、RefPicList0またはRefPicList1内でのロケーションを識別する参照インデックスを含み得る。同様に、MBがB_Skipモードで符号化されるとき、ビデオデコーダ30は、2つの参照ピクチャのコロケートMBからMBの予測ルーマおよびクロマブロックを導出し得る。MBがB_Skipモードで符号化されるとき、MBのためのMBレイヤシンタックス構造は、参照ピクチャの、RefPicList0およびRefPicList1内でのロケーションを識別する参照インデックスを含み得る。MBがP_SkipモードまたはB_Skipモードで符号化されるとき、MBのためのMBレイヤシンタックス構造は、動き情報、変換係数レベルなどを指定するシンタックス要素など、他のシンタックス要素を含む必要がない。
[0102]さらに、3D−ATMのいくつかバージョンでは、スライスのためのスライスデータシンタックス構造は、現在のMBがVSPピクチャからスキップされるかどうかを示すVSPスキップシンタックス要素を含み得る。言い換えれば、VSPスキップシンタックス要素は、現在のMBのための予測ルーマおよびクロマブロックがVSPピクチャのコロケートルーマおよびクロマブロックに一致することを示し得る。現在のMBがVSPピクチャからスキップされることをVSPスキップシンタックス要素が示すとき、現在のMBは、VSPピクチャから常に単方向予測される。VSPスキップシンタックス要素とmb_skip_flagシンタックス要素とは、一緒にシグナリングされ得、現在のMBの上および左側のMBに基づくコンテキストに基づいてエントロピー符号化され得る。
[0103]mb_skip_flagシンタックス要素とskip_from_vsp_flagシンタックス要素とは、比較的複雑な方法でシグナリングされ得る。本開示では、この問題を、スキップモードシグナリング複雑さ問題と呼ぶことがある。さらに、上記で説明したいくつかの技法では、ビューコンポーネントまたはスライス全体について1つのVSPピクチャしか利用可能でない。いくつかのそのような技法は、VSPピクチャからの単方向予測のみをサポートし得、複数のVSPピクチャからの予測はサポートされない。本開示では、この問題を、単方向VSPスキップモード問題と呼ぶことがある。本開示の追加の技法はこれらの問題に対処し得る。これらの追加の技法は、完全な解決策のために協働することも協働しないこともある。
[0104]スキップモードシグナリング複雑さ問題に対処するための例示的な技法では、1つのVSPピクチャしか利用可能でないとき、mb_skipフラグシンタックス要素とVSPピクチャからスキップすることを示すフラグ(たとえば、VSPスキップシンタックス要素)とは組み合わされて単一のシンタックス要素になる。この組み合わせられた単一のシンタックス要素は、本明細書ではmb_skip_idcシンタックス要素と呼ばれることがある。さらに、現在のMBのためのmb_skip_idcシンタックス要素を予測するために、隣接ブロックのためのmb_skip_idcシンタックス要素の値のコンテキストが使用され得る。
[0105]単方向VSPスキップモード問題に対処するための第1の例示的な技法は、MBのための少なくとも1つの予測子(すなわち、参照ピクチャ)がVSPピクチャであり、予測方向ごとに1つのVSPピクチャしか利用可能でないときに適用可能である。この例では、MBパーティションの所与の予測方向がVSPから予測されるのかどうかを示すために、mb_part_vsp_flagシンタックス要素とsub_mb_vsp_flagシンタックス要素とが両方の方向に延長される。上記のように、MB予測シンタックス構造のmb_part_vsp_flagシンタックス要素は、現在のMBパーティションがVSPピクチャから予測されるかどうかを示す。サブMB予測シンタックス構造のsub_mb_vsp_flagシンタックス要素は、現在のMBパーティションがVSPピクチャから予測されるかどうかを示す。
[0106]単方向VSPスキップモード問題に対処するための第2の例示的な技法は、MBのための少なくとも1つの予測子(すなわち、参照ピクチャ)がVSPピクチャであり、予測方向ごとに1つのVSPピクチャしか利用可能でないときに適用可能である。この例では、VSPピクチャは、参照ピクチャリスト(たとえば、RefPicList0またはRefPicList1)の中に残る。MBまたはサブMBの参照インデックス(たとえば、ref_idxシンタックス要素)がVSPピクチャに対応するとき、双方向予測は自動的にVSPピクチャからのものである。ただし、本開示の他の技法と同様に、そのようなref_idx(ref_idxはRefPicListXに属すると仮定する)に対応する動きベクトルはシグナリングされず、MBパーティションのRefPicListXに関連する動き情報は利用不可能であると見なされる。これは、単方向予測にも適用され得る。
[0107]単方向VSPスキップモード問題に対処する別の例示的な技法では、複数のVSPピクチャがサポートされる。この例では、VSPが使用されることを任意のフラグが示すとき、さらなるインデックスがシグナリングされ得る。代替的に、すべての可能なVSPピクチャと通常のスキップピクチャとを考慮に入れ、1つのシンタックス要素を用いてそれらを一緒にシグナリングする直接指示が与えられる。
[0108]本開示の技法について、ほとんどH.264/AVCに関して上記で説明したが、本開示の技法はまた、HEVCおよび詳細にはHEVCの3DV拡張に適用可能であり得る。文献m23783で提案された、HEVCの3DV拡張では、合成画像(たとえば、VSPピクチャ)のいくつか領域は、他のビュー(すなわち、VSPピクチャが合成されたビュー)において遮られていたので、それらの領域は利用可能でない。VSPピクチャのそのような領域は他のビューでは隠されていた(すなわち、遮られていた)ので、それらの領域は、非遮断領域(disoccluded region)と呼ばれることがある。非遮断領域は、コード化および復号プロセスを制御する2値マップ、すなわち、利用可能性マップ上で識別され、マーキングされる。ビデオコーダとビデオデコーダはどちらも、所与のCUがコーディングされたかどうかを判断するために利用可能性マップを使用し得る。しかしながら、観測値は、そのような技法のコーディング性能が最適ではないことを示している。したがって、主に以下の問題により、HEVCベースの3DVにおける効率的なVSP機構が欠如している。第1に、モードとしてのビュー合成は一部領域に対してしか有用でないことがある。第2に、ビュー合成モードは、HEVC設計全体にうまく統合されない。
[0109]本開示の技法は、HEVCベースの3DVにおけるVPSサポートのための解決策を与え得る。本開示の1つまたは複数の技法によれば、ビデオエンコーダ20は、現在のCUがVSPを用いてコーディングされる(VSPピクチャから予測される)かどうかを示すためにCUレベルにおいてフラグをシグナリングし得る。現在のCUがVSPを用いてコーディングされる(すなわち、現在のCUがVSP CUである)とき、VSP CUの残差は、他のモードと同じ方法でシグナリングされ得る。
[0110]さらに、いくつかの例では、ビデオエンコーダ20は、PUごとに、PUがVSPから予測されるかどうかを示すシンタックス要素(たとえば、フラグ)をシグナリングし得る。そのような例では、ビデオコーダは、VSPを用いてCU中の1つのPUを予測(すなわち、そのPUのための予測ブロックを生成)し得、一方、ビデオコーダは、通常のインターまたはイントラなどの他のモードを用いてそのCUの別のPUを予測し得る。さらに、そのような例では、ビデオコーダが、PUの動き情報をエントロピーコーディングするためのコーディングコンテキストを構成しているとき、ビデオコーダは、CUレベルフラグ(すなわち、CUのすべてのPUがVSPピクチャから予測されるかどうかを示すシンタックス要素)およびPUレベルフラグ(すなわち、単一のPUがVSPピクチャから予測されるかどうかを示すシンタックス要素)のために同じまたは異なるコンテキストモデルを使用し得る。
[0111]ビデオコーダが、VSPピクチャからCUまたはPUのための予測ブロックを生成するとき、ビデオコーダは、VSPピクチャからCUまたはPUのコロケートブロックをコピーし得る。言い換えれば、CUまたはPUのための予測ブロックは、VSPピクチャのコロケートブロックに一致し得る。
[0112]上記で説明したように、ビデオエンコーダ20は、マージモードまたはAMVPモードを使用して、現在のPUの動き情報をシグナリングし得る。マージモードまたはAMVPモードのいずれのモードでも、ビデオエンコーダ20は、予測子候補のリスト(すなわち、候補リスト)を生成し得る。予測子候補は、現在のPU以外のPUの動き情報を指定し得る。他のPUのうちの1つが利用可能でないとき、ビデオエンコーダ20は、他のPUの動き情報を指定する予測子候補を含まない。本開示の技法によれば、ビデオコーダが、動きベクトル予測中に利用可能性について隣接PU/CUを検査するとき、ビデオコーダは、VSPピクチャから予測されたPU/CU(すなわち、VSP PU/CU)を利用不可能であると見なし得る。
[0113]図2は、本開示の技法を実装し得る例示的なビデオエンコーダ20を示すブロック図である。図2は、説明のために提供されるものであり、本開示で広く例示し説明する技法を限定するものと見なされるべきではない。説明のために、本開示では、主に、H.264/AVCコーディングのコンテキストにおいてビデオエンコーダ20について説明する。しかしながら、本開示の技法は、HEVCなど、他のコーディング規格または方法にも適用可能であり得る。
[0114]図2の例では、ビデオエンコーダ20は、予測処理ユニット100と、残差生成ユニット102と、変換処理ユニット104と、量子化ユニット106と、逆量子化ユニット108と、逆変換処理ユニット110と、再構成ユニット112と、フィルタユニット114と、復号ピクチャバッファ116と、エントロピー符号化ユニット118とを含む。予測処理ユニット100は、インター予測処理ユニット120と、イントラ予測処理ユニット126とを含む。インター予測処理ユニット120は、動き推定ユニット122と、動き補償ユニット124とを含む。他の例では、ビデオエンコーダ20は、より多いか、より少ないか、または異なる機能構成要素を含み得る。
[0115]ビデオエンコーダ20は、ビデオデータを受信する。ビデオデータを符号化するために、ビデオエンコーダ20は、ビデオデータの各ピクチャの各MBを符号化し得る。MBを符号化するために、予測処理ユニット100は、そのMBのための区分モードを選択し得る。ビデオエンコーダ20は、MBのためのMBレイヤシンタックス構造中のmb_typeシンタックス要素を使用してMBのための区分モードをシグナリングし得る。MBのための区分モードは、MBのルーマおよびクロマブロックがMBのMBパーティションのルーマおよびクロマブロックにどのように区分されるかを示し得る。
[0116]スライスは整数個のMBを含み得る。さらに、スライスは、Iスライス、Pスライス、SPスライス、SIスライス、またはBスライスであり得る。MBがIスライスである場合、MBのすべてのMBパーティションがイントラ予測される。したがって、MBがIスライス中にある場合、動き推定ユニット122および動き補償ユニット124は、MBに対してインター予測を実行しない。SPスライスは、各ブロックのサンプル値を予測するために多くて1つの動きベクトルと参照インデックスとを使用する予測サンプルの量子化を用いるイントラ予測またはインター予測を使用してコーディングされ得るスライスである。SPスライスは、その復号サンプルが、別のSPスライスまたはSIスライスと同等に構築され得るようにコーディングされ得る。SIスライスは、イントラ予測のみを使用し、予測サンプルの量子化を使用してコーディングされるスライスである。SIスライスは、その復号サンプルが、SPスライスと同等に構築され得るようにコーディングされ得る。
[0117]インター予測処理ユニット120は、Pスライス、SPスライス、またはBスライスの各々のコーディングの始めに参照ピクチャリスト構築プロセスを実行し得る。インター予測処理ユニット120がPスライスまたはSPスライスをコーディングしている場合、インター予測処理ユニット120は、第1の参照ピクチャリスト(たとえば、RefPicList0)を生成し得る。インター予測処理ユニット120がBスライスをコーディングしている場合、インター予測処理ユニット120は、第1の参照ピクチャリスト(たとえば、RefPicList0)を生成し、第2の参照ピクチャリスト(たとえば、RefPicList1)をも生成し得る。
[0118]ビデオエンコーダ20が、Pスライス中の現在のビデオユニット(たとえば、MBまたはMBパーティション)をコーディングしている場合、動き推定ユニット122は、現在のビデオユニットのための参照ブロックを求めて参照ピクチャリスト(たとえば、RefPicList0)中の参照ピクチャを探索し得る。ビデオエンコーダ20がMVC互換3DVまたはAVC互換3DVを使用する例では、参照ピクチャリストは、ビュー間参照ピクチャを含み得る。ビデオエンコーダ20がAVC互換3DVを使用する例では、参照ピクチャリスト中のビュー間参照ピクチャは、深度マップに基づいて合成された参照ピクチャを含み得る。現在のビデオユニットの参照ブロックは、現在のビデオユニットのルーマブロックおよびクロマブロックに最もぴったり対応する、ルーマサンプルの1つのブロックおよびクロマサンプルの2つの対応するブロックであり得る。
[0119]動き推定ユニット122は、Pスライス中に現在のビデオユニットの参照ブロックを含んでいるRefPicList0中の参照ピクチャを示す参照インデックスと、現在のビデオユニットのルーマサンプルブロックと参照ブロックとの間の空間変位を示す動きベクトルとを生成し得る。現在のビデオユニットの動き情報は、現在のビデオユニットの参照インデックスと現在のビデオユニットの動きベクトルとを含み得る。動き補償ユニット124は、現在のビデオユニットの動き情報によって示される参照ブロックに基づいて現在のビデオユニットのための予測ブロックを生成し得る。
[0120]現在のビデオユニットがBスライス中にある場合、動き推定ユニット122は、現在のビデオユニットについて単方向インター予測または双方向インター予測を実行し得る。現在のビデオユニットについて単方向インター予測を実行するために、動き推定ユニット122は、現在のビデオユニットのための参照ブロックを求めてRefPicList0の参照ピクチャまたは第2の参照ピクチャリスト(たとえば、RefPicList1)を探索し得る。ビデオエンコーダ20がMVCまたは3DVを使用する例では、RefPicList0および/またはRefPicList1は、ビュー間参照ピクチャを含み得る。 動き推定ユニット122は、参照ブロックを含んでいる参照ピクチャのRefPicList0またはRefPicList1中の位置を示す参照インデックスと、現在のビデオユニットのサンプルブロックと参照ブロックとの間の空間変位を示す動きベクトルとを生成し得る。動き推定ユニット122はまた、参照ピクチャがRefPicList0中にあるのかRefPicList1中にあるのかを示す予測方向インジケータを生成し得る。
[0121]現在のビデオユニットについて双方向インター予測を実行するために、動き推定ユニット122は、現在のビデオユニットのための参照ブロックを求めてRefPicList0中の参照ピクチャを探索し得、また、現在のビデオユニットのための別の参照ブロックを求めてRefPicList1中の参照ピクチャを探索し得る。動き推定ユニット122は、参照ブロックを含んでいる参照ピクチャのRefPicList0およびRefPicList1中の位置を示すピクチャインデックスを生成し得る。さらに、動き推定ユニット122は、参照ブロックと現在のビデオユニットのルーマブロックとの間の空間変位を示す動きベクトルを判断し得る。現在のビデオユニットの動き情報は、参照インデックスと現在のビデオユニットの動きベクトルとを含み得る。動き補償ユニット124は、現在のビデオユニットの動き情報によって示される参照ブロックに基づいて現在のビデオユニットのための予測ブロックを生成し得る。
[0122]イントラ予測処理ユニット126は、現在のビデオユニットに対してイントラ予測を実行することによって現在のビデオユニットについての予測データを生成し得る。現在のビデオユニットについての予測データは、現在のビデオユニットのための予測ブロックと様々なシンタックス要素とを含み得る。イントラ予測処理ユニット126は、Iスライス、Pスライス、およびBスライス中のビデオユニットに対してイントラ予測を実行し得る。
[0123]予測処理ユニット100は、現在のビデオユニットについてインター予測処理ユニット120によって生成された予測データ、または現在のビデオユニットについてイントラ予測処理ユニット126によって生成された予測データの中から、現在のビデオユニットについての予測データを選択し得る。いくつかの例では、予測処理ユニット100は、予測データのセットのレート/ひずみメトリックに基づいて、現在のビデオユニットについての予測データを選択する。
[0124]残差生成ユニット102は、現在のビデオユニットのサンプルブロックの対応するサンプルから現在のビデオユニットのための予測ブロック中のサンプルを減算することによって、残差ブロックを生成し得る。変換処理ユニット104は、残差ブロックに1つまたは複数の変換を適用することによって残差ブロックごとに変換係数ブロックを生成し得る。変換処理ユニット104は、残差ブロックに様々な変換を適用し得る。たとえば、変換処理ユニット104は、残差ブロックに、離散コサイン変換(DCT:discrete cosine transform)、方向性変換、整数変換、ウェーブレット変換、または概念的に同様の変換を適用し得る。
[0125]量子化ユニット106は、変換係数ブロック中の変換係数を量子化し得る。量子化プロセスは、変換係数の一部または全部に関連するビット深度を低減し得る。たとえば、nビットの変換係数は、量子化中にmビットの変換係数に切り捨てられ得、ここで、nはmよりも大きい。量子化ユニット106は、量子化パラメータ(QP:quantization parameter)値に基づいて変換係数ブロックを量子化し得る。ビデオエンコーダ20は、QP値を調整することによって、変換係数ブロックに適用される量子化の程度を調整し得る。
[0126]逆量子化ユニット108および逆変換処理ユニット110は、それぞれ、変換係数ブロックに逆量子化と逆変換とを適用して、変換係数ブロックから残差ブロックを再構成し得る。再構成ユニット112は、再構成された残差ブロック中のサンプルを、予測処理ユニット100によって生成された1つまたは複数の予測ブロックからの対応するサンプルに加算して、再構成されたブロックを生成し得る。フィルタユニット114は、再構成されたブロック中のブロッキングアーティファクトを低減するためにデブロッキング動作を実行し得る。復号ピクチャバッファ116は、フィルタユニット114が、再構成されたブロックに対して1つまたは複数のデブロッキング動作を実行した後に、再構成されたブロックを記憶し得る。動き推定ユニット122および動き補償ユニット124は、再構成されたブロックを含んでいる参照ピクチャを使用して、後続のピクチャのビデオユニットに対してインター予測を実行し得る。さらに、イントラ予測処理ユニット126は、復号ピクチャバッファ116中の再構成されたブロックを使用してイントラ予測を実行し得る。
[0127]エントロピー符号化ユニット118は、ビデオエンコーダ20の機能構成要素からデータを受信し得る。たとえば、エントロピー符号化ユニット118は、量子化ユニット106から変換係数ブロックを受信し得、予測処理ユニット100からシンタックス要素を受信し得る。エントロピー符号化ユニット118は、データに対して1つまたは複数のエントロピー符号化演算を実行してエントロピー符号化データを生成し得る。たとえば、ビデオエンコーダ20は、CAVLC演算、CABAC演算、変数−変数(V2V:variable-to-variable)レングスコーディング演算、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC:syntax-based context-adaptive binary arithmetic coding)演算、確率間隔区分エントロピー(PIPE:Probability Interval Partitioning Entropy)コーディング演算、指数ゴロムコーディング演算、または別のタイプのエントロピー符号化演算をデータに対して実行し得る。
[0128]図3は、本開示の技法を実装し得る例示的なビデオデコーダ30を示すブロック図である。図3は、説明のために提供されるものであり、本開示において広く例示し説明する技法を限定するものではない。説明のために、本開示では、H.264/AVCコーディングのコンテキストにおいてビデオデコーダ30について説明する。ただし、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
[0129]図3の例では、ビデオデコーダ30は、エントロピー復号ユニット150と、予測処理ユニット152と、逆量子化ユニット154と、逆変換処理ユニット156と、再構成ユニット158と、フィルタユニット160と、復号ピクチャバッファ162とを含む。予測処理ユニット152は、動き補償ユニット164と、イントラ予測処理ユニット166とを含む。他の例では、ビデオデコーダ30は、より多いか、より少ないか、または異なる機能構成要素を含み得る。
[0130]ビデオデコーダ30はビットストリームを受信し得る。エントロピー復号ユニット150は、ビットストリームからシンタックス要素を復号するためにビットストリームをパースし得る。ビットストリームをパースすることの一部として、エントロピー復号ユニット150は、ビットストリーム中のエントロピー符号化されたシンタックス要素をエントロピー復号し得る。予測処理ユニット152、逆量子化ユニット154、逆変換処理ユニット156、再構成ユニット158、およびフィルタユニット160は、ビットストリームから復号されたシンタックス要素に基づいて復号ビデオデータを生成し得る(すなわち、ビデオデータを再構成し得る)。ビットストリームから復号されたシンタックス要素は、変換係数ブロックを表すシンタックス要素を含み得る。
[0131]逆量子化ユニット154は、変換係数ブロックを逆量子化(inverse quantize)、すなわち逆量子化(de-quantize)し得る。逆量子化ユニット154は、量子化の程度を判断し、同様に、逆量子化ユニット154が適用すべき逆量子化の程度を判断するために、QP値を使用し得る。逆量子化ユニット154が変換係数ブロックを逆量子化した後に、逆変換処理ユニット156は、残差ブロックを生成するために変換係数ブロックに1つまたは複数の逆変換を適用し得る。たとえば、逆変換処理ユニット156は、逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT)、逆回転変換、逆方向性変換、または別の逆変換を変換係数ブロックに適用し得る。
[0132]現在のビデオユニットがイントラ予測を使用して符号化される場合、イントラ予測処理ユニット166は、現在のビデオユニットのための予測ブロックを生成するためにイントラ予測を実行し得る。たとえば、イントラ予測処理ユニット166は、ビットストリーム中のシンタックス要素に基づいて、現在のビデオユニットのためのイントラ予測モードを判断し得る。イントラ予測処理ユニット166は、イントラ予測モードを使用して、空間的に隣接するブロックに基づいて現在のビデオユニットのための予測ブロックを生成し得る。
[0133]動き補償ユニット164は、ビットストリームから復号されたシンタックス要素に基づいて、第1の参照ピクチャリスト(RefPicList0)および第2の参照ピクチャリスト(RefPicList1)を構成し得る。ビットストリームがMVC互換3DVまたはAVCベースの3DVを使用して符号化される例では、RefPicList0および/またはRefPicList1は、ビュー間参照ピクチャを含み得る。ビットストリームがAVCベースの3DVを使用して符号化される例では、RefPicList0および/またはRefPicList1中のビュー間参照ピクチャは、深度マップに基づいて合成された参照ピクチャを含み得る。さらに、現在のビデオユニットがインター予測を使用して符号化される場合、エントロピー復号ユニット150は、現在のビデオユニットについての動き情報を復号し得る。動き補償ユニット164は、現在のビデオユニットの動き情報に基づいて、現在のビデオユニットのための1つまたは複数の参照ブロックを判断し得る。動き補償ユニット164は、現在のビデオユニットのための1つまたは複数の参照ブロックに基づいて、現在のビデオユニットのための予測ブロックを生成し得る。
[0134]再構成ユニット158は、現在のビデオユニットのための残差ブロックと現在のビデオユニットのための予測ブロックとに基づいて現在のビデオユニットのサンプルブロックを再構成し得る。特に、再構成ユニット158は、現在のビデオユニットのサンプルブロックを再構成するために、予測ブロックの対応するサンプルに残差ブロックのサンプル(たとえば、ルーマ成分またはクロマ成分)を加算し得る。
[0135]フィルタユニット160は、現在のビデオユニットのサンプルブロックに関連するブロッキングアーティファクトを低減するためにデブロッキング動作を実行し得る。ビデオエンコーダ20のフィルタユニット114は、フィルタユニット160のデブロッキング動作と同様のデブロッキング動作を実行し得、したがって、簡潔のために、本開示では、フィルタユニット160に関するデブロッキング動作についてのみ説明する。フィルタユニット160がH.264/AVCでデブロッキング動作を実行するとき、フィルタユニット160は、ブロックエッジのためのフィルタ処理プロセスを実行し得る。フィルタユニット160は、4×4ブロック水平または垂直エッジにわたる8つのサンプルのセットにフィルタ処理プロセスを適用し得る。これらのサンプルは、「入力サンプル」と呼ばれることがあり、piおよびqiとして示されることがあり、ここで、i=0..3であり、エッジがp0とq0との間にある。フィルタユニット160がサンプルのセットにフィルタ処理プロセスを適用するとき、フィルタユニット160は、境界フィルタ処理強度値(bS)を判断し得る。さらに、フィルタユニット160は、ブロックのための量子化パラメータ(qPp、qPq)を判断し得る。フィルタユニット160は、次いで、サンプル値bS、フィルタオフセットqPpおよびqPqに少なくとも部分的に基づいてしきい値導出プロセスを実行し得る。しきい値導出プロセスは、入力サンプルがフィルタ処理されるかどうかを示す値を戻し得る。しきい値導出プロセスはまた、値(indexA)としきい値変数αおよびβの値を戻し得る。フィルタユニット160は、次いで、bS、α、βおよびインデックスAに少なくとも部分的に基づいて入力サンプルに対するフィルタ処理の動作を実行し得る。
[0136]上述のように、フィルタユニット160は、境界フィルタ処理強度値(bS)を判断し得る。フィルタユニット160は、様々な異なるタイプの情報に基づいてbSを判断し得る。たとえば、フィルタユニット160は、ブロックの予測(たとえば、インターまたはイントラ)モード、ブロックの参照インデックス、ブロックが単方向にインター予測されるのかまたは双方向にインター予測されるのか、ブロックの動きベクトルなどに少なくとも部分的に基づいてbSを判断し得る。
[0137]ビデオデコーダ30は、復号ピクチャバッファ162に再構成されたブロックを記憶し得る。復号ピクチャバッファ162は、後続の動き補償、イントラ予測、および図1のディスプレイデバイス32などのディスプレイデバイス上での提示のために参照ピクチャを与え得る。たとえば、ビデオデコーダ30は、復号ピクチャバッファ162中の再構成されたブロックに基づいて、他のCUのPUに対してイントラ予測演算またはインター予測演算を実行し得る。
[0138]上記で説明したように、ビットストリームは、一連のNALユニットを備え得る。NALユニットは、ビデオデータのピクチャのコード化スライスをカプセル化するコード化スライスNALユニットを含み得る。各コード化スライスは、スライスヘッダシンタックス構造とスライスデータシンタックス構造とを含む。本開示の技法の第1の例示的な実装形態によれば、スライスヘッダシンタックス構造は、以下の表1の例示的なシンタックスに準拠し得る。
[0139]上の表1および本開示の他のシンタックス表では、型記述子ue(v)をもつシンタックス要素は、左ビットが先頭の0次指数ゴロム(Exp−Golomb)コーディングを使用して符号化される可変長符号なし整数であり得る。表1および以下の表の例では、形式u(n)の記述子を有するシンタックス要素は、長さnの符号なし値であり、ただし、nは非負整数である。
[0140]表1のseq_vsp_enabled_flag変数は、VSPがコード化ビデオシーケンスに対して許可されるかどうかを示す。VSPがスライスを含むコード化ビデオシーケンスに対して許可されることをseq_vsp_enabled_flagが示す場合、そのスライスのためのスライスヘッダシンタックス構造は、slice_vsp_flagシンタックス要素を含み得る。slice_vsp_flagシンタックス要素は、VSPがスライスに対して許可されるかどうかを示す。slice_vsp_flagが存在しないとき、ビデオデコーダ30は、slice_vsp_flagが0に等しくなると推論(すなわち、自動的に判断)し得、VSPがスライスに対して許可されないことを意味する。
[0141]スライスヘッダシンタックス構造を含むNALユニットはまた、スライスデータシンタックス構造を含み得る。スライスヘッダシンタックス構造とスライスデータシンタックス構造とが同じNALユニットによってカプセル化された場合、スライスヘッダシンタックス構造はスライスデータシンタックス構造に対応し、その逆も同様である。スライスデータシンタックス構造は、スライスのMBのためのMBレイヤシンタックス構造を含み得る。以下の表2は、本開示の技法の第1の例示的な実装形態による、スライスデータシンタックス構造についての例示的なシンタックスである。
[0142]表2の例示的なシンタックスでは、スライスデータシンタックス構造は、mb_skip_flagシンタックス要素を含み得る。mb_skip_flagシンタックス要素は、MBがスキップモードを使用して符号化されるかどうかを示す。MB全体がVSPピクチャから予測され得るか、または通常のスキップモードが使用され得る。言い換えれば、MBのための予測ブロックは、VSPピクチャまたは別のピクチャから生成され得る。たとえば、1に等しいmb_skip_flagは、MBを符号化するためにスキップモードが使用されることを示し得る。この例では、0に等しいmb_skip_flagは、MBを符号化するためにスキップモードが使用されないことを示し得る。
[0143]さらに、表2の例示的なシンタックスでは、VSPがスライスに対して許可されることを対応するスライスヘッダシンタックス構造のslice_vsp_flagが示し、MBがスキップモードを使用して符号化され、RefPicList0またはRefPicList1中にVSPピクチャがあるとき、スライスデータシンタックス構造はMBのためのskip_from_vsp_flagを含み得る。表2では、変数VspRefExistは、VSPピクチャがRefPicList0またはRefPicList1中にあるかどうかを示す。いくつかの例では、VspRefExist条件は省略される。MBのためのskip_from_vsp_flagは、MB全体がVSPピクチャから予測されるかどうかを示す。たとえば、1に等しいskip_from_vsp_flagは、スキップモードが使用されるとき、MB全体がVSPピクチャから予測されることを示し得る。この例では、0に等しいskip_from_vsp_flagは、通常のスキップモードを示し得る。skip_from_vsp_flagがスライスデータシンタックス構造中に存在しないとき、ビデオデコーダ30は、MBが通常のスキップモードを使用して符号化されると推論し得る(たとえば、ビデオデコーダ30は、skip_from_vsp_flagが0に等しくなると推論し得る)。
[0144]上記の表2に示すように、スライスデータは、1つまたは複数のMBレイヤシンタックス構造を含み得る。MBレイヤシンタックス構造は符号化されたMBを含み得る。以下の表3は、本開示の技法の第1の例示的な実装形態による、MBレイヤシンタックス構造についての例示的なシンタックスである。
[0145]表3の例示的なシンタックスでは、VSPがMBを含んでいるスライス中で可能であり、RefPicList0またはRefPicList1中にVSPピクチャがあるとき、MBのためのMBレイヤシンタックス構造はvsp_mb_flagシンタックス要素を含み得る。言い換えれば、slice_vsp_flagが1に等しくなり、VspRefExistが1に等しくなるとき、MBレイヤシンタックス構造はvsp_mb_flagを含み得る。いくつかの例では、VspRefExist条件は省略される。vsp_mb_flagシンタックス要素は、MB全体がVSPピクチャから予測されるかどうかを示し得る。たとえば、1に等しいvsp_mb_flagは、MB全体がVSPピクチャから予測されることを示し得る。この例では、0に等しいvsp_mb_flagは、MB全体が他のモードによって予測され得ることを示す。
[0146]MB全体がVSPピクチャから予測されるとき(たとえば、vsp_mb_flagが1に等しくなるとき)、mb_typeシンタックス要素はMBレイヤシンタックス構造中でシグナリングされない。mb_typeシンタックス要素はMBのタイプを示す。さらに、vsp_mb_flagが存在しないとき、ビデオデコーダ30は、vsp_mb_flagが、MB全体が他のモードによって予測され得ることを示すと推論し得る(たとえば、ビデオデコーダ30は、vsp_mb_flagが0に等しくなると推論し得る)。
[0147]さらに、表3の例は、noSubMbPartLessThan8x8Flag変数を含む。現在のMBのMBパーティションの数が4よりも小さい場合、noSubMbPartLessThan8x8Flagは、H.264/AVCの場合のように真である。しかしながら、現在のMBのMBパーティションの数が4に等しくなる場合(すなわち、NumMbPart(mb_type)=4である場合)、noSubMbPartLessThan8x8Flagは、0に等しいmb_part_vsp_flagを用いて8×8MBパーティションのみを検査することによって導出され得る。たとえば、任意のMBパーティションが8×8よりも小さいサブMBパーティションを有する場合、noSubMbPartLessThan8x8Flagは偽であり得る。そうでない場合、noSubMbPartLessThan8x8Flagは真であり得る(すなわち、noSubMbPartLessThan8x8Flag=1)。
[0148]さらに、表3の例示的なシンタックスに示すように、ビデオエンコーダ20は、MB全体がVSPピクチャから予測されるかどうかに少なくとも部分的に基づいて、MBレイヤシンタックス構造中にシンタックス要素(transform_size_8x8_flag)を含めるべきかどうかを判断し得る。同様に、ビデオデコーダ30は、MB全体がVSPピクチャから予測されるかどうかに少なくとも部分的に基づいて、MBレイヤシンタックス構造からシンタックス要素を復号すべきかどうかを判断し得る。transform_size_8x8_flagは、現在のMBについて、残差8×8または4×4ブロックに対してデブロッキングフィルタプロセスより前に変換係数復号プロセスおよびピクチャ構成プロセスが、ルーマサンプル、およびいくつかの事例では、CbおよびCrサンプルのために呼び出されるかどうかを示し得る。
[0149]表3の例示的なシンタックスに示すように、MB全体がVSPピクチャから予測されない場合(たとえば、vsp_mb_flagが1に等しくない場合)、MBレイヤシンタックス構造は、MB予測シンタックス構造(mb_pred(mb_type))を含み得る。逆に、MB全体がVSPピクチャから予測される場合(たとえば、vsp_mb_flagが1に等しくなる場合)、MBレイヤシンタックス構造はMB予測シンタックス構造を含まない。他の例では、MBレイヤシンタックス構造は、MBがVSPピクチャから予測されるかどうかにかかわらず、MB予測シンタックス構造を含み得る。
[0150]上記の表3の例に示すように、MBレイヤシンタックス構造は、MB予測シンタックス構造を含み得る。MB予測シンタックス構造は、MBについての動き情報を含み得る。以下の表4は、本開示の技法の第1の例示的な実装形態による、MB予測シンタックス構造についての例示的なシンタックスである。
[0151]表4の例示的なシンタックスでは、MB予測シンタックス構造は、シンタックス要素のアレイmb_part_vsp_flag[]を含み得る。mb_part_vsp_flag[]中の各エントリは、MBの異なるMBパーティションがVSPピクチャから予測されるかどうかを示す。VSPが、特定のMBパーティションを含んでいるスライスのために使用可能であり(たとえば、slice_vsp_flag=1)、MBのMBパーティションの数が1に等しくなく、RefPicList0またはRefPicList1中にVSPピクチャがある(たとえば、VspRefExist=1)場合、MB予測シンタックス構造は、特定のMBパーティションのためのmb_part_vsp_flagを含み得る。他の例では、VSPが、特定のMBパーティションを含んでいるスライスのために使用可能であり(たとえば、slice_vsp_flag=1)、MBのMBパーティションの数が1に等しくないかどうか、またはVspRefExist=1であるかどうかを評価しない場合、MB予測シンタックス構造はmb_part_vsp_flagを含み得る。
[0152]いくつかの例では、1に等しいmb_part_vsp_flag[mbPartIdx]は、特定のMBパーティションがVSPピクチャから予測されることを示し得、ここで、mbPartIdxは、特定のMBパーティションのインデックスである。この例では、0に等しいmb_part_vsp_flag[mbPartIdx]は、MBパーティション全体がVSPピクチャから予測されないことを示し得、ここで、mbPartIdxは、MBパーティションのインデックスである。いくつかの例では、mb_part_vsp_flag[mbPartIdx]が存在しないとき、ビデオデコーダ30は、mb_part_vsp_flag[mbPartIdx]が、MBパーティション全体がVSPピクチャから予測されないことを示すと推論し得る(たとえば、ビデオデコーダ30は、mb_part_vsp_flag[mbPartIdx]が0に等しくなると推論し得る)。
[0153]表4に示すように、mbPartIdxが、特定のMBパーティションのインデックスである場合、特定のMBパーティションがVSPピクチャから予測されることをmb_part_vsp_flag[mbPartIdx]が示すとき、MB予測シンタックス構造は、特定のMBパーティションのための参照インデックス(ref_idx_l0およびref_idx_l1)または動きベクトル差分(mvd_l0およびmvd_l1)を含まない。他の例では、MB予測シンタックス構造は、特定のMBパーティションがVSPピクチャから予測されるかどうかにかかわらず、ref_idx_l0またはref_idx_l1を含み得る。
[0154]さらに、MBがVSPピクチャから完全に予測されない場合(たとえば、MBのvsp_mb_flagが1に等しくない場合)、MBのためのMBレイヤシンタックス構造はサブMB予測シンタックス構造を含み得る。サブMB予測シンタックス構造は、MBパーティションについての動き情報(たとえば、動きベクトル、参照インデックスなど)を含み得る。以下の表5に、本開示の技法の第1の例示的な実装形態による、サブMB予測シンタックス構造についての例示的なシンタックスを示す。
[0155]表5の例示的なシンタックスでは、サブMB予測シンタックス構造は、sub_mb_vsp_flag[]シンタックス要素を含み得る。各sub_mb_vsp_flag[]は、異なるMBパーティション(たとえば、8×8)がVSPピクチャから予測されるかどうかを示す。VSPが、特定のMBパーティションを含んでいるスライスのために使用可能であり(たとえば、slice_vsp_flag=1)、VSPピクチャがRefPicList0またはRefPicList1中にある(たとえば、VspRefExist=1である)とき、サブMB予測シンタックス構造は、特定のMBパーティションのためのsub_mb_vsp_flagを含み得る。他の例では、VspRefExist=1の条件は判断されない。
[0156]一例では、1に等しいsub_mb_vsp_flag[mbPartIdx]は、特定のMBパーティションがVSPピクチャから予測されることを示し得、ここで、mbPartIdxは、特定のMBパーティションのインデックスである。この例では、0に等しいsub_mb_vsp_flag[mbPartIdx]は、特定のMBパーティションの全体がVSPピクチャから予測されないことを示し得る。sub_mb_vsp_flag[mbPartIdx]が存在しないとき、特定のMBパーティションの全体はVSPピクチャから予測されない(たとえば、ビデオデコーダ30は、sub_mb_vsp_flag[mbPartIdx]が0に等しくなると推論し得る)。
[0157]さらに、表5の例示的なシンタックスに示すように、mbPartIdxが、特定のMBパーティションのインデックスであり、特定のMBパーティションがVSPピクチャから予測されることをmb_part_vsp_flag[mbPartIdx]が示すとき、サブMB予測シンタックス構造は、特定のMBパーティションのサブMBタイプを指定するシンタックス要素(sub_mb_type[mbPartIdx])を含まない。さらに、特定のMBパーティションがVSPピクチャから予測されることをmb_part_vsp_flag[mbPartIdx]が示すとき、サブMB予測構造は、特定のMBパーティションのための参照インデックス(ref_idx_l0[mbPartIdx]およびref_idx_l1[mbPartIdx])を含まない。さらに、特定のMBパーティションがVSPピクチャから予測されることをmb_part_vsp_flag[mbPartIdx]が示すとき、サブMB予測シンタックス構造は、特定のMBパーティションのための動きベクトル差分(mvd_l0[mbPartIdx]およびmvd_l1[mbPartIdx])を含まない。
[0158]上記の表1〜表5は、vsp_mb_flagシンタックス要素と、mb_part_vsp_flagシンタックス要素と、sub_mb_vsp_flagシンタックス要素と、skip_from_vsp_flagシンタックス要素とを含む。ビデオデコーダ30は、vsp_mb_flagシンタックス要素と、mb_part_vsp_flagシンタックス要素と、sub_mb_vsp_flagシンタックス要素と、skip_from_vsp_flagシンタックス要素とを使用して、任意のサイズのMBパーティションのためのフラグ、すなわち、VSPFlagを導出し得る。VSPFlagは、本開示の他の場所で説明したように、MBパーティションがVSPピクチャから予測されるかどうかを示し得る。たとえば、MBパーティションのためのVSPFlagが1に等しくなるとき、MBパーティションはVSPピクチャから予測され得る。
[0159]本開示の技法の第1の実装形態によれば、MBパーティションがVSPピクチャから予測されることをVSPFlagが示すとき(たとえば、VSPFlagが1に等しくなるとき)、動き補償ユニット164は、MBパーティションの予測ブロックのサンプルをVSPピクチャのサンプルに設定し得る。たとえば、現在のMBパーティションが、ルーマ成分の座標が(x,y)、クロマ成分の座標が(x’,y’)の左上ピクセルを有すると仮定する。さらに、現在のMBパーティションのサイズがN×Mであると仮定し、ここで、N、Mは、8または16に等しくなる。この例では、動き補償ユニット164は、N×Mの同じサイズで座標(x,y)から開始して、VSPピクチャのルーマ成分のピクセルの値を現在のMBパーティションのピクセルに設定し得る。たとえば、動き補償ユニット164は、予測ルーマブロック中の各ルーマサンプルがVSPピクチャ中の対応するロケーションにあるルーマサンプルに一致するように、現在のMBパーティションのための予測ルーマブロックを生成し得る。
[0160]さらに、4:2:0ビデオフォーマットの場合はN/2×M/2のサイズ、4:4:4ビデオフォーマットの場合はN×Mのサイズ、または4:2:2ビデオフォーマットの場合はN×M/2のサイズで座標(x’,y’)から開始して、動き補償ユニット164は、クロマ成分の同じ座標(x’,y’)から開始して、VSPピクチャのクロマ成分の各ブロック中のピクセルの値を現在のMBパーティションのピクセルに設定し得る。たとえば、動き補償ユニット164は、各CbまたはCbサンプルがVSPピクチャ中の対応するロケーションにあるCbまたはCrサンプルに一致するように、現在のMBパーティションのための予測CbまたはCrブロックを生成し得る。この例では、動き補償ユニット164は、VSPピクチャのCbまたはCrブロックの座標(x’,y’)から予測CbまたはCrブロックを生成し始め得る。さらに、この例では、VSPピクチャのクロマブロックが、4:2:0ビデオフォーマット、4:4:4ビデオフォーマット、または4:2:2ビデオフォーマットに従ってダウンサンプリングされる場合、予測CbまたはCrブロックは、それぞれ、N/2×M/2、N×M、またはn×M/2のサイズであり得る。
[0161]vsp_mb_flagまたはskip_from_vsp_flagが1に等しくなるとき、MBの各ブロックは、1に等しいmb_part_vsp_flagとsub_mb_vsp_flagとを有すると推論される。MB全体がVSPピクチャから予測されないとき(たとえば、vsp_mb_flagが0に等しくなるとき)、MBのMBパーティションは、異なる値のmb_part_vsp_flagを有し得る。
[0162]1つの例示的な代替解決策では、vsp_mb_flagが0に等しくなる場合、すべてのMBパーティションが1に等しいmb_part_vsp_flagを有し得るとは限らないように制約される。言い換えれば、MB全体がVSPピクチャから予測されないことをビデオエンコーダ20がシグナリングした場合、ビデオエンコーダ20は、MBの各MBパーティションがVSPピクチャから予測されることをシグナリングしない。MBのすべてのMBパーティションがVSPピクチャから予測されることをシグナリングすることは、MB全体がVSPピクチャから予測されることをシグナリングするのと同じ結果をもたらすことになる。したがって、MBのすべてのMBパーティションがVSPピクチャから予測される場合、MBパーティションを生成することはビットの浪費となり得る。
[0163]上記で簡単に説明したように、エントロピー復号ユニット150は、シンタックス要素をエントロピー復号するためにエントロピー復号演算を実行し得る。さらに、ビデオエンコーダ20のエントロピー符号化ユニット118は、シンタックス要素をエントロピー符号化するためにエントロピー符号化演算を実行し得る。エントロピーコーダ(エントロピー符号化ユニット118およびエントロピー復号ユニット150など)がシンタックス要素に対してエントロピー符号化またはエントロピー復号(すなわち、エントロピーコーディング)を実行するとき、エントロピーコーダは、コーディングモデルを判断し得る。エントロピーコーダは、コンテキスト情報(すなわち、コンテキスト)に基づいてコンテキストモデルを判断し得る。コンテキストモデルは、ビンが特定の値を有する確率を示し得る。
[0164]本開示の技法の第1の例示的な実装形態によれば、エントロピーコーダは、VSPFlagについてのコンテキストを維持し得る。上記のように、VSPFlagは、MBパーティションがVSPピクチャから予測されるかどうかを示し得る。エントロピーコーダは、vsp_mb_flag、mb_part_vsp_flag、sub_mb_vsp_flag、およびskip_from_vsp_flagのエントロピーコーディングのためにコンテキストを使用し得る。エントロピー復号ユニット150は、各vsp_mb_flag、mb_part_vsp_flag、sub_mb_vsp_flag、およびskip_from_vsp_flagに基づいてVSPFlagについてのコンテキストを更新し得る。
[0165]スライスの第1のシンタックス要素をエントロピーコーディングする前に、エントロピーコーダは、スライスのシンタックス要素をエントロピーコーディングする際に使用されるコンテキスト変数を初期化するためにコンテキスト初期化プロセスを実行する。本開示の技法によれば、VSPモードはPスライスとBスライスの両方に適用されるが、PスライスのVSPFlagのコンテキストのための初期確率は、BスライスのVSPFlagのコンテキストのための初期確率とは異なり得る。
[0166]さらに、エントロピーデコーダがシンタックス要素をエントロピー復号し始めるとき、エントロピーデコーダは、シンタックス要素のすべての可能な2値化のセットを取り出し得、ビンインデックス(binIdx)を−1に設定し得る。エントロピーデコーダは、次いで、ビットストリームからのビットを連続的に処理し得る。エントロピーデコーダがビットを処理すると、エントロピーデコーダは、binIdxを増分し得、binIdxに少なくとも部分的に基づいてコンテキストインデックス(ctxIdx)を判断し得る。エントロピーデコーダは、ctxIdxに関連するコンテキストモデルを使用して、現在のビンをエントロピー復号し得る。次に、エントロピーデコーダは、シンタックス要素のためのこれまで復号されてきたビンがシンタックス要素の可能な2値化のいずれかに一致するかどうかを判断し得る。一致しない場合、エントロピーデコーダは、この段落で説明した方法で別のビットを処理し得る。復号されたビンがシンタックス要素の可能な2値化に一致するとき、エントロピーデコーダは、シンタックス要素の2値化をシンタックス要素の元の値に変換して戻し得る。
[0167]エントロピーエンコーダは、同様のプロセスを実行し得る。このプロセスでは、エントロピーエンコーダは、シンタックス要素を2値化し得、ビンインデックス(binIdx)を−1に設定し得る。エントロピーエンコーダは、次いで、2値化されたシンタックス要素のビンを連続的に処理し得る。エントロピーエンコーダがビンを処理するとき、エントロピーエンコーダは、ビンのためのbinIdxに少なくとも部分的に基づいて、ビンのためのコンテキストインデックス(ctxIdx)を判断し得る。エントロピーエンコーダは、次いで、ビンのためのctxIdxに関連するコンテキストモデルを使用して、ビンをエントロピー符号化し得る。エントロピーエンコーダが2値化されたシンタックス要素の各ビンを処理すると、エントロピーエンコーダは、シンタックス要素をエントロピー符号化することを完了する。
[0168]上述のように、エントロピーコーダ(たとえば、エントロピーデコーダまたはエントロピーエンコーダ)がシンタックス要素のビンを処理するとき、エントロピーコーダは、ビンのビンインデックス(binIdx)に少なくとも部分的に基づいて、ビンのためのコンテキストインデックス(ctxIdx)を判断する。ビンのためのctxIdxを判断するために、エントロピーコーダは、ビンインデックスとコンテキストインデックスオフセット(ctxIdxOffset)とを使用して、所定のテーブル中で、ビンのためのコンテキストインデックス増分(ctxIdxInc)をルックアップし得る。エントロピーコーダは、シンタックス要素を2値化することの一部として、ctxIdxOffsetを判断し得る。ビンのためのctxIdxは、ctxIdxOffsetにビンのためのctxIdxIncを加えたものに等しくなり得る。
[0169]本開示の技法の第1の例示的な実装形態によれば、エントロピーコーダが(復号されるべきシンタックス要素に応じてskip_from_vsp_flagシンタックス要素、vsp_mb_flag_syntax要素、またはsub_mb_vsp_flagシンタックス要素であり得る)VSPFlagをエントロピーコーディングしているとき、エントロピーコーダは、VSPFlagに関連するビンのためのctxIdxIncを判断し得る。いくつかの例では、ビンのためのctxIdxIncは、condTermFlagAとcondTermFlagBとの和であり得る。すなわち、ctxIdxIncは、ctxIdxInc=condTermFlagA+condTermFlagBとして導出され得る。別の例では、ビンのためのctxIdxIncは、condTermFlagAに等しくなり得る。すなわち、ctxIdxIncは、ctxIdxInc=condTermFlagAとして導出され得る。別の例では、ビンのためのctxIdxIncは、condTermFlagBに等しくなる。すなわち、ctxIdxIncは、ctxIdxInc=condTermFlagBとして導出され得る。
[0170]上記の例では、エントロピーコーダは、現在のMBまたはMBパーティションに隣接する特定のブロックに関連するデータが、現在のMBまたはMBパーティションに関連するシンタックス要素のためのエントロピーコーディングプロセスにおいて使用するために利用可能であるかどうかに少なくとも部分的に基づいてcondTermFlagAとcondTermFlagBとを判断し得る。たとえば、mbPAddrAは、現在のMBまたはMBパーティションの左側の隣接8×8ブロックを表し得、mbPAddrBは、現在のMBまたはMBパーティションの上側の隣接8×8ブロックを表し得る。mbPAddrAが利用可能でないか、またはブロックmbPAddrAのためのVSPFlagが0に等しくなる場合、condTermFlagAは0に等しくなる。そうではなく、mbPAddrAが利用可能であり、ブロックmbPAddrAのためのVSPFlagが1に等しくなる場合、condTermFlagAは1に等しくなる。同様に、mbPAddrBが利用可能でないか、またはブロックmbPAddrBのためのVSPFlagが0に等しくなる場合、condTermFlagBは0に等しくなる。そうではなく、mbPAddrBが利用可能であり、ブロックmbPAddrBのためのVSPFlagが1に等しくなる場合、condTermFlagBは1に等しくなる。
[0171]別の例では、mbPAddrAが利用可能であり、ブロックmbPAddrAのためのVSPFlagが0に等しくなる場合、condTermFlagAは1に等しくなる。そうではなく、mbPAddrAが利用不可能であるか、またはブロックmbPAddrAのためのVSPFlagが1に等しくなる場合、condTermFlagAは0に等しくなる。同様に、mbPAddrBが利用可能であり、ブロックmbPAddrBのためのVSPFlagが0に等しくなる場合、condTermFlagBは1に等しくなる。そうではなく、mbPAddrBが利用不可能であるか、またはブロックmbPAddrBのためのVSPFlagが1に等しくなる場合、condTermFlagBは0に等しくなる。
[0172]上記で手短に説明したように、フィルタユニット160は、現在のビデオユニットのサンプルブロックに関連するブロッキングアーティファクトを低減するためにデブロッキング動作を実行し得る。本開示の技法の第1の例示的な実装形態によれば、フィルタユニット160は、VSPモードに関係する特定のデブロッキング動作を実行し得る。第1の例示的なデブロッキングフィルタプロセスでは、1に等しいVSPFlagをもつMBパーティションは、デブロッキングフィルタプロセス中に参照ピクチャリスト0および0に等しい動きベクトルから単方向にインター予測される、−1に等しい参照インデックスをもつインターコーディングであると見なされる。フィルタユニット160は、MBパーティションと別のブロックとの間の境界の境界フィルタ処理強度値(bS)を判断し得る。フィルタユニット160は、bSを使用して、境界にある入力サンプルのアレイにフィルタを適用し得る。この第1の例示的なデブロッキングフィルタプロセスではフィルタユニット160は、ブロックの予測(たとえば、インターまたはイントラ)モード、ブロックの参照インデックス、ブロックが単方向にインター予測されるのかまたは双方向にインター予測されるのか、およびブロックの動きベクトルに少なくとも部分的に基づいてbSを判断し得る。
[0173]第2の例示的なデブロッキングフィルタプロセスでは、フィルタユニット160は、デブロッキングフィルタプロセスの一部としてルーマコンテンツ依存境界フィルタ処理強度のための導出プロセスを実行し得る。この例では、導出プロセスへの入力は、フィルタ処理されるべきエッジにわたるサンプルの単一のセットの入力サンプル値p0およびq0である。導出プロセスへの入力はまた、verticalEdgeFlagを含む。verticalEdgeFlagは、エッジが水平であるのか、または垂直であるのかを示し得る。導出プロセスの出力は境界強度変数bSである。
[0174]第2の例示的なデブロッキングフィルタプロセスでは、SPS中のmb_adaptive_frame_field_flagシンタックス要素が1に等しくなり、スライスヘッダ中のfield_pic_flagが1に等しくないとき、変数MbaffFrameFlagは1に等しくなり得る。すなわち、MbaffFrameFlag=mb_adaptive_frame_field_flag&&!field_pic_flagとなる。mb_adaptive_frame_field_flagシンタックス要素は、フィールドとピクチャ内のフレームMBとの間で切り替わることが可能であるかどうかを指定する。フィールドは、フレームの代替行のアセンブリである。0に等しいMb_adaptive_frame_fieldは、フレームとピクチャ内のフィールドMBとの間での切替えがないことを指定する。1に等しいMb_adaptive_frame_fieldは、フレームとフレーム内のフィールドMBとの間での切替えの使用が可能であることを指定する。field_pic_flagシンタックス要素は、スライスがコード化フィールドのスライスであるか、またはコード化フレームのスライスであるかを示す。コード化フィールドは、フィールドのコード化表現である。1に等しいfield_pic_flagは、スライスがコード化フィールドのスライスであることを指定し得る。0に等しいfield_pic_flagは、スライスがコード化フレームのスライスであることを指定し得る。したがって、1に等しいMbaffFrameFlagは、フレームとフレーム内のフィールドMBとの間での切替えの使用が可能であることと、現在のスライスがコード化フレームのスライスであることとを示す。
[0175]さらに、第2の例示的なデブロッキングフィルタプロセスでは、フィルタユニット160は、次のように変数mixedModeEdgeFlagを導出し得る。第1に、MbaffFrameFlagが1に等しくなり、サンプルp0およびq0が異なるMBペア中にあり、これらのうちの1つがフィールドMBペアであり、他方がフレームMBペアである場合、フィルタユニット160は、mixedModeEdgeFlagを1に等しく設定する。そうではなく、MbaffFrameFlagが1に等しくないか、またはサンプルp0およびq0が異なるMBペア中にない場合、フィルタユニット160は、mixedModeEdgeFlagを0に等しく設定する。
[0176]次に、第2の例示的なデブロッキングフィルタプロセスでは、フィルタユニット160は、フィルタ処理されているブロックエッジのための変数bSを導出する。ブロックエッジがMBエッジであり、以下の条件のいずれかが真である場合、4に等しいbSの値が出力される。第1の条件によれば、サンプルp0およびq0がどちらもフレームMB中にあり、サンプルp0およびq0のいずれかまたは両方が、イントラMB予測モードを使用してコーディングされたMB中にある場合、フィルタユニット160はbSの値を4に設定する。第2の条件によれば、サンプルp0およびq0がどちらもフレームMB中にあり、サンプルp0またはq0のいずれかまたは両方が、SPまたはSIに等しいslice_typeをもつスライス中にあるMB中にある場合、フィルタユニット160はbSの値を4に設定する。第3の条件によれば、MbaffFrameFlagが1に等しくなるかまたはfield_pic_flagが1に等しくなり、verticalEdgeFlagが1に等しくなり、サンプルp0またはq0のいずれかまたは両方が、イントラMB予測モードを使用してコーディングされたMB中にある場合、フィルタユニット160はbSの値を4に設定する。第4の条件によれば、MbaffFrameFlagが1に等しくなるかまたはfield_pic_flagが1に等しくなり、verticalEdgeFlagが1に等しくなり、サンプルp0またはq0のいずれかまたは両方が、SPまたはSIに等しいslice_typeをもつスライス中にあるMB中にある場合、フィルタユニット160はbSの値を4に設定し得る。
[0177]そうではなく、以下の条件のいずれかが真である場合、フィルタユニット160はbSの値を3に設定する。第1の条件によれば、mixedModeEdgeFlagが0に等しくなり、サンプルp0またはq0のいずれかまたは両方が、イントラMB予測モードを使用してコーディングされたMB中にある場合、フィルタユニット160はbSの値を3に設定する。第2の条件によれば、mixedModeEdgeFlagが0に等しくなり、サンプルp0またはq0のいずれかまたは両方が、SPまたはSIに等しいslice_typeをもつスライス中にあるMB中にある場合、フィルタユニット160はbSの値を3に設定する。第3の条件によれば、mixedModeEdgeFlagが1に等しくなり、verticalEdgeFlagが0に等しくなり、サンプルp0またはq0のいずれかまたは両方が、イントラMB予測モードを使用してコーディングされたMB中にある場合、フィルタユニット160はbSの値を3に設定する。第4の条件によれば、mixedModeEdgeFlagが1に等しくなり、verticalEdgeFlagが0に等しくなり、サンプルp0またはq0のいずれかまたは両方が、SPまたはSIに等しいslice_typeをもつスライス中にあるMB中にある場合、フィルタユニット160はbSの値を3に設定する。
[0178]そうではなく、以下の条件のいずれかが真である場合、フィルタユニット160はbSの値を2に設定する。第1の条件によれば、transform_size_8x8_flagが、サンプルp0を含んでいるMBについて1に等しくなり、サンプルp0を含んでいる8×8ルーマブロックに関連する8×8ルーマ変換ブロックが、非ゼロ変換係数レベルを含んでいる場合、フィルタユニット160は、bSの値を2に設定する。第2の条件によれば、transform_size_8x8_flagが、サンプルp0を含んでいるMBについて0に等しくなり、サンプルp0を含んでいる4×4ルーマブロックに関連する4×4ルーマ変換ブロックが、非ゼロ変換係数レベルを含んでいる場合、フィルタユニット160は、bSの値を2に設定する。第3の条件によれば、transform_size_8x8_flagが、サンプルq0を含んでいるMBについて1に等しくなり、サンプルq0を含んでいる8×8ルーマブロックに関連する8×8ルーマ変換ブロックが、非ゼロ変換係数レベルを含んでいる場合、フィルタユニット160は、bSの値を2に設定する。第4の条件によれば、transform_size_8x8_flagが、サンプルq0を含んでいるMBについて0に等しくなり、サンプルq0を含んでいる4×4ルーマブロックに関連する4×4ルーマ変換ブロックが、非ゼロ変換係数レベルを含んでいる場合、フィルタユニット160は、bSの値を2に設定する。
[0179]そうではなく、以下の条件のいずれかが真である場合、フィルタユニット160はbSの値を1に等しく設定する。第1の条件によれば、mixedModeEdgeFlagが1に等しくなる場合、フィルタユニット160はbSの値を1に設定する。第2の条件によれば、本開示の技法によれば、mixedModeEdgeFlagが0に等しくなり、サンプルp0を含んでいるMB/サブMBパーティションのためのVSPFlagの値が、サンプルq0を含んでいるMB/サブMBパーティションのためのVSPFlagとは異なる場合、フィルタユニット160は、bSの値を1に設定する。第3の条件によれば、mixedModeEdgeFlagが0に等しくなり、サンプルp0を含んでいるMB/サブMBパーティションの予測において、サンプルq0を含んでいるMB/サブMBパーティションの予測の場合とは異なる参照ピクチャまたは異なる数の動きベクトルが使用される場合、フィルタユニット160は、bSの値を1に設定する。2つのMB/サブMBパーティションのために使用される参照ピクチャが同じものであるのか異なるものであるかの判断は、参照ピクチャリスト0へのインデックスまたは参照ピクチャリスト1へのインデックスを使用して予測が形成されるのかどうかを顧慮せずに、参照ピクチャリスト内でインデックス位置が異なるかどうかをも顧慮せずに、どのピクチャが参照されるのかにのみ基づく。第4の条件によれば、mixedModeEdgeFlagが0に等しくなり、サンプルp0を含んでいるMB/サブMBパーティションを予測するために1つの動きベクトルが使用され、サンプルq0を含んでいるMB/サブMBパーティションを予測するために1つの動きベクトルが使用され、使用される動きベクトルの水平または垂直成分間の絶対差が、1/4ルーマフレームサンプルのユニット内で4以上である場合、フィルタユニット160はbSの値を1に設定する。第5の条件によれば、mixedModeEdgeFlagが0に等しくなり、サンプルp0を含んでいるMB/サブMBパーティションを予測するために2つの動きベクトルと2つの異なる参照ピクチャとが使用され、サンプルq0を含んでいるMB/サブMBパーティションを予測するために同じ2つの参照ピクチャのための2つの動きベクトルが使用され、同じ参照ピクチャのための2つのMB/サブMBパーティションの予測において使用される2つの動きベクトルの水平または垂直成分間の絶対差が、1/4ルーマフレームサンプルのユニット内で4以上である場合、フィルタユニット160はbSの値を1に設定する。
[0180]第6の条件によれば、mixedModeEdgeFlagが0に等しくなり、サンプルp0を含んでいるMB/サブMBパーティションを予測するために同じ参照ピクチャのための2つの動きベクトルが使用され、サンプルq0を含んでいるMB/サブMBパーティションを予測するために同じ参照ピクチャのための2つの動きベクトルが使用され、以下の条件の両方が真である場合、フィルタユニット160はbSの値を1に設定する。第1に、2つのMB/サブMBパーティションの予測において使用されるRefPicList0動きベクトルの水平または垂直成分間の絶対差が、1/4ルーマフレームサンプル中で4以上であるか、または2つのMB/サブMBパーティションの予測において使用されるRefPicList1動きベクトルの水平または垂直成分間の絶対差が、1/4ルーマフレームサンプルのユニット中で4以上である。第2に、サンプルp0を含んでいるMB/サブMBパーティションの予測において使用されるRefPicList0動きベクトルとサンプルq0を含んでいるMB/サブMBパーティションの予測において使用されるRefPicList1動きベクトルとの水平または垂直成分間の絶対差が、1/4ルーマフレームサンプルのユニット中で4以上であるか、サンプルp0を含んでいるMB/サブMBパーティションの予測において使用されるRefPicList1動きベクトルとサンプルq0を含んでいるMB/サブMBパーティションの予測において使用されるRefPicList0動きベクトルとの水平または垂直成分間の絶対差が、1/4ルーマフレームサンプルのユニット中で4以上である。1/4ルーマフレームサンプルのユニット中で4の垂直差は、1/4ルーマフィールドサンプルのユニット中で2の差となる。そうでない場合、フィルタユニット160は、bSの値を0に等しく設定する。
[0181]第3の例示的なデブロッキングフィルタプロセスでは、フィルタユニット160は、デブロッキング動作を実行することの一部としてルーマコンテンツ依存境界フィルタ処理強度のための導出プロセスを実行し得る。この例では、導出プロセスへの入力は、フィルタ処理されるべきエッジにわたるサンプルの単一のセットの入力サンプル値p0およびq0である。導出プロセスへの入力はまたverticalEdgeFlagを含む。導出プロセスの出力は境界強度変数bSであり得る。この例では、フィルタユニット160は、次のように変数mixedModeEdgeFlagを導出し得る。第1に、MbaffFrameFlagが1に等しくなり、サンプルp0およびq0が異なるペア中にあり、これらのうちの1つがフィールドMBペアであり、他方がフレームMBペアである場合、フィルタユニット160は、mixedModeEdgeFlagを1に等しく設定する。そうではなく、MbaffFrameFlagが1に等しくないか、またはサンプルp0およびq0が異なるMBペア中にない場合、フィルタユニット160は、mixedModeEdgeFlagを0に等しく設定する。
[0182]さらに、第3の例示的なデブロッキングフィルタプロセスでは、フィルタユニット160は、MB間のブロックエッジのための変数bSを導出し得る。ブロックエッジがMBエッジであり、以下の条件のいずれかが真である場合、4に等しいbSの値が出力される。第1の条件によれば、サンプルp0およびq0がどちらもフレームMB中にあり、サンプルp0およびq0のいずれかまたは両方が、イントラMB予測モードを使用してコーディングされたMB中にある場合、フィルタユニット160はbSの値を4に設定する。第2の条件によれば、本開示の技法によれば、サンプルp0およびq0がどちらもフレームMB中にあり、サンプルp0またはq0のいずれかまたは両方が、1に等しいVSPFlagを用いてコーディングされたMB中にある場合、フィルタユニット160はbSの値を4に設定する。第3の条件によれば、サンプルp0およびq0がどちらもフレームMB中にあり、サンプルp0またはq0のいずれかまたは両方が、SPまたはSIに等しいslice_typeをもつスライス中にあるMB中にある場合、フィルタユニット160はbSの値を4に設定する。第4の条件によれば、MbaffFrameFlagが1に等しくなるかまたはfield_pic_flagが1に等しくなり、verticalEdgeFlagが1に等しくなり、サンプルp0またはq0のいずれかまたは両方が、イントラMB予測モードを使用してコーディングされたMB中にある場合、フィルタユニット160はbSの値を4に設定する。第5の条件によれば、本開示の技法によれば、MbaffFrameFlagが1に等しくなるかまたはfield_pic_flagが1に等しくなり、verticalEdgeFlagが1に等しくなり、サンプルp0またはq0のいずれかまたは両方が、1に等しいVSPFlagを用いてコーディングされたMB中にある場合、フィルタユニット160はbSの値を4に設定する。第6の条件によれば、MbaffFrameFlagが1に等しくなるかまたはfield_pic_flagが1に等しくなり、verticalEdgeFlagが1に等しくなり、サンプルp0またはq0のいずれかまたは両方が、SPまたはSIに等しいslice_typeをもつスライス中にあるMB中にある場合、フィルタユニット160はbSの値を4に設定し得る。
[0183]そうではなく、第3の例示的なデブロッキングフィルタプロセスでは、以下の条件のいずれかが真である場合、フィルタユニット160はbSの値を3に設定する。第1の条件によれば、mixedModeEdgeFlagが0に等しくなり、サンプルp0またはq0のいずれかまたは両方が、イントラMB予測モードを使用してコーディングされたMB中にある場合、フィルタユニット160はbSの値を3に設定する。第2の条件によれば、本開示の技法によれば、mixedModeEdgeFlagが0に等しくなり、サンプルp0またはq0のいずれかまたは両方が、1に等しいVSPFlagを用いてコーディングされたMB中にある場合、フィルタユニット160はbSの値を3に設定する。第3の条件によれば、mixedModeEdgeFlagが0に等しくなり、サンプルp0またはq0のいずれかまたは両方が、SPまたはSIに等しいslice_typeをもつスライス中にあるMB中にある場合、フィルタユニット160はbSの値を3に設定する。第4の条件によれば、mixedModeEdgeFlagが1に等しくなり、verticalEdgeFlagが0に等しくなり、サンプルp0またはq0のいずれかまたは両方が、イントラMB予測モードを使用してコーディングされたMB中にある場合、フィルタユニット160はbSの値を3に設定する。第5の条件によれば、本開示の技法によれば、mixedModeEdgeFlagが0に等しくなり、verticalEdgeFlagが0に等しくなり、サンプルp0またはq0のいずれかまたは両方が、1に等しいVSPFlagを用いてコーディングされたMB中にある場合、フィルタユニット160はbSの値を3に設定する。第6の条件によれば、mixedModeEdgeFlagが1に等しくなり、verticalEdgeFlagが0に等しくなり、サンプルp0またはq0のいずれかまたは両方が、SPまたはSIに等しいslice_typeをもつスライス中にあるMB中にある場合、フィルタユニット160はbSの値を3に設定する。
[0184]そうでない場合、第3の例示的なデブロッキングフィルタプロセスでは、第2の例示的なデブロッキングフィルタプロセスにおける上記で説明した条件のいずれかが満たされる場合、フィルタユニット160はbSの値を2に設定し得る。そうでない場合、第2の例示的なデブロッキングフィルタプロセスにおける上記で説明した条件のいずれかが、第2の条件を除いて満たされる場合、フィルタユニット160はbSの値を1に設定し得る。そうでない場合、フィルタユニット160は、bSの値を0に設定し得る。
[0185]本開示の技法の第2の例示的な実装形態は、上記で説明した第1の例とは異なるシンタックスおよびセマンティクスを使用する。第2の例示的な実装形態では、mb_skip_flagおよびskip_from_vsp_flagが条件付きでフレキシブルにシグナリングされるように、シンタックスおよびセマンティクスが変更される。この第2の例示的な実装形態では、MBレイヤ、MB予測、およびサブMB予測についてのシンタックスは、上記で説明した第1の例示的な実装形態の場合と同様であり得る。ただし、第2の例示的な実装形態では、スライスデータのシンタックスおよびセマンティクスならびに対応するセマンティクスは、第1の例示的な実装形態の場合とは異なり得る。
[0186]以下の表6は、第2の例示的な実装形態による、スライスデータシンタックス構造についての例示的なシンタックスである。
[0187]表6の例示的なシンタックスでは、本開示の技法によれば、VSPがスライスのために使用可能であり、変数MbSkipFromVSPFlagLeft=1であり、変数MbSkipFromVSPFlagUp=1であり、RefPicList0またはRefPicList1がVSPピクチャを含むとき、スライスのためのスライスデータシンタックス構造は、現在のMBのためのskip_from_vsp_flagシンタックス要素を含み得る。他の例では、変数MbSkipFromVSPFlagLeft=1であり、変数MbSkipFromVSPFlagUp=1であり、RefPicList0またはRefPicList1がVSPピクチャを含むとき、スライスのためのスライスデータシンタックス構造は現在のMBのためのskip_from_vsp_flagシンタックス要素を含み得る。たとえば、slice_vsp_flag=1であり、MbSkipFromVSPFlagLeft=1であり、MbSkipFromVSPFlagUp=1であり、VspRefExist=1であるとき、スライスデータシンタックス構造はskip_from_vsp_flagを含み得る。いくつかの例では、MbSkipFromVSPFlagLeftおよびMbSkipFromVSPFlagUpは、それぞれ、左側および上側の利用可能なMBのskip_from_vsp_flagの値に設定され得る。代替例では、左側のMB中の利用可能なブロックのいずれかが1に等しいVSPFlagを有する場合、MbSkipFromVSPFlagLeftは1に設定される。この例では、上側のMB中の利用可能なブロックのいずれかが1に等しいVSPFlagを有する場合、MbSkipFromVSPFlagUpは1に設定される。別の代替例では、両方の左側の8×8ブロックが、利用可能であり、1に等しいVSPFlagを有する場合、MbSkipFromVSPFlagLeftは1に設定される。この例では、両方の上側の8×8ブロックが、利用可能であり、1に等しいVSPFlagを有する場合、MbSkipFromVSPFlagUpは1に設定される。
[0188]現在のMBのためのskip_from_vsp_flagは、現在のMB全体がVSPピクチャから予測されるかどうか、現在のMBが、非ゼロ変換係数レベルを含むルーマおよび/またはクロマ変換係数ブロックに関連付けられるかどうか、および現在のMBのためのmb_typeシンタックス要素が存在するかどうかを示す。たとえば、1に等しいskip_from_vsp_flagは、現在のMB全体がVSPピクチャから予測され、CodedBlockPatternLumaとCodedBlockPatternChromaとが0に設定され、mb_typeが存在しないことを示す。skip_from_vsp_flagが0に等しくなるとき、現在のMBは、VSPピクチャから予測されないか、またはCodedBlockPatternLumaとCodedBlockPatternChromaのうちの少なくとも1つが0に等しくない。代替的に、skip_from_vsp_flagが0に等しくなるとき、現在のMBは通常のスキップモードを使用して予測される。skip_from_vsp_flagが存在しないとき、skip_from_vsp_flagは0に等しくなると推測され得る。いくつか代替例では、skip_from_vsp_flagが1に等しくなるとき、mb_skip_flagが存在するかどうかにかかわらず、mb_skip_flagは1に等しくなると推論され得る。
[0189]表6の例示的なシンタックスでは、1に等しいmb_skip_flagは、現在のMBについて、PまたはSPスライスを復号するとき、mb_typeがP_Skipであると推論され得、そのMBタイプはP MBタイプと総称され、または現在のMBについて、Bスライスを復号するとき、mb_typeがB_Skipであると推論され得、そのMBタイプはB MBタイプと総称されることを指定する。0に等しいmb_skip_flagは、現在のMBがスキップされないことを指定する。
[0190]さらに、表6の例示的なシンタックスでは、skip_from_vsp_flagが0に等しくなり、mb_skip_flagが0に等しくなる場合、変数moreDataFlagは1に等しくなる(すなわちmoreDataFlag=!skip_from_vsp_flag&&!mb_skip_flag)。moreDataFlagが1に等しくなる場合、スライスデータシンタックス構造は、現在のMBのためのマクロブロックレイヤシンタックス構造を含み得る。他の例では、mb_skip_flagが0に等しくなる場合、moreDataFlagは1に等しくなり得る(すなわち、moreDataFlag=!mb_skip_flag)。
[0191]第2の例示的な実装形態では、エントロピー符号化ユニット118またはエントロピー復号ユニット150などのエントロピーコーダは、第1の例示的な実装形態に関して説明したエントロピーコーディングプロセスと同様のエントロピーコーディングプロセスを実行し得る。代替的に、第2の例示的な実装形態では、エントロピーコーダは、第1の例示的な実装形態に関して上記で説明したものとは異なるコンテキスト初期化および異なるコンテキスト選択動作を実行し得る。
[0192]たとえば、第2の例示的な実装形態では、エントロピーコーダは、コンテキストの2つのセット、1つはskip_from_vsp_flagのためのもの、もう一方はvsp_mb_flagとmb_part_vsp_flagとsub_mb_vsp_flagとのためのものを使用し得る。コンテキスト開始動作中に、エントロピーコーダは、PスライスおよびBスライスについて異なる値で、vsp_mb_flag、mb_part_vsp_flag、またはsub_mb_vsp_flagのコンテキストの初期確率を初期化し得る。VSPモードは、PスライスとBスライスの両方ために適用され得る。さらに、エントロピーエンコーダは、Bスライスのそれとは別様にPスライスのskip_from_vsp_flagのコンテキストのための初期確率を初期化し得る。
[0193]第2の例示的な実装形態では、エントロピーコーダが、mb_part_vsp_flag、sub_mb_vsp_flag、vsp_mb_flag、またはskip_from_vsp_flagをエントロピーコーディングしているとき、エントロピーコーダは、これらのシンタックス要素のうちの1つに関連するビンのためのctxIdxIncを判断し得る。エントロピーコーダは、condTermFlagAおよびcondTermFlagBに少なくとも部分的に基づいてビンのためのctxIdxIncを判断し得る。様々な例では、エントロピーコーダは、ctxIdxInc=condTermFlagA+condTermFlagBとなるように、ctxIdxInc=condTermFlagAとなるように、またはctxIdxInc=condTermFlagBとなるようにビンのためのctxIdxIncを判断し得る。第2の例示的な実装形態では、エントロピーコーダは、現在のMBまたはMBパーティションに隣接する特定のブロックに関連するデータが、現在のMBまたはMBパーティションに関連するシンタックス要素のためのエントロピーコーディングプロセスにおいて使用するために利用可能であるかどうかに少なくとも部分的に基づいてcondTermFlagAとcondTermFlagBとを判断し得る。
[0194]たとえば、第2の例示的な実装形態では、エントロピーコーダが、mb_part_vsp_flag、sub_mb_vsp_flag、vsp_mb_flagシンタックス要素をコーディングしている場合、mbPAddrAは、現在のMBまたはMBパーティションの左側の隣接8×8ブロックを表し得、mbPAddrBは、現在のMBまたはMBパーティションの上側の隣接8×8ブロックを表し得る。この例では、mbPAddrAが利用可能でないか、またはmbPAddrAのためのNonSkipVSPFlagが0に等しくなる場合、condTermFlagAは0に等しくなる。この例では、NonSkipVSPFlagは、コーディングされるべきシンタックス要素に応じて、vsp_mb_flag、mb_part_vsp_flag、またはsub_mb_vsp_flagのいずれかであり得る。そうではなく、mbPAddrAが利用可能であり、mbPAddrAのためのNonSkipVSPFlagが1に等しくなる場合、condTermFlagAは1に等しくなる。同様に、mbPAddrBが利用可能でないか、またはmbPAddrBのためのNonSkipVSPFlagが0に等しくなる場合、condTermFlagBは0に等しくなる。mbPAddrBが利用可能であり、mbPAddrBのためのNonSkipVSPFlagが1に等しくなる場合、condTermFlagBは1に等しくなる。
[0195]さらに、第2の例示的な実装形態では、エントロピーコーダがskip_from_vsp_flagシンタックス要素をコーディングしている場合、mbPAddrAは、現在のMBまたはMBパーティションの左側の隣接8×8ブロックを表し得、mbPAddrBは、現在のMBまたはMBパーティションの上側の隣接8×8ブロックを表し得る。この例では、mbPAddrAが利用可能であり、mbPAddrAのためのskip_from_vsp_flagが0に等しくなる場合、condTermFlagAは1に等しくなり得る。そうではなく、mbPAddrAが利用可能でないか、またはmbPAddrAのためのskip_from_vsp_flagが1に等しくなる場合、condTermFlagAは0に等しくなり得る。同様に、mbPAddrBが利用可能であり、mbPAddrBのためのskip_from_vsp_flagが0に等しくなる場合、condTermFlagBは1に等しくなり得る。そうではなく、mbPAddrBが利用可能でないか、またはmbPAddrBのためのskip_from_vsp_flagが1に等しくなる場合、condTermFlagBは0に等しくなり得る。
[0196]エントロピーコーダがskip_from_vsp_flagをコーディングしている別の例では、mbPAddrAが利用可能であり、mbPAddrAのためのskip_from_vsp_flagが1に等しくなる場合、condTermFlagAは1に等しくなり得る。そうではなく、mbPAddrAが利用可能でないか、またはmbPAddrAのためのskip_from_vsp_flagが0に等しくなる場合、condTermFlagAは0に等しくなり得る。同様に、mbPAddrBが利用可能であり、mbPAddrBのためのskip_from_vsp_flagが1に等しくなる場合、condTermFlagBは1に等しくなり得る。そうではなく、mbPAddrBが利用可能でないか、またはmbPAddrBのためのskip_from_vsp_flagが0に等しくなる場合、condTermFlagBは0に等しくなり得る。
[0197]エントロピーコーダがskip_from_vsp_flagをコーディングしている別の例では、mbPAddrAが利用可能であり、mbPAddrAのためのvsp_mb_flagが0に等しくなる場合、condTermFlagAは1に等しくなり得る。そうではなく、mbPAddrAが利用可能でないか、またはmbPAddrAのためのvsp_mb_flagが1に等しくなる場合、condTermFlagAは0に等しくなり得る。同様に、mbPAddrBが利用可能であり、mbPAddrBのためのvsp_mb_flagが0に等しくなる場合、condTermFlagBは1に等しくなり得る。そうではなく、mbPAddrBが利用可能でないか、またはmbPAddrBのためのvsp_mb_flagが1に等しくなる場合、condTermFlagBは0に等しくなり得る。
[0198]他の例では、エントロピーコーダは、skip_from_vsp_flagとvsp_mb_flagの両方からcondTermFlagAとcondTermFlagBとを判断し得る。別の例では、エントロピーコーダは、vsp_mb_flagからcondTermFlagAとcondTermFlagBとを判断し得る。
[0199]本開示の技法の第3の例示的な実装形態では、MBレイヤ、サブMB予測、およびスライスデータについてのシンタックスは、上記で説明した第1の例示的な実装形態の場合と同様であり得る。ただし、第3の例示的な実装形態では、シンタックスは、様々な状況に基づいてさらに最適化され得る。たとえば、MB予測シンタックス構造のシンタックスおよびセマンティクスならびに対応するセマンティクスは、第1の例示的な実装形態の場合とは異なり得る。以下の表7は、第3の例示的な実装形態による、スライスデータについての例示的なシンタックスである。
[0200]表7は、上記の表4と同様である。ただし、表7の例示的なシンタックスは、ref_idx_l1シンタックス要素を生成/復号するためのループ中に「for(mbPartIdx=0;mbPartIdx<NumMbPart(mb_type)&&!mb_part_vsp_flag[mbPartIdx];mbPartIdx++)」の代わりに「for(!mb_part_vsp_flag[mbPartIdx]&&(mbPartIdx=0;mbPartIdx<NumMbPart(mb_type);mbPartIdx++)」を示す。他の例では、slice_vsp_flag&&NumMbPart(mb_type)!=1&&MbPartPredMode(mb_type,mbPartIdx)==Pred_L0である場合、MB予測シンタックス構造は、mb_part_vsp_flag[mbPartIdx]を含み得る。
[0201]本開示の技法の第4の例示的な実装形態は、上記で説明した第2の例示的な実装形態と同様であり得る。ただし、第4の例示的な実装形態では、MBレイヤ、MB予測、およびサブMB予測のシンタックス設計は、第2の例示的な実装形態のそれに対して変更され得る。以下の表8は、第4の例示的な実装形態による、MBレイヤシンタックス構造の例示的なシンタックスである。
[0202]表8の例では、MBレイヤシンタックス構造のコンテンツは、変数MbVSPFlagLeftとMbVSPFlagUpとに依存する。MbVSPFlagLeftおよびMbVSPFlagUpは、それぞれ、現在のMBの左側および上側のMBのvsp_mb_flagの値に設定され得る。代替的に、MbVSPFlagLeftおよびMbVSPFlagUpは、それぞれ、現在のMBの左側および上側のMBのskip_from_vsp_flagおよびvsp_mb_flagの値より大きい値に設定され得る。すなわち、MbVSPFlagLeftは、左側のMBのmax(skip_from_vsp_flag,vsp_mb_flag)に設定され得、MbVSPFlagUpは、上側のMBのmax(skip_from_vsp_flag,vsp_mb_flag)に設定され得る。別の代替例では、現在のMBの左側の任意の利用可能なブロックが1に等しいVSPFlagを有する場合、MbVSPFlagLeftは1に設定される。この例では、現在のMBの上側の任意の利用可能なブロックが0に等しいVSPFlagを有する場合、MbVSPFlagUpは1に設定され得る。また別の例では、現在のMBの左側の両方の8×8ブロックが、現在のMBをコーディングする際に使用するために利用可能であり、1に等しいVSPFlagを有する場合、MbVSPFlagLeftは1に設定される。この例では、現在のMBの上側の両方の8×8ブロックが、現在のMBをコーディングする際に使用するために利用可能であり、1に等しいVSPFlagを有する場合、MbVSPFlagUpは1に設定される。
[0203]表8の例では、slice_vsp_flagが1に等しくなり、MbVSPFlagLeftが1に等しくなり、bMbVSPFlagUpが1に等しくなり、VspRefExistが1に等しくなる場合、MBレイヤシンタックス構造はvsp_mb_flagを含み得る。slice_vsp_flagが1に等しくなり、MbVSPFlagLeftが1に等しくなり、bMbVSPFlagUpが1に等しくなり、VspRefExistが1に等しくない場合、MBレイヤシンタックス構造はmb_typeを含み得る。他の例では、MbVSPFlagLeftが1に等しくなり、bMbVSPFlagUpが1に等しくなり、VspRefExistが1に等しくなる場合、MBレイヤシンタックス構造はvsp_mb_flagを含み得る。MbVSPFlagLeftが1に等しくなり、bMbVSPFlagUpが1に等しくなり、VspRefExistが1に等しくない場合、MBレイヤシンタックス構造はmb_typeを含み得る。
[0204]さらに、表8の例では、slice_vsp_flag&&VspRefExist&&(mb_type==B_L0_16x16||mb_type==P_L0_16x16)である場合、MBレイヤシンタックス構造は、vsp_mb_flagを含み得る。他の例では、mb_type==(B_L0_16x16||mb_type==P_L0_16x16)である場合、MBレイヤシンタックス構造は、vsp_mb_flagを含み得る。
[0205]さらに、第4の例示的な実装形態では、MB予測シンタックス構造のシンタックスは、上記の表7に示したシンタックスと同じであり得る。ただし、いくつかの例では、(slice_vsp_flag&&NumMbPart(mb_type)!=1であり、MbPartPredMode(mb_type,mbPartIdx)==Pred_L0である場合、MB予測シンタックス構造は、mb_part_vsp_flag[mbPartIdx]を含み得る。以下の表9に、第4の例示的な実装形態において使用される例示的なサブMB予測シンタックスを示す。
[0206]表9の例では、変数SubMbVSPFlagLeftおよびSubMbVSPFlagUpは、サブMB予測のコンテンツを制御する。SubMbVSPFlagLeftおよびSubMbVSPFlagUpは、それぞれ、左側の8×8ブロックおよび上側の8×8ブロックのsub_mb_vsp_flagの値に設定される。左側の8×8ブロックは、現在のサブMBパーティションの左側にある。上側の8×8ブロックは、現在のサブMBパーティションの上側にある。特に、表9の例示的なシンタックスでは、SubMBVspFlagLeftおよびSubMBVspFlagUpが1に等しくなり、RefPicList0またはRefPicList1がVSPピクチャを含む(たとえば、VspRefExist=1である)とき、サブMB予測シンタックス構造は、サブMBパーティションのためのsub_mb_vsp_flagを含み得る。サブMBパーティションのためのsub_mb_vsp_flagは、サブMBパーティションがVSPから予測されるかどうかを示す。さらに、表9の例示的なシンタックスでは、サブMBパーティションがVSPから予測されないことをサブMBパーティションのためのsub_mb_vsp_flagが示すとき、サブMB予測シンタックス構造はサブMBパーティションのためのsub_mb_typeを含み得る。
[0207]さらに、表9の例示的なシンタックスでは、SubMbVSPFlagLeftまたはSubMbVSPFlagUpのいずれかが1に等しくない場合、VSPがスライスのために使用可能であり、RefPicList0またはRefPicList1がVSPピクチャを含み、サブMBパーティションのサブMBパーティションの数が1であるかまたはサブMBパーティションのサブMBタイプがB_direct_8x8であるとき、サブMB予測シンタックス構造はサブMBパーティションのためのsub_mb_vsp_flagを含み得る。サブMBパーティションのサブMBタイプがB_direct_8x8である場合、サブMBパーティションは、双方向にインター予測され、8×8ブロックに区分される。
[0208]別の例では、subMbVSPFlagLeftおよびSubMbVSPFlagUpは、それぞれ、現在のサブMBパーティションをコーディングする際に使用するために利用可能である場合、左側の8×8ブロックおよび上側の8×8ブロックのVSPFlagの値に設定され得る。
[0209]さらに、表9の代替バージョンでは、sub_mb_type[mbPartIdx]==P_L0_8x8またはsub_mb_type[mbPartIdx]==B_L0_8x8である場合、サブMB予測シンタックス構造は、sub_mb_vsp_flag[mbPartIdx]を含み得る。
[0210]本開示の技法の第5の例示的な実装形態は、上記で説明した第1の例示的な実装形態と同様である。この第5の例示的な実装形態では、mb_skip_flagとskip_from_vsp_flagとは組み合わされて1つのシンタックス要素になり得る。上記のように、mb_skip_flagは、スキップモードが使用されるかどうかを示す。skip_from_vsp_flagは、スキップモードが使用されるとき、MB全体がVSPピクチャから予測されることを示す。したがって、第5の例示的な実装形態では、組み合わされたフラグは、スキップモードが使用されるかどうかを示し、スキップモードが使用される場合は、MB全体がVSPピクチャから予測されることを示す。
[0211]本開示の技法の第6の例示的な実装形態は、上記で説明した第2の例示的な実装形態と同様である。ただし、第6の例示的な実装形態では、MBレイヤシンタックス構造とMB予測シンタックス構造とは、以下の表10および表11のシンタックスに従って定義され得る。
[0212]表10の例示的なシンタックスでは、MBのタイプがB_Direct_16x16であり、VSPがスライスのために使用可能であり、RefPicList0またはRefPicList1がVSPピクチャを含む場合、スライスのMBのためのMBレイヤシンタックス構造はvsp_direct_flagシンタックス要素を含み得る。MBのタイプがB_Direct_16x16である場合、MBは、Bスライス中にあり、直接モードでコーディングされ(すなわち、動き情報はシグナリングされないが、残差情報がシグナリングされる)、MBは、より小さいMBパーティションに区分されない。vsp_direct_flagは、MBがVSPピクチャから予測されるかどうかを示し得る。たとえば、1に等しいvsp_direct_flagは、B_direct_16x16モードを用いるMBがVSPフレームから予測されることを示し得、0に等しいvsp_direct_flagは、元のB_direct_16x16モードが使用されることを示し得る。さらに、表10に示すように、vsp_direct_flagは、MBレイヤシンタックス構造がtransform_size_8x8_flagシンタックス要素を含むかどうかを少なくとも部分的に制御し得る。vsp_direct_flagのためのCABACコーディングプロセスは、3D−AVCワーキングドラフト1におけるmb_direct_type_flagのためのCABACコーディングプロセスと同じであり得る。
[0213]表11の例では、slice_vsp_flagが1に等しくなり、VspRefExistが1に等しくなる場合、MB予測シンタックス構造はmb_part_vsp_flag[mbPartIdx]を含み得る。他の例では、slice_vsp_flagが1に等しくなる場合、MB予測シンタックス構造は、mb_part_vsp_flag[mbPartIdx]を含み得る。
[0214]本開示の技法の第7の例示的な実装形態は、MBがスキップモードで符号化されるかどうかを示し、そのように符号化される場合、MBがVSPピクチャに基づいて復号されるべきであるかどうかを示す組み合わされたシンタックス要素を提供する。第7の例示的な実装形態では、スライスデータシンタックス構造は、以下の表12のシンタックスに準拠し得る。
[0215]表12の例示的なシンタックスでは、VSPがスライスのために使用可能であり、そのスライスのためのVSP参照ピクチャが存在する場合、スライスのためのスライスデータシンタックス構造は、mb_skip_idcシンタックス要素を含み得る。一例では、mb_skip_idcシンタックス要素が0に等しくなる場合、現在のMBはVSPピクチャからスキップされる。これは、現在のMBのために動きも残余もシグナリングされないことを意味する。現在のMBは、mb_skip_idcシンタックス要素が適用されるMBである。この例では、mb_skip_idcシンタックス要素が1に等しくなる場合、現在のMBは、通常のスキップモードを使用して符号化される。言い換えれば、現在のMBはVSPピクチャからスキップされない。さらに、この例では、mb_skip_idcシンタックス要素が2に等しくなる場合、現在のMBは、スキップモードを使用してコーディングされない。
[0216]いくつかの例では、mb_skip_idcシンタックス要素は追加の値を有し得る。たとえば、一例では、mb_skip_idcシンタックス要素が2に等しくなる場合、現在のMBは、VSPピクチャから完全に予測され、したがって、現在のMBについての動き情報はシグナリングされないが、現在のMBについての残余情報はシグナリングされ得る。別の例では、mb_skip_idcシンタックス要素が3に等しくなる場合、現在のMBは通常の直接予測モードから完全に予測されるが、MBの残余がシグナリングされる。直接予測モードは、動きベクトルがシグナリングまたは復号されないインター予測のタイプである。直接予測モードでは、参照ピクチャの参照インデックスがシグナリングされ、MB(またはMBパーティション)の残余が参照ピクチャのコロケートMB(またはMBパーティション)に対してシグナリングされる。別の例では、MBに関連するシンタックス要素は、MB全体がVSPピクチャから予測され、MBのための残余がシグナリングされることを示し得る。すなわち、本開示の他の技法と同様に、MV全体がVSPから予測されるが、残余が依然として送信されることを示す追加のモードはMB中でシグナリングされ得る。
[0217]別の例では、mb_skip_idcシンタックス要素が1に等しくなる場合、現在のMBはVSPピクチャからスキップされる。この例では、現在のMBのために動き情報も残余情報もシグナリングされない。さらに、この例では、mb_skip_idcシンタックス要素が0に等しくなる場合、現在のMBは、通常のスキップモードでコーディングされる。
[0218]さらに、MBのためのMBレイヤシンタックス構造は、以下の表13のシンタックスに準拠し得る。
[0219]VSPがスライスのために使用可能であり、そのスライスのためのVSP参照ピクチャが存在する場合、表13の例示的なMBレイヤシンタックス構造は、vsp_mb_flagシンタックス要素を含み得る。vsp_mb_flagシンタックス要素は、MBレイヤシンタックス構造に対応するMB全体がVSPピクチャから予測されるかどうかと、MBについての残差データがシグナリングされるかどうかとを示す。たとえば、vsp_mb_flagシンタックス要素が1に等しくなる場合、MB全体はVSPピクチャから予測され得、MBについての残差データがシグナリングされる。この例では、vsp_mb_flagシンタックス要素が0に等しくなる場合、MB全体は、他のコーディングモードによって予測され得る。さらに、この例では、vsp_mb_flagシンタックス要素が1に等しくなるとき、mb_typeシンタックス要素は、MBレイヤシンタックス構造中でシグナリングされない。vsp_mb_flagシンタックス要素がMBレイヤシンタックス構造中に存在しない場合、ビデオデコーダ30は、vsp_mb_flagシンタックス要素が0に等しくなると推論し得る。
[0220]表12および表13において説明した例示的なシンタックス構造では、mb_skip_idcシンタックス要素以外のシンタックス要素のためのコンテキストモデリングは、本開示の他の場所で説明するものと同じであり得る。mb_skip_idcシンタックス要素のコンテキストのための初期確率は、PスライスおよびBスライスに異なる値で初期化され得る。様々な例では、mb_skip_idcシンタックス要素は様々な方法で2値化され得、mb_skip_idcシンタックス要素のためのコンテキストは様々な方法で選択され得る。
[0221]一例では、mb_skip_idcシンタックス要素は、mbPAddrAを表すMBと、mbPAddrBを表すMBとからの情報を使用して2値化され得る。mbPAddrAは、現在のMBまたは現在のMBパーティションの左側の隣接MB(または8×8ブロック)であり得る。mbPAddrBは、現在のMBまたは現在のMBパーティションの上側の隣接MB(または8×8ブロック)であり得る。mbPAddrAとmbPAddrBの両方が利用可能であり、mbPAddrAとmbPAddrBの両方がVSPスキップモードを使用してコーディングされる場合、mb_skip_idcシンタックス要素は、以下の表14に従って2値化され得る。
代替的に、mb_skip_idcシンタックス要素は、以下の表15に従って2値化され得る。
[0222]エントロピーコーダが、表14または表15に従って2値化されたmb_skip_idxシンタックス要素をエントロピーコーディングしているとき、エントロピーコーダは、2値化されたmb_skip_idxシンタックス要素のビンごとにctxIdxIncを判断し得る。この例では、2値化されたmb_skip_idxシンタックス要素のビンのbinIdxが0に等しくなる(すなわち、エントロピーコーダが、mb_skip_idxシンタックス要素の第1のビンをエントロピーコーディングしている)場合、ビンのためのctxIdxIncは、condTermFlagAとcondTermFlagBとの和に等しくなり得る。すなわち、ctxIdxInc=condTermFlagA+condTermFlagBとなる。この例では、mbPAddrNが利用可能でないか、またはmbPAddrNのモードがVSPスキップモードである場合、condTermFlagN(ここで、NはAまたはBのいずれかである)は0に等しくなり得る。そうでない場合、condTermFlagNは1に等しくなり得る。
[0223]さらに、この例では、ビンのbinIdxが1に等しくなる場合、ビンのためのctxIdxIncは、condTermFlagAプラスcondTermFlagBに等しくなり得る。ビンのbinIdxが1に等しくなるとき、mbPAddrNが利用可能でないか、またはmbPAddrNのモードが通常のスキップモードである場合、condTermFlagN(ここで、NはAまたはBのいずれかである)は0に等しくなり得る。そうでない場合、condTermFlagNは1に等しくなり得る。
[0224]そうではなく、mbPAddrAまたはmbPAddrBのいずれかが利用可能でないか、あるいはmbPAddrAまたはmbPAddrBがVSPスキップモードで符号化されない場合、mb_skip_idcシンタックス要素は、以下の表16に従って2値化され得る。
代替的に、mbPAddrAまたはmbPAddrBのいずれかが利用可能でないか、あるいはmbPAddrAまたはmbPAddrBがVSPスキップモードで符号化されない場合、mb_skip_idcシンタックス要素は、以下の表17に従って2値化され得る。
[0225]mbPAddrAまたはmbPAddrBのいずれかが利用可能でないか、あるいはmbPAddrAまたはmbPAddrBがVSPスキップモードで符号化されないとき、エントロピーコーダは、2値化されたmb_skip_idxシンタックス要素のビンごとにctxIdxIncを判断し得る。この例では、2値化されたmb_skip_idxシンタックス要素のビンのbinIdxが0に等しくなる(すなわち、エントロピーコーダが、mb_skip_idxシンタックス要素の第1のビンをエントロピーコーディングしている)場合、ビンのためのctxIdxIncは、condTermFlagAとcondTermFlagBとの和に等しくなり得る。すなわち、ctxIdxInc=condTermFlagA+condTermFlagBとなる。この例では、mbPAddrNが利用可能でないか、またはmbPAddrNのモードが通常のスキップモードである場合、condTermFlagN(ここで、NはAまたはBのいずれかである)は0に等しくなり得る。そうでない場合、condTermFlagNは1に等しくなり得る。
[0226]さらに、この例では、ビンのbinIdxが1に等しくなる場合、ビンのためのctxIdxIncは、condTermFlagAプラスcondTermFlagBに等しくなり得る。ビンのbinIdxが1に等しくなるとき、mbPAddrNが利用可能でないか、またはmbPAddrNのモードがVSPスキップモードである場合、condTermFlagN(ここで、NはAまたはBのいずれかである)は0に等しくなり得る。そうでない場合、condTermFlagNは1に等しくなり得る。
[0227]他の例では、ビンのctxIdxIncは、単一の空間ネイバーのみに依存し得る。たとえば、ctxIdxIncは、condTermFlagAに等しくなり得る。別の例では、ctxIdxIncは、condTermFlagBに等しくなり得る。この例では、condTermFlagAおよびcondTermFlagBは上記のように定義され得る。
[0228]本開示の技法の第8の例示的な実装形態は、第7の例示的な実装形態と同様であるが、2値化およびコンテキスト選択方法が異なる。第8の例示的な実装形態では、Pスライス中のP MBとBスライス中のB MBとのための2値化方式は、以下の表18に従って指定される。
[0229]代替的に、第8の例示的な実装形態では、Pスライス中のP MBとBスライス中のB MBとのための2値化プロセスは、以下の表19に従って指定される。
[0230]第8の例示的な実装形態では、エントロピーコーダが、MB_skip_idcシンタックス要素をコーディングしているとき、エントロピーコーダは、2値化されたmb_skip_idcシンタックス要素のビンごとにctxIdxIncを判断し得る。たとえば、mb_skip_idcを復号するとき、mb_skip_idcのためのctxIdxIncは、binIdxに応じて指定され得る。ビンのためのctxIdxIncを判断する際、mbPAddrAは、現在のMBの左側の隣接MB(または8×8ブロック)を表し得、mbPAddrBは、現在のMBまたはMBパーティションの上側の隣接MB(または8×8ブロック)を表し得る。
[0231]2値化されたmb_skip_idcシンタックス要素のビンのbinIdxが0に等しくなる場合、エントロピーエンコーダは、様々な方法でビンのためのctxIdxIncを判断し得る。たとえば、2値化されたmb_skip_idcシンタックス要素のビンのbinIdxが0に等しくなる場合、ビンのためのctxIdxIncは、condTermFlagAとcondTermFlagBとの和に等しくなり得る。この例では、mbPAddrNが利用可能でないか、またはmbPAddrNのモードがスキップモード(通常のスキップモードまたはVSPスキップモードのいずれか)である場合、condTermFlagN(ここで、NはAまたはBのいずれかである)は0に等しくなり得る。そうでない場合、この例では、condTermFlagNは1に等しくなる。別の例では、2値化されたmb_skip_idcシンタックス要素のビンのbinIdxが0に等しくなる場合、ビンのためのctxIdxIncは、condTermFlagAとcondTermFlagBとの和に等しくなり得る。この例では、mbPAddrNが利用可能でないか、またはmbPAddrNのモードがスキップモードでない(通常のスキップモードでもVSPスキップモードでもない)場合、condTermFlagN(ここで、NはAまたはBのいずれかである)は0に等しくなり得る。そうでない場合、この例では、condTermFlagNは1に等しくなる。別の例では、2値化されたmb_skip_idcシンタックス要素のビンのbinIdxが0に等しくなる場合、ビンのためのctxIdxIncはcondTermFlagNに等しくなり得、ここで、condTermFlagN(ここで、NはAまたはBのいずれかである)は、本段落の他の例によって記述された方法で定義される。
[0232]2値化されたmb_skip_idcシンタックス要素のビンのbinIdxが0よりも大きくなる場合、エントロピーコーダは、様々な方法でビンのためのctxIdxIncを判断し得る。たとえば、2値化されたmb_skip_idcシンタックス要素のビンのbinIdxが0より大きくなる場合、ビンのためのctxIdxIncは、condTermAとcondTermBとctxOffsetとの和に等しくなり得る。この例では、condTermFlagN(ここで、NはAまたはBのいずれかであり得る)とctxOffsetとは、どちらもmbPAddrNのモードに依存し得る。さらに、この例では、mbPAddrAとmbPAddrBの両方が、利用可能であり、VSPスキップモードとしてコーディングされる場合、ctxOffsetは0に等しくなり得る。そうでない場合、ctxOffsetは3に等しくなり得る。一代替では、ctxOffsetは0に設定される。別の代替では、mbPAddrAとmbPAddrBの両方が、利用可能であり、VSPスキップモードとしてコーディングされる場合、ctxOffsetは、3に等しくなり、そうでない場合、0に等しくなる。この例では、mbPAddrAとmbPAddrBの両方が、利用可能であり、VSPスキップモードとしてコーディングされる場合、condTermFlagAとcondTermFlagBとは0に等しく設定され得る。代替的に、mbPAddrN(ここで、NはAまたはBのいずれかであり得る)が利用可能でないか、またはmbPAddrNのモードがVSPスキップモードである場合、condTermFlagNは0に等しく設定され、そうでない場合、1に等しく設定される。
[0233]前の段落の例を続けると、mbPAddrAまたはmbPAddrBのいずれかが、利用可能でないか、またはVSPスキップモードとしてコーディングされない場合、condTermFlagN(ここで、NはAまたはBのいずれかである)は0に等しく設定され得る。そうでない場合、condTermFlagNは1に等しく設定され得る。一代替例では、mbPAddrNが利用可能でないか、またはmbPAddrNのモードがVSPスキップモードである場合、condTermFlagNは0に等しく設定され、そうでない場合、1に等しく設定される。別の代替例では、mbPAddrNが利用可能でないか、またはmbPAddrNのモードがVSPスキップモードでない場合、condTermFlagNは0に等しく設定され得、そうでない場合、1に等しく設定され得る。別の代替では、mbPAddrNが利用可能でないか、またはmbPAddrNのモードが通常のスキップモードである場合、condTermFlagNは0に設定され得る。そうでない場合、condTermFlagNは0に等しく設定され得る。別の代替では、mbPAddrNが利用可能でないか、またはmbPAddrNのモードが通常のスキップモードでない場合、condTermFlagNは0に等しく設定され得る。そうでない場合、condTermFlagNは1に設定され得る。
[0234]別の例では、第8の例示的な実装形態によれば、2値化されたmb_skip_idcシンタックス要素のビンのbinIdxが0よりも大きい場合、エントロピーコーダは、ビンのためのctxIdxIncをcondTermFlagNとctxOffsetとの和として判断し得る。この例では、condTermFlagN(ここで、NはAまたはBのいずれかであり得る)とctxOffsetとは、どちらもmbPAddrNのモードに依存し得る。さらに、この例では、mbPAddrAが、利用可能であり、VSPスキップモードとしてコーディングされる場合、ctxOffsetは0に設定され得る。そうでない場合、ctxOffsetは2に設定され得る。一代替では、ctxOffsetは0に設定される。別の代替では、mbPAddrNが、利用可能であり、VSPスキップモードとしてコーディングされる場合、ctxOffsetは2に設定される。そうでない場合、この代替では、ctxOffsetは0に設定される。
[0235]前の段落の例を続けると、mbPAddrNが、利用可能であり、VSPスキップモードとしてコーディングされる場合、condTermFlagNは、mbPAddrNが、利用可能でないか、またはmbPAddrNのモードが通常のスキップモードである場合、condTermFlagNが0に等しく設定され、そうでない場合、condTermFlagNが1に設定されると定義され得る。そうではなく、mbPAddrNが、利用可能でないか、またはVSPスキップモードとしてコーディングされない場合、condTermFlagNは、mbPAddrNが、利用可能でないか、またはmbPAddrNのモードが通常のスキップモードである場合、condTermFlagNが0に等しく設定され、そうでない場合、1に等しく設定されると定義され得る。一代替では、mbPAddrNが利用可能でないか、またはmbPAddrNのモードがVSPスキップモードである場合、condTermFlagNは0に等しく設定される。そうでない場合、condTermFlagNは1に等しく設定される。別の代替では、mbPAddrNが利用可能でないか、またはmbPAddrNのモードがVSPスキップモードでない場合、condTermSkipFlagNは0に等しく設定される。そうでない場合、それは1に設定される。別の代替では、mbPAddrNが利用可能でないか、またはmbPAddrNのモードが通常のスキップモードである場合、condTermFlagNは0に等しく設定される。そうでない場合、condTermFlagNは0に等しく設定される。別の代替では、mbPAddrNが利用可能でないか、またはmbPAddrNのモードが通常のスキップモードでない場合、condTermSkipFlagNは0に等しく設定される。そうでない場合、それは1に設定される。
[0236]上述のように、本開示のいくつか技法は、複数のVSPピクチャをサポートする。そのような技法は、本開示で説明した第7または第8の実装形態(または他の実装形態)に追加のものであり得る。そのような技法では、利用可能なVSPピクチャの総数は、ビットストリームの様々な部分でシグナリングされ得る。たとえば、利用可能なVSPピクチャの総数は、シーケンスパラメータセット、ピクチャパラメータセット、スライスヘッダ、またはビットストリームの別の部分でシグナリングされ得る。利用可能な複数のVSPピクチャがあるとき、シンタックス要素は、適用可能なVSPピクチャのインデックスを示すためにシグナリングされ得る。VSPピクチャの数が1よりも大きいとき、以下の説明が適用され得る。以下の表20に、スライスデータのための例示的なシンタックス構造を示す。表20のシンタックス構造は、MBに適用可能なVSPピクチャのインデックスを指定するシンタックス要素vsp_ref_idxを含む。
[0237]表20の例示的なシンタックス構造では、vsp_ref_idxシンタックス要素は、予測のために使用されるべきVSPピクチャのインデックスを指定し得る。現在のMBが、mb_skip_idcシンタックス要素によって示されるVSPピクチャから導出され得るVSPピクチャからスキップされる場合、スライスデータシンタックス構造はvsp_ref_idxシンタックス要素を含み得る。さらに、vsp_mb_flagシンタックス要素が1に等しくなる場合、スライスデータシンタックス構造はvsp_ref_idxシンタックス要素を含み得る。さらに、mb_part_vsp_flag[mbPartIdx]が1に等しくなる場合、スライスデータシンタックス構造はvsp_mb_flagシンタックス要素を含み得る。前に説明したように、mb_part_vsp_flag[mbPartIdx]は、mbPartIdxに識別される現在のMBパーティションがVSPピクチャから予測されるかどうかを示す。sub_mb_vsp_flag[mbPartIdx]が1に等しくなる場合、スライスデータシンタックス構造はvsp_mb_flagシンタックス要素をも含み得る。前に説明したように、sub_mb_vsp_flag[mbPartIdx]は、mbPartIdxに識別される現在のMBパーティション(8×8)がVSPピクチャから予測されるかどうかを示す。
[0238]以下の表21に、MBレイヤシンタックス構造についての例示的なシンタックスを示す。表21に示すように、MBレイヤシンタックス構造は、複数の利用可能なVSPピクチャの中からVSPピクチャを識別するvsp_ref_idxシンタックス要素を含み得る。
[0239]表21では、vsp_ref_idxシンタックス要素のセマンティクスは、表20に関して上記で説明したセマンティクスと同じであり得、同じ条件が生じるとき、MBレイヤシンタックス構造は、vsp_ref_idxシンタックス要素を含み得る。
[0240]さらに、以下の表22に、MB予測シンタックス構造についての例示的なシンタックスを示す。表22に示すように、MB予測シンタックス構造は、mbPartIdxによって識別されるMBパーティションについて、複数の利用可能なVSPピクチャの中からVSPピクチャを識別するvsp_ref_idx[mbPartIdx]シンタックス要素を含み得る。
[0241]表22では、vsp_ref_idxシンタックス要素のセマンティクスは、表20に関して上記で説明したセマンティクスと同じであり得、同じ条件が生じるとき、MB予測シンタックス構造は、vsp_ref_idxシンタックス要素を含み得る。
[0242]以下の表23に、サブMB予測シンタックス構造についての例示的なシンタックスを示す。表23に示すように、サブMB予測シンタックス構造は、mbPartIdxによって識別されるサブMBパーティションについて、複数の利用可能なVSPピクチャの中からVSPピクチャを識別するvsp_ref_idx[mbPartIdx]シンタックス要素を含み得る。
[0243]表23では、vsp_ref_idxシンタックス要素のセマンティクスは、表20に関して上記で説明したセマンティクスと同じであり得、同じ条件が生じるとき、MB予測シンタックス構造は、vsp_ref_idxシンタックス要素を含み得る。
[0244]vsp_ref_idxのための2値化プロセスは、ref_idx_l0およびref_idx_l1と同じあり得る。vsp_ref_idxのコンテキスト選択は、ref_idx_l0およびref_idx_l1と同様の方法で実行され得る。H.264/AVC規格は、ref_idx_l0およびref_idx_l1のための2値化プロセスおよびコンテキスト選択を記載している。vsp_ref_idxのためのコンテキストモデリングは、ref_idx_l0またはref_idx_l1の値ではなく、隣接MBまたはMBパーティションのvsp_ref_idxの値に基づき得る。
[0245]いくつかの例では、MBまたはMBパーティションは、2つのVSPピクチャに基づいて予測され得る。いくつかのそのような例では、MB予測シンタックス構造は、以下の表24によって記述されるシンタックスを有し得る。
[0246]表24の例示的なシンタックスでは、MB予測シンタックス構造は、mb_part_vsp_flag_l0[mbPartIdx]シンタックス要素とmb_part_vsp_flagl1[mbPartIdx]シンタックス要素とを含み得る。mb_part_vsp_flag_l0[mbPartIdx]シンタックス要素は、現在のMBパーティションがRefPicList0中の通常の参照ピクチャから予測されるのか、VSPピクチャから予測されるのかを示す。たとえば、mb_part_vsp_flag_l0[mbPartIdx]が1に等しくなる場合、現在のMBパーティションは、予測のためのRefPicList0中の通常のピクチャから予測されず、VSPピクチャから予測される。この例では、mb_part_vsp_flag_l0[mbPartIdx]が0に等しくなる場合、MBパーティションは、予測のためのRefPicList0中の通常のピクチャから予測される。同様に、mb_part_vsp_flag_l1[mbPartIdx]シンタックス要素は、現在のMBパーティションがRefPicList1中の通常の参照ピクチャから予測されるのか、VSPピクチャから予測されるのかを示す。たとえば、mb_part_vsp_flag_l1[mbPartIdx]が1に等しくなる場合、現在のMBパーティションは、予測のためのRefPicList中の通常のピクチャから予測されず、VSPピクチャから予測される。この例では、mb_part_vsp_flag_l1[mbPartIdx]フラグが0に等しくなる場合、MBパーティションは、予測のためのRefPicList1中の通常のピクチャから予測される。
[0247]さらに、MBまたはMBパーティションが2つのVSPピクチャに基づいて予測され得るいくつかの例では、サブMB予測シンタックス構造は、以下の表25によって記述されるシンタックスを有し得る。
[0248]表25の例示的なシンタックスでは、サブMB予測シンタックス構造は、sub_mb_vsp_flag[mbPartIdx]シンタックス要素とsub_mb_vsp_flag_l0[mbPartIdx]シンタックス要素とsub_mb_vsp_flag_l1[mbPartIdx]シンタックス要素とを含み得る。sub_mb_vsp_flag[mbPartIdx]は、現在のMBパーティション(8×8)がVSPピクチャから予測されるかどうかを示す。たとえば、sub_mb_vsp_flag[mbPartIdx]が1に等しくなる場合、現在のMBパーティション(8×8)はVSPピクチャから予測される。この例では、sub_mb_vsp_flag[mbPartIdx]が0に等しくなる場合、現在のMBパーティション(8×8)はVSPピクチャから予測されない。sub_mb_vsp_flag[mbPartIdx]が存在しないとき、sub_mb_vsp_flag[mbPartIdx]は0に等しくなると推測され得る。sub_mb_vsp_flag[mbPartIdx]が1に等しくなるとき、mb_part_vsp_flag_l0[mbPartIdx]とmb_part_vsp_flag_l1[mbPartIdx]の両方は1に等しくなると導出される。
[0249]sub_mb_vsp_flag_l0[mbPartIdx]は、現在のMBパーティションがRefPicList0中の通常の参照ピクチャから予測されるのか、VSPピクチャから予測されるのかを示す。たとえば、sub_mb_vsp_flag_l0[mbPartIdx]が1に等しくなる場合、現在のMBパーティションは、予測のためのRefPicList0中の通常のピクチャから予測されず、VSPピクチャから予測される。この例では、sub_mb_vsp_flag_l0[mbPartIdx]が0に等しくなる場合、MBパーティションは、予測のためのRefPicList0中の通常のピクチャから予測される。同様に、sub_mb_vsp_flag_l1[mbPartIdx]シンタックス要素は、現在のMBパーティションがRefPicList1中の通常の参照ピクチャから予測されるのか、VSPピクチャから予測されるのかを示す。たとえば、sub_mb_vsp_flag_l1[mbPartIdx]が1に等しくなる場合、現在のMBパーティションは、予測のためのRefPicList1中の通常のピクチャから予測されず、VSPピクチャから予測される。この例では、sub_mb_vsp_flag_l1[mbPartIdx]フラグが0に等しくなる場合、MBパーティションは、予測のためのRefPicList1中の通常のピクチャから予測される。
[0250]いくつかの例では、VSPピクチャは参照ピクチャリスト中に含まれ、ref_idxは、sub_mb_vsp_flagl0、sub_mb_vsp_flagl1、mb_part_vsp_flag_l0、およびmb_part_vsp_flag_l1の値を導出するために使用される。1つのそのような例では、VSPピクチャは、RefPicList0のref_idx_l0_vspエントリとして含まれ得る。この例では、ref_idx_l0_vspは、VSPピクチャのRefPicList0中の位置を示す。さらに、この例では、VSPピクチャは、RefPicList1のref_idx_l1_vspエントリとして含まれ得る。言い換えれば、ref_idx_l1_vspは、VSPピクチャのRefPicList1中の位置を示す。VSPピクチャがRefPicList0中にない場合、ref_idx_l0_vspは−1に等しくなる。VSPピクチャがRefPicList1中にない場合、ref_idx_l1_vspは−1に等しくなる。これを以下の表26および表27に示す。
[0251]表26に示すように、ref_idx_l0[mbPartIdx]がref_idx_l0_vspに等しくなる場合、mb_part_vsp_flag_L0[mbPartIdx]は1に等しくなり得る。上記のように、1に等しいmb_part_vsp_flag_L0[mbPartIdx]は、現在のMBパーティションが、RefPicList0中の通常のピクチャから予測されず、むしろVSPピクチャから予測されることを示し得る。同様に、ビデオデコーダ30は、ref_idx_l1[mbPartIdx]がref_idx_l1_vspに等しくなる場合、mb_part_vsp_flag_L1[mbPartIdx]が1に等しくなると判断し得る。1に等しいmb_part_vsp_flag_L0[mbPartIdx]は、現在のMBパーティションが、RefPicList1中の通常のピクチャから予測されず、むしろVSPピクチャから予測されることを示し得る。したがって、表26の例示的なシンタックスでは、現在のMBパーティションが通常のピクチャから予測されるのか、VSPピクチャから予測されるのかを示すために別個のシンタックス要素をシグナリングすることが不要であり得る。代わりに、現在のMBパーティションが通常のピクチャから予測されるのか、VSPピクチャから予測されるのかを判断する目的で、ref_idx_l0シンタックス要素が再使用され得る。
[0252]表27に示すように、ビデオデコーダ30は、ref_idx_l0[mbPartIdx]がref_idx_l0_vspに等しくなる場合、sub_mb_vsp_flag_L0[mbPartIdx]は1に等しくなると判断し得る。上記のように、1に等しいsub_mb_vsp_flag_L0[mbPartIdx]は、現在のMBパーティション(8×8)が、RefPicList0中の通常のピクチャから予測されず、むしろVSPピクチャから予測されることを示し得る。同様に、ビデオデコーダ30は、ref_idx_l1[mbPartIdx]がref_idx_l1_vspに等しくなる場合、sub_mb_vsp_flag_L1[mbPartIdx]が1に等しくなると判断し得る。1に等しいsub_mb_vsp_flag_L0[mbPartIdx]は、現在のMBパーティション(8×8)が、RefPicList1中の通常のピクチャから予測されず、むしろVSPピクチャから予測されることを示し得る。したがって、表27の例示的なシンタックスでは、現在のMBパーティション(8×8)が通常のピクチャから予測されるのか、VSPピクチャから予測されるのかを示すために別個のシンタックス要素をシグナリングすることが不要であり得る。代わりに、現在のMBパーティション(8×8)が通常のピクチャから予測されるのか、VSPピクチャから予測されるのかを判断する目的で、ref_idx_l0シンタックス要素が再使用され得る。
[0253]動きベクトル予測は、MBまたはMBパーティションなどの現在のビデオユニットのための動きベクトルを判断するプロセスである。概して、ビデオエンコーダ20またはビデオデコーダ30などのビデオコーダが現在のビデオユニットの動きベクトルを判断するとき、ビデオコーダは、深度ビューコンポーネント中の代表的な深度値を判断し得る。いくつかの例では、代表的な深度値は、現在のビデオユニットのサンプルブロックとコロケートされた深度値のブロック中の深度値の平均深度値であり得る。ビデオデコーダは、次いで、代表的な深度値に少なくとも部分的に基づいて、現在のビデオユニットの視差ベクトルを判断し得る。視差ベクトルの起点は、現在のビデオユニットと同じアクセスユニットの参照テクスチャビューコンポーネント内の、現在のビデオユニットのサンプルブロック内のロケーションとコロケートされたロケーションであり得る。参照テクスチャビューコンポーネントの参照ビデオユニットのサンプルブロックは、視差ベクトルの端末ポイントを含み得る。参照ビデオユニットが別のアクセスユニットのテクスチャビューから予測される場合、現在のビデオユニットの動きベクトルは、参照ビデオユニットの動きベクトルに等しくなり得る。他の例では、現在のビデオユニットの動きベクトルは視差ベクトルに等しくなり得る。
[0254]深度ベースの動きパラメータ予測(DBMP:depth-based motion parameter prediction)では、符号化ビデオユニット(たとえば、MB、MBパーティションなど)のピクセルごとの、動きベクトルおよび参照インデックスなどの動き情報は、同じ時間インスタンスにおける隣接ビュー中の符号化ビデオユニット(すなわち、アクセスユニット)からのコード化済みの視差マップを使用して直接推論され得る。言い換えれば、ビデオコーダは、視差マップに基づいてピクセルごとに動きベクトルおよび参照インデックスを判断し得る。このプロシージャは、符号化ビデオユニットのピクセルごとに独立して繰り返され得る。したがって、DBMPでは、動きベクトルおよび参照インデックスは、ビットストリーム中で送信されず、むしろビデオデコーダ30の参照ビューから取得される。
[0255]いくつかの例では、VSPは、動きベクトル予測と統合され得る。たとえば、VSPは、穴埋めなしの逆方向ワーピングに簡略化され得る。逆方向ワーピングはワーピングの逆である。ワーピングは、参照ビューコンポーネント中のサンプルが、視差に基づいて、ターゲットビューコンポーネント中のロケーションにマッピングされるプロセスである。穴埋めは、ターゲットビューコンポーネント中の背景オブジェクトの非遮断部分を表すピクセルを穴埋めするプロセスである。さらに、VSPが動きベクトル予測と統合されるとき、視差値または深度値は、4×4ブロック全体に適用され得る。このようにして、ビュー合成予測は、動きベクトルが、深度または視差から導出され、MBまたはMBパーティションの各4×4ブロックに関連付けられる、従来の動き補償に簡略化され得る可能性がある。この場合、VSPモードは、いわゆる統合VSPモードに再設計される。
[0256]上記の表3、表4および表5において説明したシンタックスは、VSPと動きベクトル予測の統合をサポートするために再使用され得る。しかしながら、ビュー合成予測と動きベクトル予測の統合をサポートするために表3、表4および表5において説明したシンタックスが再利用されるとき、いくつかの問題が発生し得る。たとえば、上記の表3、表4および表5で説明した通常のVSPでは、各ブロックに対応する動きベクトルは0であるが、VSPを使用してブロックの動きベクトルを導出するために視差ベクトルが使用され得る。したがって、動きベクトルは、常に0に等しくなるべきではない。別の例では、通常のVSPでは、動きベクトルが0であるので、VSPモードを用いてコーディングされた隣接MBの導出動きベクトルの予測がない。しかしながら、統合VSPモードでは、VSPを使用するブロックの導出動きベクトルは常に0になるとは限らない。
[0257]本開示の1つまたは複数の技法によれば、VSPピクチャは参照ピクチャリストに追加されない。したがって、ビデオエンコーダ20は、VSPピクチャを使用してコーディングされるブロックについての動き情報(たとえば、参照インデックス、動きベクトルなど)をシグナリングする必要がないことがある。さらに、統合VSPモードによってビュー合成が実現され得るので、ビデオコーダがVSPピクチャを生成する必要がないことがある。
[0258]たとえば、VSPが深度ベースの動きベクトル予測または視差動きベクトルベースの動きベクトル予測に統合されるとき、上記の表3、表4および表5で説明した設計と同じシンタックス設計を使用して、MBまたはMBパーティションがVSPピクチャから予測されるかどうかを示すために、MBまたはMBパーティションレベルに統合VSPモードのシグナリングが導入される。さらに、VSPが深度ベースの動きベクトル予測に統合されるとき、統合VSPモードに属するブロックの各々は、他の空間/時間隣接ブロックからの深度マップまたは視差動きベクトルによって導出されるそれの動きベクトルを有する。
[0259]いくつかの例では、統合VSPモードは、sub_mb_vsp_flag、mb_part_vsp_flag、またはvsp_mb_flagのうちの1つが1に等しくなることによって識別される。他の例では、sub_mb_vsp_flag、mb_part_vsp_flag、またはvsp_mb_flagのいずれもシグナリングされないとき、統合VSPモードは、参照インデックスが特定の値にシグナリングされることよって識別され得る。これらの例では、sub_mb_vsp_flag、mb_part_vsp_flag、およびvsp_mb_flagのエントロピーコーディング(たとえば、エントロピー符号化またはエントロピー復号)は、本開示の他の場所で説明するものと同じであり得る。
[0260]ビデオコーダは、参照ピクチャに基づいてVSPピクチャを生成する。スライスヘッダは、VSPピクチャを生成すべき参照ピクチャを含んでいるビューを示し得る。3D−AVC仕様は、スライスヘッダ中で、ビュー合成のために使用されるべきビューをすでに示している。本開示は、「refViewPicVSP」を使用して、スライスヘッダ中で示される、VSPのための参照ビューピクチャと同じアクセスユニット中にあるビューの復号ピクチャを示す。ビュー合成のために使用されるビューは、一般に、通常のMVC方式のビュー間予測のために使用されるビューであるので、ビデオコーダは、参照ピクチャリストにrefViewPicVSPをすでに追加していることがある。ビデオコーダは、(RefPicList0に対応する)参照インデックスを次のように判断し得る。両端値を含む、0からnum_ref_idx_l0_active_minus1までの各iについて、RefPicList0[i]がrefViewPicVSPに等しくなる場合、ビデオコーダは参照インデックスをiに設定し得る。num_ref_idx_l0_active_minus1は、RefPicList0中のアクティブ参照ピクチャの数から1を減算した数を示し得る。iが、num_ref_idx_l0_active_minus1に1を加算した数に等しくなる場合、ビデオコーダは、参照インデックスがiに等しくなり、refViewPicVSPが最後のエントリとしてRefPicList0に追加されると判断し得る。
[0261]代替的に、フラグ(たとえば、vsp_mb_flag、mb_part_vsp_flagなど)が統合VSPモードを示すために使用されず、さらに、参照インデックス(ref_idx_lx)が明示的にシグナリングされるとき、参照インデックス(ref_idx_lx)は次のようにリセットされ得る。両端値を含む、0からnum_ref_idx_lX_active_minus1までの各iについて、RefPicListX[i]がRefViewPicVSPに等しくなる場合、ref_idx_lxはiに設定される。
[0262]参照インデックスのためのこの導出プロセスは、ビデオデコーダ30の参照ピクチャリストのサイズを低減させるために使用され得る。実際に、参照ピクチャリストに追加される参照インデックスref_idx_lxに対応するピクチャはない。代わりに、単に統合VSPモードをシグナリングするためにref_idx_lxが使用され得、統合VSPモードを用いてコーディングされるブロックは、ref_idx_lxがリセットされた後、RefPicList[ref_idx_lx]から動き補償される。
[0263]現在のビデオユニット(たとえば、MB、MBパーティション、またはサブMBパーティション)がビュー合成モードを用いてコーディングされる例では、動きベクトルの導出は、現在のビデオユニットの4×4ブロックごとの、動きベクトルの導出を含み得る。動きベクトルは、すべてrefViewPicVSPを参照し得、一般に、RefPicList0についてのみ予測され、現在のビデオユニットが単方向予測だけされることを意味する。
[0264]現在のテクスチャビューコンポーネントの現在のビデオユニットのための動きベクトルを導出する複数の方法があり得る。たとえば、ビデオコーダは、対応する復号深度ビューブロックから動きベクトルを導出し得る。この例では、ビデオコーダは、代表的な深度値を入手し得る。深度ピクチャが現在のテクスチャピクチャの解像度の1/4である(すなわち、現在のテクスチャビューコンポーネント中の1つの4×4ブロックが深度ビューコンポーネント中の1つの2×2領域に対応する)とき、ビデオコーダは、様々な方法で2×2領域中の4つの値を処理し得る。たとえば、4つの値の最大値が代表的な深度値として戻され得る。別の例では、4つの値の平均値が代表的な深度値として戻され得る。別の例では、4つの値の中央値が代表的な深度値として戻される。深度ピクチャが現在のテクスチャピクチャの解像度の1/4でない(すなわち、現在のテクスチャビューコンポーネント中の1つの4×4ブロックが深度ビューコンポーネント中の1つのN×M領域に対応する)とき、ビデオコーダは、様々な方法で代表的な深度値を判断し得る。たとえば、ビデオデコーダは、代表的な深度値が対応するN×M領域のすべての深度ピクセルの平均値であると判断し得る。別の例では、ビデオデコーダは、代表的な深度値が対応するN×M領域の4つの角の深度ピクセルの平均値であると判断し得る。別の例では、ビデオデコーダは、代表的な深度値が対応するN×M領域の4つの角の深度ピクセルの最大値であると判断し得る。別の例では、ビデオデコーダは、代表的な深度値が対応するN×M領域の4つの角の深度値の中央値であると判断し得る。代表的な深度値を判断した後に、ビデオデコーダは、代表的な深度値を視差ベクトルに変換し、動きベクトルを視差ベクトルに設定し得る。視差ベクトル(および動きベクトル)のy軸成分は0に等しくなり得る。
[0265]さらに、対応する深度ビュー(すなわち、サンプルをもつビュー、view_id)が復号されていないとき、参照ビューの深度マップから動きベクトルを導出する複数の方法があり得る。さらに、現在のブロックの空間/時間隣接ブロックから動きベクトルを導出する複数の方法があり得る。代替的に、導出された動きベクトルの垂直成分がさらに0にリセットされ得る。
[0266]上記で説明したいくつかの例では、VSPモードを用いてまたはVSPモードを用いずにコーディングされた2つの隣接ブロックは、2つの参照ピクチャからインター予測されると見なされ得る。したがって、2つの隣接ブロック間の境界の境界強度は、2つの隣接ブロックがどちらもインター予測されるが、2つの異なる参照ピクチャからインター予測される場合に等しくなり得る。デブロッキングフィルタのこの設計は、統合VSPモードが隣接ブロックのうちの1つにおいて使用されるときにデブロッキングフィルタのために使用され得る。
[0267]たとえば、隣接ブロックの両方がVSPモードによって予測されるとき、フィルタモジュール(フィルタモジュール113または160など)は、デブロッキングフィルタ中で、両方のブロックが同じ参照ピクチャから予測され、したがって、動きベクトルが比較される場合と同様に、導出動きベクトルを比較し得る。一方、1つのブロックが統合VSPモードを使用してコーディングされ、他のブロックがビュー間予測を用いてコーディングされ、refViewPicVSPがビュー間予測参照ピクチャに等しくなるとき、2つのブロックは同じ参照ピクチャを有すると見なされる。さらに、1つのブロックが統合VSPモードを使用してコーディングされ、他のブロックが時間参照ピクチャを用いてコーディングされるとき、統合VSPモードを用いてコーディングされたブロックはイントラコード化ブロックと見なされ得る。
[0268]上記で説明したように、本開示の技法は、HEVCベースの3DVに効率的なVSP機構を与え得る。これらの技法は様々な方法で実装され得る。HEVCベースの3DVのための第1の実装形態によれば、シーケンスパラメータセットは、HEVCベースの3DVにおいてVSPをサポートするフラグを含み得る。以下の表28に、HEVCベースの3DVにおけるシーケンスパラメータセットについての例示的なシンタックスの一部を示す。
[0269]表28の例では、SPSは、seq_vsp_flagシンタックス要素を含む。seq_vsp_flagシンタックス要素が特定の値(たとえば、1)を有する場合、SPSはvsp_in_cu_level_only_flagシンタックス要素を含む。seq_vsp_flagシンタックス要素は、VSPモードがSPSを参照するすべてのピクチャのために使用可能であるかどうかを示す。たとえば、1に等しいseq_vsp_flagは、VSPモードがSPSを参照するすべてのピクチャのために使用可能であること示し得る。この例では、0に等しいseq_vsp_flagは、VSPモードが使用不能であることを示し得る。さらに、この例では、seq_vsp_flagが存在しないとき、ビデオデコーダ30は、seq_vsp_flagが0に等しくなると推論し得る。
[0270]vsp_in_cu_level_only_flagシンタックス要素は、VSPモードがCUレベルにのみ適用されるかどうかを示し得る。たとえば、1に等しいvsp_in_cu_level_only_flagは、VSPモードがCUレベルにのみ適用されることを示し得る。したがって、vsp_in_cu_level_only_flagが1に等しくなる場合、1つのPUはVSPピクチャから予測され得るが、別のPUは他のモードによって予測され得る。この例では、0に等しいvsp_in_cu_level_only_flagは、VSPモードがPUレベルに適用されることを示し得る。さらに、この例では、vsp_in_cu_level_only_flagが存在しないとき、ビデオデコーダ30は、vsp_in_cu_level_only_flagが0に等しくなると推論し得る。他の例では、vsp_in_cu_level_only_flagが存在せず、VSPモードが常にPUレベルに適用され得る。
[0271]HEVCベースの3DVのための第1の例示的な実装形態では、スライスヘッダは、HEVCベースの3DVにおいてVSPをサポートするフラグを含み得る。以下の表29に、HEVCベースの3DVにおけるスライスヘッダについての例示的なシンタックスを示す。
[0272]表29の例示的なシンタックスでは、VSPモードが使用可能であり、スライスがIスライスでないことを、適用可能なSPSのseq_vsp_flagシンタックス要素が示す場合、スライスのスライスヘッダはslice_vsp_enable_flagシンタックス要素を含む。スライスヘッダのslice_vsp_enable_flagシンタックス要素は、VSPがスライスのために使用可能であるかどうかを示し得る。たとえば、1に等しいslice_vsp_enable_flagは、VSPが現在のスライスのために使用可能であることを示し得る。この例では、0に等しいslice_vsp_enable_flagは、VSPが現在のスライスのために使用不能であることを示し得る。さらに、この例では、slice_vsp_enable_flagが存在しないとき、ビデオデコーダ30は、slice_vsp_enable_flagが0に等しくなると推論し得る。
[0273]HEVCベースの3DVのための第1の実装形態では、CUは、HEVCベースの3DVにおいてVSPをサポートするフラグを含み得る。以下の表30に、HEVCベースの3DVにおけるCUについての例示的なシンタックスを示す。
[0274]表30の例では、VSPが現在のスライスのために使用可能であることを現在のスライス(すなわち、CUを含むスライス)のスライスヘッダのslice_vsp_enable_flagシンタックス要素が示す場合、CUはvsp_cu_flagシンタックス要素を含む。vsp_cu_flag[x0][y0]シンタックス要素は、現在のピクチャの座標(x0,y0)にあるピクセルを含むCUがVSPピクチャから予測されることを示し得る。すなわち、アレイインデックスx0、y0は、現在のピクチャの左上ルーマサンプルに対する現在のCU(すなわち、当該コーディングブロック)の領域の左上ルーマサンプルのロケーション(x0,y0)を指定し得る。たとえば、現在のCUがPまたはBスライス中にあるとき、1に等しいvsp_cu_flag[x0][y0]は、現在のCUのpred_mode_flagおよびpart_modeシンタックス要素が存在しないことと、現在のCUがいかなるPUをも含まず、現在のCU全体がVSPピクチャから予測されることとを指定し得る。この例では、0に等しいvsp_cu_flag[x0][y0]は、現在のCU全体がVSPピクチャから完全に予測されないことを指定し得る。したがって、vsp_cu_flag[x0][y0]が0に等しくなる場合、現在のCUは、1つまたは複数のPUを含み得る。さらに、この例では、vsp_cu_flag[x0][y0]が存在しないとき、ビデオデコーダ30は、vsp_cu_flag[x0][y0]が0に等しくなると推論し得る。
[0275]さらに、HEVCベースの3DVのための第1の例示的な実装形態では、PUは、VSPをサポートするフラグを含み得る。以下の表31に、HEVCベースの3DVにおけるPUについての例示的なシンタックスを示す。
[0276]表31のシンタックスでは、CU全体がVSPから予測されないことをCUのためのvsp_cu_flagが示す場合、CUが2N×2N区分モードに従って区分されていない場合、およびVSPモードがCUレベルにのみ適用されることを適用可能なSPSのvsp_in_cu_level_only_flagが示さない場合、PUは、vsp_pu_flag[x0][y0]シンタックス要素を含み得る。vsp_pu_flag[x0][y0]シンタックス要素は、PUがVSP予測を用いてコーディングされるかどうかを示し得る。言い換えれば、vsp_pu_flag[x0][y0]は、PUがVSPピクチャから予測されるかどうかを示し得る。たとえば、1に等しいvsp_pu_flag[x0][y0]は、現在のPUがVSP予測を用いてコーディングされることと、さらなるPU関連要素がPU中に存在しないこととを指定し得る。この例では、0に等しいvsp_pu_flag[x0][y0]は、現在のPUがVSP予測を用いてコーディングされないことを指定する。vsp_pu_flag[x0][y0]が存在しないとき、ビデオデコーダ30は、vsp_pu_flag[x0][y0]がPUを含んでいるCUのvsp_cu_flag[x0][y0]と同じであると推論し得る。別の例では、ビットストリームは、vsp_cu_flagとvsp_in_cu_level_only_flagの両方が0に等しくなる場合、1つのCU内のすべてのPUが1に等しいvsp_pu_flagを有するとは限らないように制約される。
[0277]上記の表31の例では、vsp_cu_flagは、このPUを含んでいるCUのvsp_cu_flagの値であり得る。代替的に、表31では、条件「if(vsp_cu_flag)」は、以下のように、座標とCUのサイズとに基づいてvsp_cu_flagを明示的に指定するように変更され得る。
[0278]さらに、HEVCベースの3DVのための第1の例示的な実装形態では、CUまたはPUがVSPモードを使用するとき、ビデオコーダは、CUまたはPUのための予測ブロックを生成するプロセスを実行する。いくつかの例では、PUに適用可能なvsp_cu_flagシンタックス要素またはvsp_pu_flagシンタックス要素が1に等しくなる場合、CUまたはPUはVSPモードを使用し得る。このプロセスでは、現在のCUまたはPUは、ルーマ成分の座標が(x,y)、クロマ成分の座標が(x’,y’)の左上ピクセルを有し得る。さらに、このプロセスでは、現在のCUまたはPUのサイズはN×Mであると仮定する。4:2:0ビデオフォーマットの場合はN/2×M/2のサイズ、4:4:4ビデオフォーマットの場合はN×Mのサイズ、または4:2:2ビデオフォーマットの場合はN×M/2のサイズで座標(x’,y’)から開始して、動き補償ユニット164は、クロマ成分の同じ座標(x’,y’)から開始して、VSPピクチャのクロマ成分の各ブロック中のピクセルの値を現在のCUまたはPUのピクセルに設定し得る。たとえば、動き補償ユニット164は、各CbまたはCbサンプルがVSPピクチャ中の対応するロケーションにあるCbまたはCrサンプルに一致するように、現在のCUまたはPUのための予測CbまたはCrブロックを生成し得る。この例では、動き補償ユニット164は、VSPピクチャのCbまたはCrブロックの座標(x’,y’)から予測CbまたはCrブロックを生成し始め得る。さらに、この例では、VSPピクチャのクロマブロックが、4:2:0ビデオフォーマット、4:4:4ビデオフォーマット、または4:2:2ビデオフォーマットに従ってダウンサンプリングされる場合、予測CbまたはCrブロックは、それぞれ、N/2×M/2、N×M、またはn×M/2のサイズであり得る。
[0279]さらに、HEVCベースの3DVのための第1の例示的な実装形態では、ビデオコーダは、vsp_cu_flagについてのコンテキストを維持し得る。vsp_cu_flagについてのコンテキストは、vsp_pu_flagとvsp_cu_flagの両方をエントロピー符号化するためのコンテキストを与えるために使用され得る。ビデオコーダがvsp_pu_flagsとvsp_cu_flagsの両方をエントロピーコーディングするとき、ビデオコーダは、vsp_cu_flagについてのコンテキストを更新し得る。vsp_cu_flagが1に等しくなるとき、CUの各PUは、1に等しいVspFlagを有すると推論される。さらに、vsp_cu_flagが1に等しくなるとき、CU中の各4×4ブロックは1に等しいVspFlagを有する。vsp_cu_flagが0に等しくなるとき、CU中のPUは、異なる値のvsp_pu_flagを有し得る。1つのPUが1に等しいvsp_pu_flagを有する場合、PU中のすべての4×4ブロックのためのVspFlagは1に設定される。
[0280]HEVCベースの3DVのための第1の例示的な実装形態では、ビデオエンコーダは、VspFlagについてのコンテキストを初期化し得る。PスライスのVspFlagのコンテキストのための初期確率は、Bスライスの初期確率とは異なり得る。VspFlagは、PスライスとBスライスの両方に適用され得る。さらに、HEVCベースの3DVのための第1の例示的な実装形態では、エントロピーコーダがVspFlagをエントロピーコーディングしているとき、エントロピーコーダは、VspFlagに関連するビンのためのctxIdxIncを判断し得る。いくつかの例では、ビンのためのctxIdxIncは、condTermFlagAとcondTermFlagBとの和であり得る。すなわち、ctxIdxIncは、ctxIdxInc=condTermFlagA+condTermFlagBとして導出され得る。別の例では、ビンのためのctxIdxIncは、condTermFlagAに等しくなり得る。すなわち、ctxIdxIncは、ctxIdxInc=condTermFlagAとして導出され得る。別の例では、ビンのためのctxIdxIdcは、condTermFlagBに等しくなる。すなわち、ctxIdxIncは、ctxIdxInc=condTermFlagBとして導出され得る。別の例では、ctxIdxIncは、0に等しくなるように固定される。
[0281]上記の例では、エントロピーコーダは、現在のCUまたはPUに隣接する特定のブロックに関連するデータが、現在のCUまたはPUに関連するシンタックス要素のためのエントロピーコーディングプロセスにおいて使用するために利用可能であるかどうかに少なくとも部分的に基づいてcondTermFlagAとcondTermFlagBとを判断し得る。たとえば、uiPAddrAは、現在のCUまたはPUの左側の隣接4×4ブロックを表し得、uiPAddrBは、現在のCUまたはPUの上側の隣接4×4ブロックを表し得る。いくつかの例では、uiPAddrN(ここで、NはAまたはBのいずれかである)が利用可能でないか、またはブロックuiPAddrNのためのVspFlagが0に等しくなる場合、condTermFlagNは0に等しくなる。そうではなく、この例では、uiPAddrNが利用可能であり、ブロックuiPAddrNのためのVspFlagが1に等しくなる場合、condTermFlagNは1に等しくなる。
[0282]HEVCベースの3DVのための第1の例示的な実装形態では、フィルタユニット(ビデオエンコーダ20のフィルタユニット114またはビデオデコーダ30のフィルタユニット160など)は、デブロッキングフィルタプロセスを実行し得る。このプロセスでは、フィルタユニットは、2つの隣接ピクセルp0およびq0の間の境界のための境界強度(bS:boundary strength)を計算する。この例では、フィルタユニットは、VSP領域に関係する境界強度を判断し得る。VSP領域は、それぞれVSPモードを用いてコーディングされる隣接PUまたはCUの領域であり得る。
[0283]VSP領域に関係する境界強度を判断するために、フィルタユニットは、p0およびq0の境界がVSP領域の境界を横断するかどうかを判断し得る。p0およびq0の境界がVSP領域の境界を横断しない場合、フィルタユニットは、p0およびq0の境界がインター予測領域内にある場合の境界強度と同じ境界強度に境界強度を設定し得る。インター予測領域は、すべて同じ参照ピクチャ/ピクチャペアと同じまたは同様の(すなわち、ある精度に丸められた後に同じになる)動きベクトルとを用いてコーディングされる隣接PUまたはCUの領域である。
[0284]一方、p0およびq0の境界がVSP領域とインター予測された領域との間の境界を横断する場合、フィルタユニットは、境界が2つのインター予測領域を横断する場合の境界強度と同じ境界強度に境界強度を設定し得る。p0またはq0のいずれかがイントラコード化CUに属するとき、フィルタユニットは、p0がイントラ予測CUに属し、q0がインター予測領域に属する場合と同じ境界強度に境界強度を設定し得る。p0がイントラコード化CUに属するとき、q0はVSP領域に属する。同様に、q0がイントラコード化CUに属するとき、p0はVSP領域に属する。イントラ予測領域は、あるイントラ予測モードを用いてコーディングされたCUであり得る。
[0285]HEVCベースの3DVのための第2の例示的な実装形態は、HEVCベースの3DVのための第1の例示的な実装形態と同様であり得る。ただし、HEVCベースの3DVのための第2の例示的な実装形態では、VSPは、CUレベルにのみ適用され、PUレベルには適用されない。HEVCベースの3DVのためのこの第2の例示的な実装形態では、PUについてのシンタックスおよびセマンティクスは、HEVCワーキングドラフト6に記載されているメインプロファイルに対して変更されない。さらに、HEVCベースの3DVのための第1の例示的な実装形態の場合とは異なり、HEVCベースの3DVのためのこの第2の例示的な実装形態では、vsp_pu_flagがないので、vsp_cu_flagのエントロピーコーディングはvsp_cu_flagにのみ依拠し得る。HEVCベースの3DVのためのこの第2の例示的な実装形態では、ビデオエンコーダ20は、vsp_in_pu_level_flagをシグナリングせず、ビデオデコーダ30は、vsp_in_pu_level_flagが0に等しくなると常に推論(すなわち、自動的に判断)し得る。
[0286]HEVCベースの3DVのための第3の例示的な実装形態は、HEVCベースの3DVのための第1の例示的な実装形態と同様であり得る。ただし、HEVCベースの3DVのための第3の例示的な実装形態は、HEVCベースの3DVのための第1の例示的な実装形態とは異なる、CUのためのシンタックス構造を有し得る。HEVCベースの3DVのための第3の例示的な実装形態では、CUのためのシンタックス構造について以下の表32で説明する。
[0287]表32の例示的なシンタックス構造はskip_flag[x0][y0]を含む。1に等しいskip_flag[x0][y0]は、現在のCUについて、PまたはBスライスを復号するとき、skip_flag[x0][y0]の後、動きベクトル予測子インデックスを除いてそれ以上シンタックス要素が復号され得ないことを指定する。0に等しいskip_flag[x0][y0]は、CUがスキップされないことを指定する。アレイインデックスx0、y0は、ピクチャの左上ルーマサンプルに対する当該コーディングブロックの左上ルーマサンプルのロケーション(x0,y0)を指定する。skip_flag[x0][y0]が存在しないとき、ビデオデコーダ30は、skip_flag[x0][y0]が0に等しくなると推論し得る。1に等しいskip_flag[x0][y0]をもつCUは、HEVCにおける従来のスキップCUまたはVSPを用いてコーディングされるCUのいずれかであり得、シグナリングされる残余を有さず、したがって、transform_treeシンタックス構造がCU中に存在しない。
[0288]本開示の1つまたは複数の技法によれば、slice_vsp_enable_flagが1に等しくなる場合、CUは、vsp_cu_skip_flag[x0][y0]シンタックス要素を含み得る。vsp_cu_skip_flag[x0][y0]シンタックス要素は、現在のCUがVSPモードによって予測されるかどうかを示す。たとえば、1に等しいvsp_cu_skip_flag[x0][y0]は、現在のCUが、スキップモードを使用して符号化され、VSPピクチャから予測されることを指定する。この例では、0に等しいvsp_cu_flag[x0][y0]は、現在のCUが従来のHEVCスキップモードを用いて予測されることを指定する。CUがPまたはBスライス中にあり、CUが、従来のHEVCスキップモードで符号化されるとき、skip_flag[x0][y0]の後、動きベクトル予測子インデックスを除いてそれ以上シンタックス要素は復号されない。したがって、本開示の1つまたは複数の技法によれば、skip_flag[x0][y0]が1に等しくなり、vsp_cu_skip_flag[x0][y0]が1に等しくない場合、CUはPUを含み得る。
[0289]さらに、skip_flag[x0][y0]が0に等しくないか、またはvsp_cu_skip_flag[x0][y0]が1に等しくなり、かつ現在のスライスがIスライスではなく、slice_vsp_enable_flagが1に等しくなる場合、CUは、本開示の1つまたは複数の技法に従って、vsp_cu_flag[x0][y0]シンタックス要素を含み得る。vsp_cu_flag[x0][y0]は、PまたはBスライスを復号するとき、予測ユニットシンタックステーブル中のpred_mode_flagまたはpart_modeシンタックス要素がCU中に存在するかどうか、およびCU全体がVSPピクチャから予測されるかどうかを示し得る。たとえば、1に等しいvsp_cu_flag[x0][y0]は、現在のCUについて、PまたはBスライスを復号するとき、予測ユニットシンタックステーブル中のpred_mode_flagまたはpart_modeシンタックス要素が存在せず、CU全体がVSPピクチャから予測されることを指定し得る。この例では、0に等しいvsp_cu_flag[x0][y0]は、CU全体がVSPピクチャから完全に予測されないことを指定する。アレイインデックスx0、y0は、ピクチャの左上ルーマサンプルに対する当該コーディングブロックの左上ルーマサンプルのロケーション(x0,y0)を指定する。存在しないとき、vsp_cu_flag[x0][y0]は、max(0,vsp_cu_skip_flag[x0][y0])に等しくなると推論される。
[0290]HEVCベースの3DVのための第3の例示的な実装形態では、図2のエントロピー符号化ユニット118または図3のエントロピー復号ユニット150などのエントロピーコーディングユニットは、vsp_cu_flagについてのエントロピーコーディングコンテキストを維持し得る。エントロピーコーディングユニットは、vsp_pu_flag、vsp_cu_skip_flagおよびvsp_cu_flagのコーディングのためにvsp_cu_flagについてのエントロピーコーディングコンテキストを使用し得る。エントロピーコーディングユニットは、vsp_cu_skip_flags、vsp_cu_flags、およびvsp_cu_flagsをコーディングするとき、エントロピーコーディングユニットは、vsp_cu_flagについてのエントロピーコーディングコンテキストを更新し得る。vsp_cu_flagまたはvsp_cu_skip_flagが1に等しくなるとき、CUの各PUは、1に等しいVspFlagを有すると推論され得る。さらに、CU中の各4×4ブロックは、1に等しいVspFlagを有する。さらに、vsp_cu_flagが0であるとき、CU中のPUは、異なる値のvsp_pu_flagを有し得る。1つのPUが1に等しいvsp_pu_flagを有する場合、PU中のすべての4×4ブロックのためのVspFlagは1に設定される。
[0291]HEVCベースの3DVのための第3の例示的な実装形態では、VspFlagのためのコンテキストモデリングはコンテキスト初期化とコンテキスト選択とを含む。コンテキスト初期化では、VSPモードがPスライスとBスライスの両方のために適用される。PスライスのVspFlagのコンテキストのための初期確率は、Bスライスとは異なり得る。
[0292]コンテキスト選択では、uiPAddrAは、現在のCUまたはPUの左側の隣接4×4ブロックを表し、uiPAddrBは、現在のCUまたはPUの上側の隣接4×4ブロックを表す。さらに、エントロピーコーディングユニットは、(NがAまたはBのいずれかである)変数condTermFlagNを判断し得る。uiPAddrAが利用可能でないか、またはブロックuiPAddrAのためのVspFlagが0に等しくなる場合、エントロピーコーディングユニットは、condTermFlagNを0に等しく設定し得る。そうではなく、uiPAddrNが利用可能であり、ブロックuiPAddrNのためのVspFlagが1に等しくなる場合、エントロピーコーディングユニットは、condTermFlagNを1に等しく設定し得る。
[0293]さらに、HEVCベースの3DVのための第3の例示的な実装形態では、エントロピーコーディングユニットは、コンテキストインデックスctxIdxを使用してVspFlagをコーディングし得る。エントロピーコーディングユニットは、ctxIdxに対する増分(すなわち、ctxIdxInc)をctxIdxInc=condTermFlagA+condTermFlagBとして判断し得る。代替例では、エントロピーコーディングユニットは、ctxIdxInc=condTermFlagAのようにctxIdxIncを導出し得る。別の代替例では、エントロピーコーディングユニットは、ctxIdxInc=condTermFlagBのようにctxIdxIncを導出し得る。別の代替例では、ctxIdxIncは、0に固定され得る。
[0294]HEVCベースの3DVのための第4の例示的な実装形態は、HEVCベースの3DVのための第1の例示的な実装形態と同様であり得る。ただし、HEVCベースの3DVのための第4の例示的な実装形態では、CUについてのシンタックスは以下の表33によって定義され得る。
[0295]表33の例示的なシンタックスでは、CUは、vsp_cu_flag[x0][y0]を含む。CUのためのvsp_cu_flag[x0][y0]は、PまたはBスライスを復号するとき、予測ユニットシンタックステーブル中のpred_mode_flagまたはpart_modeシンタックス要素が存在しないかどうか、およびCU全体がVSPピクチャから予測されるかどうかを示し得る。たとえば、1に等しいvsp_cu_flag[x0][y0]は、現在のCUについて、PまたはBスライスを復号するとき、PUシンタックステーブル中のpred_mode_flagまたはpart_modeシンタックス要素が存在せず、CU全体がVSPピクチャから予測されることを指定し得る。この例では、0に等しいvsp_cu_flag[x0][y0]は、CU全体がVSPピクチャから完全に予測されないことを指定する。アレイインデックスx0、y0は、ピクチャの左上ルーマサンプルに対する当該コーディングブロックの左上ルーマサンプルのロケーション(x0,y0)を指定する。vsp_cu_flag[x0][y0]が存在しないとき、vsp_cu_flag[x0][y0]は0に等しくなると推測され得る。
[0296]さらに、CUは、PまたはBスライスを復号するとき、現在のCUが動きベクトル予測子インデックス(たとえば、merge_idx、mvp_lc_flag、mvp_l0_flag、mvp_l1_flagなど)以外のシンタックス要素を含むかどうかを示すskip_flag[x0][y0]を含み得る。たとえば、1に等しいskip_flag[x0][y0]は、現在のCUについて、PまたはBスライスを復号するとき、skip_flag[x0][y0]の後、動きベクトル予測子インデックスを除いてそれ以上シンタックス要素が復号され得ないことを指定する。この例では、0に等しいskip_flag[x0][y0]は、CUがスキップされないことを指定する。アレイインデックスx0、y0は、ピクチャの左上ルーマサンプルに対する当該コーディングブロックの左上ルーマサンプルのロケーション(x0,y0)を指定する。skip_flag[x0][y0]が存在しないとき、skip_flag[x0][y0]は0に等しくなると推測され得る。1に等しいskip_flagをもつCUは、HEVCにおける従来のスキップCUまたはVSPを用いてコーディングされるCUのいずれかであり得、シグナリングされる残余を有さず、したがって、変換ツリーシンタックス構造は存在しない。変換ツリーシンタックス構造は、CUについての残差情報を含み得る。
[0297]図4Aは、本開示の1つまたは複数の技法による、ビデオエンコーダ20の例示的な動作200を示すフローチャートである。図4Aのフローチャートおよび以下の図のフローチャートは例として与えるものである。他の例では、本開示の技法は、図4Aおよび以下の図の例に示すステップに対して、より多数の、より少数の、または異なるステップを使用して実装され得る。
[0298]図4Aの例では、ビデオエンコーダ20は、現在のアクセスユニットの以前にコーディングされたテクスチャビューコンポーネントと現在のアクセスユニットの深度ビューコンポーネントとに少なくとも部分的に基づいて、VSPピクチャを生成し得る(201)。さらに、ビデオエンコーダ20は、複数のテクスチャビューと深度ビューとの符号化表現を含むビットストリーム中で、現在のビデオユニットがVSPピクチャから予測されるかどうかを示すシンタックス要素をシグナリングし得る(202)。いくつかの例では、現在のビデオユニットは、現在のアクセスユニットの現在のテクスチャビューコンポーネントのMBまたはMBパーティションであり得る。現在のビデオユニットがMBである少なくともいくつかの例では、ビデオエンコーダ20は、ビットストリーム中で、シンタックス要素を含むMBレイヤシンタックス構造をシグナリングし得る。そのような例では、シンタックス要素はvsp_mb_flagであり得る。現在のビデオユニットがMBパーティションである少なくともいくつかの例では、ビデオエンコーダ20は、ビットストリーム中で、シンタックス要素を含むシンタックス構造をシグナリングし得る。そのような例では、シンタックス構造は、MB予測シンタックス構造またはサブMB予測シンタックス構造であり得、シンタックス要素は、mb_part_vsp_flagまたはsub_mb_vsp_flagであり得る。
[0299]さらに、ビデオエンコーダ20は、現在のビデオユニットがVSPピクチャから予測されるかどうかに少なくとも部分的に基づいて、ビットストリーム中で現在のビデオユニットについての動き情報をシグナリングすべきかどうかを判断し得る(204)。現在のビデオユニットがVSPピクチャから予測されないと判断したことに応答して(204の「いいえ」)、ビデオエンコーダ20は、ビットストリーム中で、現在のビデオユニットについての動き情報をシグナリングし得る(206)。そうでない場合(204の「はい」)、ビデオエンコーダ20は、ビットストリームから、現在のビデオユニットについての動き情報を省略し得る(208)。いずれの場合も、ビデオエンコーダ20はビットストリームを出力し得る(210)。現在のビデオユニットについての動き情報は、参照インデックスと動きベクトル差分とを含み得る。参照インデックスは、参照ピクチャリスト(たとえば、RefPicList0またはRefPicList1)内の位置を示し得、動きベクトル差分は、動きベクトル予測子と現在のビデオユニットの動きベクトルとの間の差を示し得る。
[0300]図4Bは、本開示の1つまたは複数の技法による、ビデオデコーダ30の例示的な動作250を示すフローチャートである。図4Bの例では、ビデオデコーダ30は、現在のアクセスユニットの以前にコーディングされたテクスチャビューコンポーネントと現在のアクセスユニットの深度ビューコンポーネントとに少なくとも部分的に基づいて、VSPピクチャを生成し得る(251)。さらに、ビデオデコーダ30は、複数のテクスチャビューと複数の深度ビューとのコード化表現を含むビットストリームから、現在のビデオユニットがVSPピクチャから予測されるかどうかを示すシンタックス要素を復号し得る(252)。いくつかの例では、現在のビデオユニットは、現在のアクセスユニットの現在のビューの現在のテクスチャビューコンポーネントのMBまたはMBパーティションであり得る。現在のビデオユニットがMBである少なくともいくつかの例では、ビデオデコーダ30は、ビットストリームから、シンタックス要素を含むMBレイヤシンタックス構造を復号し得る。いくつかのそのような例では、シンタックス要素はvsp_mb_flagであり得る。現在のビデオユニットがMBパーティションである少なくともいくつかの例では、ビデオデコーダは、ビットストリームから、シンタックス要素を含むシンタックス構造を復号し得る。そのような例では、シンタックス構造は、MB予測シンタックス構造またはサブMB予測シンタックス構造であり得、シンタックス要素は、mb_part_vsp_flagまたはsub_mb_vsp_flagであり得る。
[0301]さらに、ビデオデコーダ30は、現在のビデオユニットがVSPピクチャから予測されるかどうかを判断し得る(254)。現在のビデオユニットがVSPピクチャから予測されないとき(254の「いいえ」)、ビデオデコーダ30は、ビットストリームから、現在のビデオユニットについての動き情報を復号し得る(256)。 さらに、ビデオデコーダ30は、現在のビデオユニットのサンプルブロックを再構成するために現在のビデオユニットについての動き情報を使用し得る(258)。現在のビデオユニットがVSPピクチャから予測されるとき(256の「はい」)、ビデオデコーダ30は、VSPピクチャを使用して現在のビデオユニットのサンプルブロックを再構成し得る(260)。
[0302]図5Aは、本開示の技法による、ビデオエンコーダ20の別の例示的な動作300を示すフローチャートである。図5Aの例に示すように、ビデオエンコーダ20は、深度マップと1つまたは複数のテクスチャビューコンポーネントとに少なくとも部分的に基づいてVSPピクチャを合成し得る(302)。さらに、ビデオエンコーダ20は、現在のビデオユニットのVSPモードを示すシンタックス要素を生成し得る(304)。VSPモードは、現在のビデオユニットがVSPピクチャから予測されるかどうかを示し得る。さらに、ビデオエンコーダ20は、現在のビデオユニットがVSPピクチャから予測されるかどうかを判断し得る(306)。
[0303]現在のビデオユニットがVSPピクチャから予測されないとき、または現在のビデオユニットがVSPピクチャから予測されないとき(306の「いいえ」)、ビデオエンコーダ20は、隣接ビデオユニットがVSPピクチャから予測されるかどうかに少なくとも部分的に基づいて、コーディングコンテキストを選択し得る(308)。隣接ビデオユニットのサンプルブロックは、現在のビデオユニットのサンプルブロックに隣接する。さらに、ビデオエンコーダ20は、選択されたコーディングコンテキストを使用して、現在のビデオユニットの少なくともいくつかの動き情報をエントロピー符号化し得る(310)。
[0304]さらに、現在のビデオユニットがVSPピクチャから予測されるかどうかにかかわらず、ビデオエンコーダ20は、現在のビデオユニットのVSPモードに少なくとも部分的に基づいて、境界強度値を判断し得る(312)。さらに、ビデオエンコーダ20は、境界強度値に少なくとも部分的に基づいて、現在のビデオユニットのサンプルブロックに対してデブロッキング動作を実行し得る(314)。ビデオエンコーダ20は、復号ピクチャバッファ116中に現在のビデオユニットのサンプルブロックを記憶し得る(316)。
[0305]図5Bは、本開示の技法による、ビデオデコーダ30の別の例示的な動作350を示すフローチャートである。図5Bの例に示すように、ビデオデコーダ30は、深度マップと1つまたは複数のテクスチャビューコンポーネントとに少なくとも部分的に基づいてVSPピクチャを合成し得る(352)。さらに、ビデオデコーダ30は、ビットストリームから、現在のビデオユニットのVSPモードを示すシンタックス要素を復号し得る(354)。VSPモードは、現在のビデオユニットがVSPピクチャから予測されるかどうかを示し得る。さらに、ビデオデコーダ30は、シンタックス要素に少なくとも部分的に基づいて、現在のビデオユニットがVSPピクチャから予測されるかどうかを判断し得る(356)。
[0306]現在のビデオユニットがVSPピクチャから予測されないとき(356の「いいえ」)、ビデオデコーダ30は、隣接ビデオユニットがVSPピクチャから予測されるかどうかに少なくとも部分的に基づいて、コーディングコンテキストを選択し得る(358)。隣接ビデオユニットのサンプルブロックは、現在のビデオユニットのサンプルブロックに隣接する。さらに、ビデオデコーダ30は、選択されたコーディングコンテキストを使用して、現在のビデオユニットの少なくともいくつかの動き情報をエントロピー復号し得る(360)。
[0307]現在のビデオユニットがVSPピクチャから予測されないとき、または現在のビデオユニットがVSPピクチャから予測されるとき(356の「はい」)、ビデオデコーダ30は、現在のビデオユニットのVSPモードに少なくとも部分的に基づいて、境界強度値を判断し得る(362)。さらに、ビデオデコーダ30は、境界強度値に少なくとも部分的に基づいて、現在のビデオユニットのサンプルブロックに対してデブロッキング動作を実行し得る(364)。ビデオデコーダ30は、復号ピクチャバッファ162中に現在のビデオユニットのサンプルブロックを記憶し得る(366)。
[0308]図6Aは、本開示の技法による、ビデオエンコーダ20の別の例示的な動作400を示すフローチャートである。図6Aの例では、ビデオエンコーダ20は、ビットストリーム中で、現在のMBを含むスライスのためのスライスヘッダシンタックス構造をシグナリングし得る(402)。スライスヘッダシンタックス構造は、VSPがスライスに対して許可されるかどうかを示すシンタックス要素(たとえば、slice_vsp_flag)を含み得る。
[0309]さらに、ビデオエンコーダ20は、VSPがスライスに対して許可されるかどうかと、現在のMBがスキップモードを使用して符号化されるかどうかとを判断し得る(404)。VSPがスライスに対して許可され、現在のMBがスキップモードを使用して符号化されるとき(404の「はい」)、ビデオエンコーダ20は、スライスのためのスライスデータシンタックス構造中に、現在のMBがVSPピクチャから予測されるのか、または現在のMBが別の参照ピクチャから予測されるのかを示すシンタックス要素(たとえば、skip_from_vsp_flag)を含め得る(406)。そうではなく、VSPがスライスに対して許可されないか、または現在のMBがスキップモードを使用して符号化されないとき(404の「いいえ」)、ビデオエンコーダ20は、スライスデータシンタックス構造からシンタックス要素(たとえば、skip_from_vsp_flag)を省略し得る(408)。いずれの場合も、ビデオエンコーダ20は、ビットストリーム中で、スライスヘッダシンタックス構造とスライスデータシンタックス構造とをシグナリングし得る(410)。このようにして、ビデオエンコーダ20は、ビットストリーム中で、MBを含むスライスのためのスライスデータシンタックス構造シンタックス要素をシグナリングし、スライスデータシンタックス構造は、MBがスキップモードを使用して符号化されるときに第2のシンタックス要素を含み、第2のシンタックス要素は、MBのすべてがVSPピクチャから予測されるのか、またはMBが別の参照ピクチャから予測されるのかを示し得る。
[0310]図6Bは、本開示の技法による、ビデオデコーダ30の別の例示的な動作450を示すフローチャートである。図6Bの例では、ビデオデコーダ30は、ビットストリームから、現在のMBを含むスライスのためのスライスヘッダシンタックス構造を復号し得る(452)。スライスヘッダシンタックス構造は、VSPがスライスに対して許可されるかどうかを示すシンタックス要素(たとえば、slice_vsp_flag)を含み得る。
[0311]さらに、ビデオデコーダ30は、VSPがスライスに対して許可されるかどうかと、現在のMBがスキップモードを使用して符号化されるかどうかとを判断し得る(454)。VSPがスライスに対して許可され、現在のMBがスキップモードを使用して符号化されるとき(454の「はい」)、ビデオデコーダ30は、スライスのためのスライスデータシンタックス構造が、現在のMBがVSPピクチャから予測されるのか、または現在のMBが別の参照ピクチャから予測されるのかを示すシンタックス要素(たとえば、skip_from_vsp_flag)を含むと判断し得る(456)。そうではなく、VSPがスライスに対して許可されないか、または現在のMBがスキップモードを使用して符号化されないとき(454の「いいえ」)、ビデオデコーダ30は、シンタックス要素(たとえば、skip_from_vsp_flag)がスライスデータシンタックス構造から省略されると判断し得る(458)。いずれの場合も、ビデオデコーダ30は、現在のMBのサンプルブロックを再構成し得る(460)。このようにして、ビデオデコーダ30は、ビットストリームから、MBを含むスライスのためのスライスデータシンタックス構造シンタックス要素を復号し得、スライスデータシンタックス構造は、MBがスキップモードを使用して符号化されるときに第2のシンタックス要素を含み、第2のシンタックス要素は、MBのすべてがVSPピクチャから予測されるのか、またはMBが別の参照ピクチャから予測されるのかを示す。
[0312]図7Aは、本開示の技法による、ビデオエンコーダ20の別の例示的な動作500を示すフローチャートである。図7Aの例では、ビデオエンコーダ20は、上隣接MBと左隣接MBとが現在のMBをコーディングする際に使用するために利用可能であり、上隣接MBと左隣接MBとがVSPピクチャから予測され、VSPピクチャが存在するかどうかを判断し得る(502)。
[0313]上隣接MBと左隣接MBとが現在のMBをコーディングする際に使用するために利用可能であり、上隣接MBと左隣接MBとがVSPピクチャから予測され、VSPピクチャが存在するとき(502の「はい」)、ビデオエンコーダ20は、スライスデータシンタックス構造中に、現在のMBがVSPピクチャから予測されることと、現在のMBのための残差がシグナリングされないこととを示すシンタックス要素を含め得る(504)。そうでない場合(502の「いいえ」)、ビデオエンコーダ20は、スライスデータシンタックス構造からシンタックス要素を省略し得る(506)。いずれの場合も、ビデオエンコーダ20は、ビットストリーム中で、スライスデータシンタックス構造をシグナリングし得る(508)。このようにして、ビデオエンコーダ20は、ビットストリーム中で、スライスデータシンタックス構造をシグナリングし、スライスデータシンタックス構造は、上隣接MBと左隣接MBとが現在のビデオユニットをコーディングする際に使用するために利用可能であり、上隣接MBと左隣接MBとがVSPピクチャから予測され、VSPピクチャが存在するときに第2のシンタックス要素を含み、第2のシンタックス要素は、MBがVSPピクチャから予測されることと、MBのための残差がシグナリングされないこととを示し得る。
[0314]図7Bは、本開示の技法による、ビデオデコーダ30の別の例示的な動作550を示すフローチャートである。図7Bの例では、ビデオデコーダ30は、上隣接MBと左隣接MBとが現在のMBをコーディングする際に使用するために利用可能であり、上隣接MBと左隣接MBとがVSPピクチャから予測され、VSPピクチャが存在するかどうかを判断し得る(552)。
[0315]上隣接MBと左隣接MBとが現在のMBをコーディングする際に使用するために利用可能であり、上隣接MBと左隣接MBとがVSPピクチャから予測され、VSPピクチャが存在するとき(552の「はい」)、ビデオデコーダ30は、現在のMBがVSPピクチャから予測されることと、現在のMBのための残差がシグナリングされないこととを示すシンタックス要素をスライスデータシンタックス構造が含むと判断し得る(554)。そうでない場合(552の「いいえ」)、ビデオデコーダ30は、シンタックス要素がスライスデータシンタックス構造から省略されると判断し得る(556)。いずれの場合も、ビデオデコーダ30は、現在のMBのサンプルブロックを再構成し得る(558)。このようにして、ビデオエンコーダ30は、ビットストリームから、スライスデータシンタックス構造を復号し、スライスデータシンタックス構造は、上隣接MBと左隣接MBとが現在のビデオユニットをコーディングする際に使用するために利用可能であり、上隣接MBと左隣接MBとがVSPピクチャから予測され、VSPピクチャが存在するときにシンタックス要素を含み、シンタックス要素は、MBがVSPピクチャから予測されることと、MBのための残差がシグナリングされないこととを示し得る。
[0316]図8Aは、本開示の技法による、ビデオエンコーダ20の別の例示的な動作600を示すフローチャートである。図8Aの例では、ビデオエンコーダ20は、上隣接MBと左隣接MBとが現在のMBをコーディングする際に使用するために利用可能であり、上隣接MBと左隣接MBとがVSPピクチャから予測され、現在のMBがVSPピクチャから予測されないかどうかを判断し得る(602)。上隣接MBと左隣接MBとが現在のMBをコーディングする際に使用するために利用可能であり、上隣接MBと左隣接MBとがVSPピクチャから予測され、現在のMBがVSPピクチャから予測されないとき(602の「はい」)、ビデオエンコーダ20は、現在のMBのためのMBレイヤシンタックス構造中に、現在のMBのタイプを示すシンタックス要素を含め得る(604)。そうでない場合(602の「いいえ」)、ビデオエンコーダ20は、MBレイヤシンタックス構造からシンタックス要素を省略し得る(606)。
[0317]さらに、ビデオエンコーダ20は、現在のMBがVSPピクチャから予測されるかどうかを判断し得る(608)。現在のMBがVSPピクチャから予測されないとき(608の「いいえ」)、ビデオエンコーダ20は、MBレイヤシンタックス構造中に、サブMB予測シンタックス構造またはMB予測シンタックス構造を含め得る(610)。そうでない場合(608の「はい」)、ビデオエンコーダ20は、MBレイヤシンタックス構造からサブMB予測シンタックス構造とMB予測シンタックス構造とを省略し得る(612)。いずれの場合も、ビデオエンコーダ20は、ビットストリーム中で、MBレイヤシンタックス構造をシグナリングし得る(614)。
[0318]このようにして、ビデオエンコーダ20は、ビットストリーム中で、MBのためのMBレイヤシンタックス構造をシグナリングし得る。MBレイヤシンタックス構造は、上隣接MBと左隣接MBとが現在のビデオユニットをコーディングする際に使用するために利用可能であり、上隣接MBと左隣接MBとがVSPピクチャから予測され、MBがVSPピクチャから予測されないときに第2のシンタックス要素を含み、第2のシンタックス要素はMBのタイプを示し得る。MBレイヤシンタックス構造は、MBがVSPピクチャから予測されないときにサブMB予測シンタックス構造またはMB予測シンタックス構造を含み得る。
[0319]図8Bは、本開示の技法による、ビデオデコーダ30の別の例示的な動作650を示すフローチャートである。図8Bの例では、ビデオデコーダ30は、上隣接MBと左隣接MBとが現在のMBをコーディングする際に使用するために利用可能であり、上隣接MBと左隣接MBとがVSPピクチャから予測され、現在のMBがVSPピクチャから予測されないかどうかを判断し得る(652)。上隣接MBと左隣接MBとが現在のMBをコーディングする際に使用するために利用可能であり、上隣接MBと左隣接MBとがVSPピクチャから予測され、現在のMBがVSPピクチャから予測されないとき(652の「はい」)、ビデオデコーダ30は、現在のMBのためのMBレイヤシンタックス構造が現在のMBのタイプを示すシンタックス要素を含むと判断し得る(654)。そうでない場合(652の「いいえ」)、ビデオデコーダ30は、シンタックス要素がMBレイヤシンタックス構造から省略されると判断し得る(656)。
[0320]さらに、ビデオデコーダ30は、現在のMBがVSPピクチャから予測されるかどうかを判断し得る(658)。現在のMBがVSPピクチャから予測されないとき(658の「いいえ」)、ビデオデコーダ30は、MBレイヤシンタックス構造がサブMB予測シンタックス構造またはMB予測シンタックス構造を含むと判断し得る(660)。そうでない場合(658の「はい」)、ビデオデコーダ30は、サブMB予測シンタックス構造とMB予測シンタックス構造とがMBレイヤシンタックス構造から省略されると判断し得る(662)。いずれの場合も、ビデオデコーダ30は、MBのサンプルブロックを再構成し得る(664)。
[0321]このようにして、ビデオデコーダ30は、ビットストリームから、MBのためのMBレイヤシンタックス構造を復号し、MBレイヤシンタックス構造は、上隣接MBと左隣接MBとが現在のビデオユニットをコーディングする際に使用するために利用可能であり、上隣接MBと左隣接MBとがVSPピクチャから予測され、MBがVSPピクチャから予測されないときに第2のシンタックス要素を含み、第2のシンタックス要素はMBのタイプを示し、MBレイヤシンタックス構造は、MBがVSPピクチャから予測されないときにサブMB予測シンタックス構造またはMB予測シンタックス構造を含み得る。
[0322]図9Aは、本開示の技法による、ビデオエンコーダ20の別の例示的な動作700を示すフローチャートである。図9Aの例では、ビデオエンコーダ20は、上隣接MBと左隣接MBとが現在のサブMBパーティションをコーディングする際に使用するために利用可能であり、上隣接MBと左隣接MBとがVSPピクチャから予測され、現在のサブMBパーティションがVSPピクチャから予測されないかどうかを判断し得る(702)。
[0323]上隣接MBと左隣接MBとが現在のサブMBパーティションをコーディングする際に使用するために利用可能であり、上隣接MBと左隣接MBとがVSPピクチャから予測され、現在のサブMBパーティションがVSPピクチャから予測されないとき(702の「はい」)、ビデオエンコーダ20は、現在のサブMBパーティションのためのサブMB予測シンタックス構造中に、サブMBパーティションのタイプを示すシンタックス要素を含め得る(704)。そうでない場合(702の「いいえ」)、ビデオエンコーダ20は、サブMB予測シンタックス構造からシンタックス要素を省略し得る(706)。いずれの場合も、ビデオエンコーダ20は、ビットストリーム中で、サブMB予測シンタックス構造をシグナリングし得る(708)。このようにして、ビデオエンコーダ20は、ビットストリーム中で、サブMBパーティションのためのサブMB予測シンタックス構造をシグナリングし、サブMB予測シンタックス構造は、上隣接MBと左隣接MBとが現在のビデオユニットをコーディングする際に使用するために利用可能であり、上隣接MBと左隣接MBとがVSPピクチャから予測され、サブMBパーティションがVSPピクチャから予測されないときに第2のシンタックス要素を含み得る。
[0324]図9Bは、本開示の技法による、ビデオデコーダ30の別の例示的な動作750を示すフローチャートである。図9Bの例では、ビデオデコーダ30は、上隣接MBと左隣接MBとが現在のサブMBパーティションをコーディングする際に使用するために利用可能であり、上隣接MBと左隣接MBとがVSPピクチャから予測され、現在のサブMBパーティションがVSPピクチャから予測されないかどうかを判断し得る(752)。
[0325]上隣接MBと左隣接MBとが現在のサブMBパーティションをコーディングする際に使用するために利用可能であり、上隣接MBと左隣接MBとがVSPピクチャから予測され、現在のサブMBパーティションがVSPピクチャから予測されないとき(752の「はい」)、ビデオデコーダ30は、現在のサブMBパーティションのためのサブMB予測シンタックス構造がサブMBパーティションのタイプを示すシンタックス要素を含むと判断し得る(754)。そうでない場合(752の「いいえ」)、ビデオデコーダ30は、シンタックス要素がサブMB予測シンタックス構造から省略されると判断し得る(756)。いずれの場合も、ビデオデコーダ30は、サブMBパーティションのサンプルブロックを再構成し得る(758)。このようにして、ビデオデコーダ30は、ビットストリームから、サブMBパーティションのためのサブMB予測シンタックス構造を復号し、サブMB予測シンタックス構造は、上隣接MBと左隣接MBとが現在のビデオユニットをコーディングする際に使用するために利用可能であり、上隣接MBと左隣接MBとがVSPピクチャから予測され、サブMBパーティションがVSPピクチャから予測されないときに第2のシンタックス要素を含み、第2のシンタックス要素は、サブMBパーティションのタイプを示し得る。
[0326]図10は、例示的な3DV復号順序を示す概念図である。MVC復号順序はビットストリーム順であり得る。図10の例では、各正方形がビューコンポーネントに対応する。正方形の列は、アクセスユニットに対応する。各アクセスユニットは、時間インスタンスのすべてのビューのコード化ピクチャを含むように定義され得る。正方形の行は、ビューに対応する。図10の例では、アクセスユニットがT0〜T7と標示され、ビューがS0〜S7と標示される。アクセスユニットの各ビューコンポーネントは次のアクセスユニットのビューコンポーネントの前に復号されるので、図10の復号順序は時間優先コーディングと呼ばれることがある。図10の例に示すように、アクセスユニットの復号順序は、ビューの出力順序または表示順序と同じでないことがある。
[0327]図11は、例示的な時間的予測およびビュー間予測構造を示す概念図である。図11の例では、各正方形がビューコンポーネントに対応する。「I」と標示される正方形は、イントラ予測されたビューコンポーネントである。「P」と標示される正方形は、単方向にインター予測されたビューコンポーネントである。「B」および「b」と標示される正方形は、双方向にインター予測されたビューコンポーネントである。「b」と標示される正方形は、「B」と標示される正方形を参照ピクチャとして使用し得る。第1の正方形から第2の正方形を指す矢印は、第1の正方形が、インター予測において、第2の正方形のための参照ピクチャとして利用可能であることを示す。図11の垂直矢印で示すように、同じアクセスユニットの異なるビュー中のビューコンポーネントは、参照ピクチャとして利用可能であり得る。アクセスユニットの1つのビューコンポーネントを同じアクセスユニットの別のビューコンポーネントのための参照ピクチャとして使用することは、ビュー間予測と呼ばれることがある。
[0328]1つまたは複数の例では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応するコンピュータ可読記憶媒体を含み得、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、(1)非一時的である有形コンピュータ可読記憶媒体、あるいは(2)信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明した技法の実装のための命令、コードおよび/またはデータ構造を取り出すために1つまたは複数のコンピュータあるいは1つまたは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
[0329]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、あるいは命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびブルーレイ(登録商標)ディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
[0330]命令は、1つまたは複数のデジタル信号プロセッサ(DSP)などの1つまたは複数のプロセッサ、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、あるいは他の等価な集積回路またはディスクリート論理回路によって実行され得る。したがって、本明細書で使用する「プロセッサ」という用語は、前述の構造、または本明細書で説明した技法の実装に好適な他の構造のいずれかを指すことがある。さらに、いくつかの態様では、本明細書で説明した機能は、符号化および復号のために構成された専用のハードウェアおよび/またはソフトウェアモジュール内に与えられ得、あるいは複合コーデックに組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素中に十分に実装され得る。
[0331]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)、またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示する技法を実行するように構成されたデバイスの機能的態様を強調するために様々な構成要素、モジュール、またはユニットについて説明したが、それらの構成要素、モジュール、またはユニットを、必ずしも異なるハードウェアユニットによって実現する必要があるとは限らない。むしろ、上記で説明したように、様々なユニットが、好適なソフトウェアおよび/またはファームウェアとともに、上記で説明した1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられるか、または相互動作ハードウェアユニットの集合によって与えられ得る。
[0332]様々な例について説明した。これらおよび他の例は以下の特許請求の範囲内に入る。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[C1]
ビデオデータを復号する方法であって、
現在のアクセスユニットの以前にコーディングされたテクスチャビューコンポーネントと前記現在のアクセスユニットの深度ビューコンポーネントとに少なくとも部分的に基づいて、ビュー合成予測(VSP)ピクチャを生成することと、
複数のテクスチャビューと複数の深度ビューとのコード化表現を含むビットストリームから、現在のビデオユニットが前記VSPピクチャから予測されるかどうかを示すシンタックス要素を復号することであって、前記現在のビデオユニットが、前記現在のアクセスユニットの現在のビューの現在のテクスチャビューコンポーネントのマクロブロック(MB)またはMBパーティションである、復号することと、
前記現在のビデオユニットが前記VSPピクチャから予測されないとき、
前記ビットストリームから、前記現在のビデオユニットについての動き情報を復号することと、
前記現在のビデオユニットのサンプルブロックを再構成するために前記現在のビデオユニットについての前記動き情報を使用することと
を行うことと、
前記現在のビデオユニットが前記VSPピクチャから予測されるとき、前記現在のビデオユニットの前記サンプルブロックを再構成するために前記VSPピクチャを使用することと
を備える方法。
[C2]
前記現在のビデオユニットについての前記動き情報が、参照インデックスと動きベクトル差分とを含み、前記参照インデックスが、参照ピクチャリスト内の位置を示し、前記動きベクトル差分が、動きベクトル予測子と前記現在のビデオユニットの動きベクトルとの間の差を示す、C1に記載の方法。
[C3]
前記現在のビデオユニットがMBであり、
前記シンタックス要素を復号することが、前記ビットストリームから、前記シンタックス要素を含むMBレイヤシンタックス構造を復号することを備える、C1に記載の方法。
[C4]
前記現在のビデオユニットがMBパーティションであり、
前記シンタックス要素を復号することが、前記ビットストリームから、前記シンタックス要素を含むシンタックス構造を復号することを備え、前記シンタックス構造が、MB予測シンタックス構造またはサブMB予測シンタックス構造である、C1に記載の方法。
[C5]
前記シンタックス要素が第1のシンタックス要素であり、
前記方法が、前記ビットストリームから、前記現在のビデオユニットを含むスライスのためのスライスヘッダシンタックス構造を復号することをさらに備え、前記スライスヘッダシンタックス構造が第2のシンタックス要素を含み、前記第2のシンタックス要素は、VSPが前記スライスに対して許可されるかどうかを示す、C1に記載の方法。
[C6]
前記現在のビデオユニットがMBであり、
前記シンタックス要素が第1のシンタックス要素であり、
前記方法が、前記ビットストリームから、前記MBを含むスライスのためのスライスデータシンタックス構造を復号することをさらに備え、前記スライスデータシンタックス構造は、前記MBがスキップモードを使用して符号化されるときに第2のシンタックス要素を含み、前記第2のシンタックス要素は、前記MBのすべてが前記VSPピクチャから予測されるのか、または前記MBが別の参照ピクチャから予測されるのかを示す、C1に記載の方法。
[C7]
前記現在のビデオユニットがMBであり、
前記方法が、前記ビットストリームから、スライスデータシンタックス構造を復号することをさらに備え、
前記スライスデータシンタックス構造は、上隣接MBと左隣接MBとが前記現在のビデオユニットをコーディングする際に使用するために利用可能であり、前記上隣接MBと前記左隣接MBとが前記VSPピクチャから予測され、前記VSPピクチャが存在するときに第2のシンタックス要素を含み、
前記第2のシンタックス要素は、前記MBが前記VSPピクチャから予測されることと、前記MBのための残差がシグナリングされないこととを示す、C1に記載の方法。
[C8]
前記現在のビデオユニットがMBであり、
前記シンタックス要素が第1のシンタックス要素であり、
前記第1のシンタックス要素を復号することが、前記ビットストリームから、前記MBのためのMBレイヤシンタックス構造を復号することを備え、
前記MBレイヤシンタックス構造は、上隣接MBと左隣接MBとが前記現在のビデオユニットをコーディングする際に使用するために利用可能であり、前記上隣接MBと前記左隣接MBとが前記VSPピクチャから予測され、前記MBが前記VSPピクチャから予測されないときに第2のシンタックス要素を含み、
前記第2のシンタックス要素が前記MBのタイプを示し、
前記MBレイヤシンタックス構造は、前記MBが前記VSPピクチャから予測されないときにサブMB予測シンタックス構造またはMB予測シンタックス構造を含む、C1に記載の方法。
[C9]
前記現在のビデオユニットがサブMBパーティションであり、
前記シンタックス要素が第1のシンタックス要素であり、
前記第1のシンタックス要素を復号することが、前記ビットストリームから、前記サブMBパーティションのためのサブMB予測シンタックス構造を復号することを備え、
前記サブMB予測シンタックス構造は、上隣接MBと左隣接MBとが前記現在のビデオユニットをコーディングする際に使用するために利用可能であり、前記上隣接MBと前記左隣接MBとが前記VSPピクチャから予測され、前記サブMBパーティションが前記VSPピクチャから予測されないときに第2のシンタックス要素を含み、
前記第2のシンタックス要素が前記サブMBパーティションのタイプを示す、C1に記載の方法。
[C10]
隣接ビデオユニットのサンプルブロックが、前記現在のビデオユニットのサンプルブロックに隣接し、
前記方法が、
前記隣接ビデオユニットが前記VSPピクチャから予測されるかどうかに少なくとも部分的に基づいて、コーディングコンテキストを選択することと、
前記現在のビデオユニットの少なくともいくつかの動き情報をエントロピー符号化するために、前記選択されたコーディングコンテキストを使用することと
をさらに備える、C1に記載の方法。
[C11]
前記現在のビデオユニットが前記VSPピクチャから予測されるかどうかに少なくとも部分的に基づいて、境界強度値を判断することと、
前記境界強度値に少なくとも部分的に基づいて、前記現在のビデオユニットのサンプルブロックに対してデブロッキング動作を実行することと
をさらに備える、C1に記載の方法。
[C12]
前記シンタックス要素はまた、前記現在のビデオユニットがスキップモードを使用して予測されるかどうかを示す、C1に記載の方法。
[C13]
現在のアクセスユニットの以前にコーディングされたテクスチャビューコンポーネントと前記現在のアクセスユニットの深度ビューコンポーネントとに少なくとも部分的に基づいて、ビュー合成予測(VSP)ピクチャを生成することと、
複数のテクスチャビューと複数の深度ビューとのコード化表現を含むビットストリームから、現在のビデオユニットが前記VSPピクチャから予測されるかどうかを示すシンタックス要素を復号することであって、前記現在のビデオユニットが、前記現在のアクセスユニットの現在のビューの現在のテクスチャビューコンポーネントのマクロブロック(MB)またはMBパーティションである、復号することと、
前記現在のビデオユニットが前記VSPピクチャから予測されないとき、
前記ビットストリームから、前記現在のビデオユニットについての動き情報を復号することと、
前記現在のビデオユニットのサンプルブロックを再構成するために前記現在のビデオユニットについての前記動き情報を使用することと
を行うことと、
前記現在のビデオユニットが前記VSPピクチャから予測されるとき、前記現在のビデオユニットの前記サンプルブロックを再構成するために前記VSPピクチャを使用することと
を行うように構成された1つまたは複数のプロセッサを備えるビデオ復号デバイス。
[C14]
前記現在のビデオユニットについての前記動き情報が、参照インデックスと動きベクトル差分とを含み、前記参照インデックスが、参照ピクチャリスト内の位置を示し、前記動きベクトル差分が、動きベクトル予測子と前記現在のビデオユニットの動きベクトルとの間の差を示す、C13に記載のビデオ復号デバイス。
[C15]
前記現在のビデオユニットがMBであり、
前記1つまたは複数のプロセッサが、前記ビットストリームから、前記シンタックス要素を含むMBレイヤシンタックス構造を復号することを行うように構成された、C13に記載のビデオ復号デバイス。
[C16]
前記現在のビデオユニットがMBパーティションであり、
1つまたは複数のプロセッサが、前記ビットストリームから、前記シンタックス要素を含むシンタックス構造を復号することを行うように構成され、前記シンタックス構造が、MB予測シンタックス構造またはサブMB予測シンタックス構造である、C13に記載のビデオ復号デバイス。
[C17]
前記シンタックス要素が第1のシンタックス要素であり、
前記1つまたは複数のプロセッサが、前記ビットストリームから、前記現在のビデオユニットを含むスライスのためのスライスヘッダシンタックス構造を復号することを行うように構成され、前記スライスヘッダシンタックス構造が第2のシンタックス要素を含み、前記第2のシンタックス要素は、VSPが前記スライスに対して許可されるかどうかを示す、C13に記載のビデオ復号デバイス。
[C18]
前記現在のビデオユニットがMBであり、
前記1つまたは複数のプロセッサが、前記ビットストリームから、前記MBを含むスライスのためのスライスデータシンタックス構造を復号することを行うように構成され、前記スライスデータシンタックス構造は、前記MBがスキップモードを使用して符号化されるときに第2のシンタックス要素を含み、前記第2のシンタックス要素は、前記MBのすべてが前記VSPピクチャから予測されるのか、または前記MBが別の参照ピクチャから予測されるのかを示す、C13に記載のビデオ復号デバイス。
[C19]
前記現在のビデオユニットがMBであり、
前記シンタックス要素が第1のシンタックス要素であり、
前記1つまたは複数のプロセッサが、上隣接MBと左隣接MBとが前記現在のビデオユニットをコーディングする際に使用するために利用可能であり、前記上隣接MBと前記左隣接MBとが前記VSPピクチャから予測され、前記VSPピクチャが存在するときに前記ビットストリームから第2のシンタックス要素を含むスライスデータシンタックス構造を復号することを行うように構成され、前記第2のシンタックス要素は、前記MBが前記VSPピクチャから予測されることと、前記MBのための残差がシグナリングされないこととを示す、C13に記載のビデオ復号デバイス。
[C20]
前記現在のビデオユニットがMBであり、
前記シンタックス要素が第1のシンタックス要素であり、
前記1つまたは複数のプロセッサが、前記ビットストリームから、前記MBのためのMBレイヤシンタックス構造を復号することを行うように構成され、
前記MBレイヤシンタックス構造は、上隣接MBと左隣接MBとが前記現在のビデオユニットをコーディングする際に使用するために利用可能であり、前記上隣接MBと前記左隣接MBとが前記VSPピクチャから予測され、前記MBが前記VSPピクチャから予測されないときに第2のシンタックス要素を含み、
前記第2のシンタックス要素が前記MBのタイプを示し、
前記MBレイヤシンタックス構造は、前記MBが前記VSPピクチャから予測されないときにサブMB予測シンタックス構造またはMB予測シンタックス構造を含む、C13に記載のビデオ復号デバイス。
[C21]
前記現在のビデオユニットがサブMBパーティションであり、
前記シンタックス要素が第1のシンタックス要素であり、
前記1つまたは複数のプロセッサが、前記ビットストリームから、前記サブMBパーティションのためのサブMB予測シンタックス構造を復号することを行うように構成され、
前記サブMB予測シンタックス構造は、上隣接MBと左隣接MBとが前記現在のビデオユニットをコーディングする際に使用するために利用可能であり、前記上隣接MBと前記左隣接MBとが前記VSPピクチャから予測され、前記サブMBパーティションが前記VSPピクチャから予測されないときに第2のシンタックス要素を含み、
前記第2のシンタックス要素が前記サブMBパーティションのタイプを示す、C13に記載のビデオ復号デバイス。
[C22]
隣接ビデオユニットのサンプルブロックが、前記現在のビデオユニットのサンプルブロックに隣接し、
前記1つまたは複数のプロセッサが、
前記隣接ビデオユニットが前記VSPピクチャから予測されるかどうかに少なくとも部分的に基づいて、コーディングコンテキストを選択することと、
前記現在のビデオユニットの少なくともいくつかの動き情報をエントロピー符号化するために、前記選択されたコーディングコンテキストを使用することと
を行うように構成された、C13に記載のビデオ復号デバイス。
[C23]
前記1つまたは複数のプロセッサが、
前記現在のビデオユニットが前記VSPピクチャから予測されるかどうかに少なくとも部分的に基づいて、境界強度値を判断することと、
前記境界強度値に少なくとも部分的に基づいて、前記現在のビデオユニットのサンプルブロックに対してデブロッキング動作を実行することと
を行うように構成された、C13に記載のビデオ復号デバイス。
[C24]
前記シンタックス要素はまた、前記現在のビデオユニットがスキップモードを使用して予測されるかどうかを示す、C13に記載のビデオ復号デバイス。
[C25]
現在のアクセスユニットの以前にコーディングされたテクスチャビューコンポーネントと前記現在のアクセスユニットの深度ビューコンポーネントとに少なくとも部分的に基づいて、ビュー合成予測(VSP)ピクチャを生成するための手段と、
複数のテクスチャビューと複数の深度ビューとのコード化表現を含むビットストリームから、現在のビデオユニットが前記VSPピクチャから予測されるかどうかを示すシンタックス要素を復号するための手段であって、前記現在のビデオユニットが、前記現在のアクセスユニットの現在のビューの現在のテクスチャビューコンポーネントのマクロブロック(MB)またはMBパーティションである、復号するための手段と、
前記現在のビデオユニットが前記VSPピクチャから予測されないとき、前記ビットストリームから、前記現在のビデオユニットについての動き情報を復号するための手段と、
前記現在のビデオユニットが前記VSPピクチャから予測されないとき、前記現在のビデオユニットのサンプルブロックを再構成するために前記現在のビデオユニットについての前記動き情報を使用するための手段と、
前記現在のビデオユニットが前記VSPピクチャから予測されるとき、前記現在のビデオユニットの前記サンプルブロックを再構成するために前記VSPピクチャを使用するための手段と
を備えるビデオ復号デバイス。
[C26]
ビデオ復号デバイスの1つまたは複数のプロセッサによって実行されたとき、
現在のアクセスユニットの以前にコーディングされたテクスチャビューコンポーネントと前記現在のアクセスユニットの深度ビューコンポーネントとに少なくとも部分的に基づいて、ビュー合成予測(VSP)ピクチャを生成することと、
複数のテクスチャビューと複数の深度ビューとのコード化表現を含むビットストリームから、現在のビデオユニットが前記VSPピクチャから予測されるかどうかを示すシンタックス要素を復号することであって、前記現在のビデオユニットが、前記現在のアクセスユニットの現在のビューの現在のテクスチャビューコンポーネントのマクロブロック(MB)またはMBパーティションである、復号することと、
前記現在のビデオユニットが前記VSPピクチャから予測されないとき、
前記ビットストリームから、前記現在のビデオユニットについての動き情報を復号することと、
前記現在のビデオユニットのサンプルブロックを再構成するために前記現在のビデオユニットについての前記動き情報を使用することと
を行うことと、
前記現在のビデオユニットが前記VSPピクチャから予測されるとき、前記現在のビデオユニットの前記サンプルブロックを再構成するために前記VSPピクチャを使用することと
を行うように前記ビデオ復号デバイスを構成する命令を記憶したコンピュータ可読記憶媒体。
[C27]
ビデオデータを符号化するための方法であって、
現在のアクセスユニットの以前にコーディングされたテクスチャビューコンポーネントと前記現在のアクセスユニットの深度ビューコンポーネントとに少なくとも部分的に基づいて、ビュー合成予測(VSP)ピクチャを生成することと、
複数のテクスチャビューと複数の深度ビューとの符号化表現を含むビットストリーム中で、現在のビデオユニットが前記VSPピクチャから予測されるかどうかを示すシンタックス要素をシグナリングすることであって、前記現在のビデオユニットが、前記現在のアクセスユニットの現在のビューの現在のテクスチャビューコンポーネントのマクロブロック(MB)またはMBパーティションである、シグナリングすることと、
前記現在のビデオユニットが前記VSPピクチャから予測されないとき、前記ビットストリーム中で、前記現在のビデオユニットについての動き情報をシグナリングすることと、
前記現在のビデオユニットが前記VSPピクチャから予測されるとき、前記ビットストリームから、前記現在のビデオユニットについての前記動き情報を省略することと、
前記ビットストリームを出力することと
を備える、方法。
[C28]
前記現在のビデオユニットについての前記動き情報が、参照インデックスと動きベクトル差分とを含み、前記参照インデックスが、参照ピクチャリスト内の位置を示し、前記動きベクトル差分が、動きベクトル予測子と前記現在のビデオユニットの動きベクトルとの間の差を示す、C27に記載の方法。
[C29]
前記現在のビデオユニットがMBであり、
前記シンタックス要素をシグナリングすることが、前記ビットストリーム中で、前記シンタックス要素を含むMBレイヤシンタックス構造をシグナリングすることを備える、C27に記載の方法。
[C30]
前記現在のビデオユニットがMBパーティションであり、
前記シンタックス要素をシグナリングすることが、前記ビットストリーム中で、前記シンタックス要素を含むシンタックス構造をシグナリングすることを備え、前記シンタックス構造が、MB予測シンタックス構造またはサブMB予測シンタックス構造である、C27に記載の方法。
[C31]
前記シンタックス要素が第1のシンタックス要素であり、
前記方法が、前記ビットストリーム中で、前記現在のビデオユニットを含むスライスのためのスライスヘッダシンタックス構造をシグナリングすることをさらに備え、前記スライスヘッダシンタックス構造が第2のシンタックス要素を含み、前記第2のシンタックス要素は、VSPが前記スライスに対して許可されるかどうかを示す、C27に記載の方法。
[C32]
前記現在のビデオユニットがMBであり、
前記シンタックス要素が第1のシンタックス要素であり、
前記方法が、前記ビットストリーム中で、前記MBを含むスライスのためのスライスデータシンタックス構造をシグナリングすることをさらに備え、前記スライスデータシンタックス構造は、前記MBがスキップモードを使用して符号化されるときに第2のシンタックス要素を含み、前記第2のシンタックス要素は、前記MBのすべてが前記VSPピクチャから予測されるのか、または前記MBが別の参照ピクチャから予測されるのかを示す、C27に記載の方法。
[C33]
前記現在のビデオユニットがMBであり、
前記シンタックス要素が第1のシンタックス要素であり、
前記方法が、前記ビットストリーム中で、スライスデータシンタックス構造をシグナリングすることをさらに備え、
前記スライスデータシンタックス構造は、上隣接MBと左隣接MBとが前記現在のビデオユニットをコーディングする際に使用するために利用可能であるとき、前記上隣接MBと前記左隣接MBとが前記VSPピクチャから予測されるとき、および前記VSPピクチャが存在するときに第2のシンタックス要素を含み、
前記第2のシンタックス要素は、前記MBが前記VSPピクチャから予測されることと、前記MBのための残差がシグナリングされないこととを示す、C27に記載の方法。
[C34]
前記現在のビデオユニットがMBであり、
前記シンタックス要素が第1のシンタックス要素であり、
前記方法が、前記ビットストリーム中で、前記MBのためのMBレイヤシンタックス構造をシグナリングすることをさらに備え、
前記MBレイヤシンタックス構造は、上隣接MBと左隣接MBとが前記現在のビデオユニットをコーディングする際に使用するために利用可能であり、前記上隣接MBと前記左隣接MBとが前記VSPピクチャから予測され、前記MBが前記VSPピクチャから予測されないときに第2のシンタックス要素を含み、
前記第2のシンタックス要素が前記MBのタイプを示し、
前記MBレイヤシンタックス構造は、前記MBが前記VSPピクチャから予測されないときにサブMB予測シンタックス構造またはMB予測シンタックス構造を含む、C27に記載の方法。
[C35]
前記現在のビデオユニットがサブMBパーティションであり、
前記シンタックス要素が第1のシンタックス要素であり、
前記第1のシンタックス要素をシグナリングすることが、前記ビットストリーム中で、前記サブMBパーティションのためのサブMB予測シンタックス構造をシグナリングすることを備え、
前記サブMB予測シンタックス構造は、上隣接MBと左隣接MBとが前記現在のビデオユニットをコーディングする際に使用するために利用可能であり、前記上隣接MBと前記左隣接MBとが前記VSPピクチャから予測され、前記サブMBパーティションが前記VSPピクチャから予測されないときに第2のシンタックス要素を含み、
前記第2のシンタックス要素が前記サブMBパーティションのタイプを示す、C27に記載の方法。
[C36]
隣接ビデオユニットのサンプルブロックが、前記現在のビデオユニットのサンプルブロックに隣接し、
前記方法が、
前記隣接ビデオユニットが前記VSPピクチャから予測されるかどうかに少なくとも部分的に基づいて、コーディングコンテキストを選択することと、
前記現在のビデオユニットの少なくともいくつかの動き情報をエントロピー符号化するために、前記選択されたコーディングコンテキストを使用することと
をさらに備える、C27に記載の方法。
[C37]
前記現在のビデオユニットが前記VSPピクチャから予測されるかどうかに少なくとも部分的に基づいて、境界強度値を判断することと、
前記境界強度値に少なくとも部分的に基づいて、前記現在のビデオユニットのサンプルブロックに対してデブロッキング動作を実行することと
をさらに備える、C27に記載の方法。
[C38]
前記シンタックス要素はまた、前記現在のビデオユニットがスキップモードを使用して予測されるかどうかを示す、C27に記載の方法。
[C39]
現在のアクセスユニットの以前にコーディングされたテクスチャビューコンポーネントと前記現在のアクセスユニットの深度ビューコンポーネントとに少なくとも部分的に基づいて、ビュー合成予測(VSP)ピクチャを生成することと、
複数のテクスチャビューと複数の深度ビューとの符号化表現を含むビットストリーム中で、現在のビデオユニットが前記VSPピクチャから予測されるかどうかを示すシンタックス要素をシグナリングすることであって、前記現在のビデオユニットが、前記現在のアクセスユニットの現在のビューの現在のテクスチャビューコンポーネントのマクロブロック(MB)またはMBパーティションである、シグナリングすることと、
前記現在のビデオユニットが前記VSPピクチャから予測されないとき、前記ビットストリーム中で、前記現在のビデオユニットについての動き情報をシグナリングすることと、
前記現在のビデオユニットが前記VSPピクチャから予測されるとき、前記ビットストリームから、前記現在のビデオユニットについての前記動き情報を省略することと、
前記ビットストリームを出力することと
を行うように構成された1つまたは複数のプロセッサを備えるビデオ符号化デバイス。
[C40]
前記現在のビデオユニットについての前記動き情報が、参照インデックスと動きベクトル差分とを含み、前記参照インデックスが、参照ピクチャリスト内の位置を示し、前記動きベクトル差分が、動きベクトル予測子と前記現在のビデオユニットの動きベクトルとの間の差を示す、C39に記載のビデオ符号化デバイス。
[C41]
前記現在のビデオユニットがMBであり、
前記1つまたは複数のプロセッサが、前記ビットストリーム中で、前記シンタックス要素を含むMBレイヤシンタックス構造をシグナリングすることを行うように構成された、C39に記載のビデオ符号化デバイス。
[C42]
前記現在のビデオユニットがMBパーティションであり、
前記1つまたは複数のプロセッサが、前記ビットストリーム中で、前記シンタックス要素を含むシンタックス構造をシグナリングすることを行うように構成され、前記シンタックス構造が、MB予測シンタックス構造またはサブMB予測シンタックス構造である、C39に記載のビデオ符号化デバイス。
[C43]
前記シンタックス要素が第1のシンタックス要素であり、
前記1つまたは複数のプロセッサが、前記ビットストリーム中で、前記現在のビデオユニットを含むスライスのためのスライスヘッダシンタックス構造をシグナリングすることを行うようにさらに構成され、前記スライスヘッダシンタックス構造が第2のシンタックス要素を含み、前記第2のシンタックス要素は、VSPが前記スライスに対して許可されるかどうかを示す、C39に記載のビデオ符号化デバイス。
[C44]
前記現在のビデオユニットがMBであり、
前記シンタックス要素が第1のシンタックス要素であり、
前記1つまたは複数のプロセッサが、前記ビットストリーム中で、前記MBを含むスライスのためのスライスデータシンタックス構造をシグナリングし、前記スライスデータシンタックス構造は、前記MBがスキップモードを使用して符号化されるときに第2のシンタックス要素を含み、前記第2のシンタックス要素は、前記MBのすべてが前記VSPピクチャから予測されるのか、または前記MBが別の参照ピクチャから予測されるのかを示す、C39に記載のビデオ符号化デバイス。
[C45]
前記現在のビデオユニットがMBであり、
前記シンタックス要素が第1のシンタックス要素であり、
前記1つまたは複数のプロセッサが、前記ビットストリーム中で、スライスデータシンタックス構造をシグナリングし、
前記スライスデータシンタックス構造は、上隣接MBと左隣接MBとが前記現在のビデオユニットをコーディングする際に使用するために利用可能であり、前記上隣接MBと前記左隣接MBとが前記VSPピクチャから予測され、前記VSPピクチャが存在するときに第2のシンタックス要素を含み、
前記第2のシンタックス要素は、前記MBが前記VSPピクチャから予測されることと、前記MBのための残差がシグナリングされないこととを示す、C39に記載のビデオ符号化デバイス。
[C46]
前記現在のビデオユニットがMBであり、
前記シンタックス要素が第1のシンタックス要素であり、
前記1つまたは複数のプロセッサが、前記ビットストリーム中で、前記MBのためのMBレイヤシンタックス構造をシグナリングし、
前記MBレイヤシンタックス構造は、上隣接MBと左隣接MBとが前記現在のビデオユニットをコーディングする際に使用するために利用可能であり、前記上隣接MBと前記左隣接MBとが前記VSPピクチャから予測され、前記MBが前記VSPピクチャから予測されないときに第2のシンタックス要素を含み、
前記第2のシンタックス要素が前記MBのタイプを示し、
前記MBレイヤシンタックス構造は、前記MBが前記VSPピクチャから予測されないときにサブMB予測シンタックス構造またはMB予測シンタックス構造を含む、C39に記載のビデオ符号化デバイス。
[C47]
前記現在のビデオユニットがサブMBパーティションであり、
前記シンタックス要素が第1のシンタックス要素であり、
前記1つまたは複数のプロセッサが、前記ビットストリーム中で、前記サブMBパーティションのためのサブMB予測シンタックス構造をシグナリングし、
前記サブMB予測シンタックス構造は、上隣接MBと左隣接MBとが前記現在のビデオユニットをコーディングする際に使用するために利用可能であり、前記上隣接MBと前記左隣接MBとが前記VSPピクチャから予測され、前記サブMBパーティションが前記VSPピクチャから予測されないときに第2のシンタックス要素を含み、
前記第2のシンタックス要素が前記サブMBパーティションのタイプを示す、C39に記載のビデオ符号化デバイス。
[C48]
隣接ビデオユニットのサンプルブロックが、前記現在のビデオユニットのサンプルブロックに隣接し、
前記1つまたは複数のプロセッサが、
前記隣接ビデオユニットが前記VSPピクチャから予測されるかどうかに少なくとも部分的に基づいて、コーディングコンテキストを選択することと、
前記現在のビデオユニットの少なくともいくつかの動き情報をエントロピー符号化するために、前記選択されたコーディングコンテキストを使用することと
を行うようにさらに構成された、C39に記載のビデオ符号化デバイス。
[C49]
前記1つまたは複数のプロセッサが、
前記現在のビデオユニットが前記VSPピクチャから予測されるかどうかに少なくとも部分的に基づいて、境界強度値を判断することと、
前記境界強度値に少なくとも部分的に基づいて、前記現在のビデオユニットのサンプルブロックに対してデブロッキング動作を実行することと
を行うように構成された、C39に記載のビデオ符号化デバイス。
[C50]
前記シンタックス要素はまた、前記現在のビデオユニットがスキップモードを使用して予測されるかどうかを示す、C39に記載のビデオ符号化デバイス。
[C51]
現在のアクセスユニットの以前にコーディングされたテクスチャビューコンポーネントと前記現在のアクセスユニットの深度ビューコンポーネントとに少なくとも部分的に基づいて、ビュー合成予測(VSP)ピクチャを生成するための手段と、
複数のテクスチャビューと複数の深度ビューとの符号化表現を含むビットストリーム中で、現在のビデオユニットが前記VSPピクチャから予測されるかどうかを示すシンタックス要素をシグナリングするための手段であって、前記現在のビデオユニットが、前記現在のアクセスユニットの現在のビューの現在のテクスチャビューコンポーネントのマクロブロック(MB)またはMBパーティションである、シグナリングするための手段と、
前記現在のビデオユニットが前記VSPピクチャから予測されないとき、前記ビットストリーム中で、前記現在のビデオユニットについての動き情報をシグナリングするための手段と、
前記現在のビデオユニットが前記VSPピクチャから予測されるとき、前記ビットストリームから、前記現在のビデオユニットについての前記動き情報を省略するための手段と、
前記ビットストリームを出力するための手段と
を備える、ビデオ符号化デバイス。
[C52]
ビデオ符号化デバイスの1つまたは複数のプロセッサによって実行されたとき、
現在のアクセスユニットの以前にコーディングされたテクスチャビューコンポーネントと前記現在のアクセスユニットの深度ビューコンポーネントとに少なくとも部分的に基づいて、ビュー合成予測(VSP)ピクチャを生成することと、
複数のテクスチャビューと複数の深度ビューとの符号化表現を含むビットストリーム中で、現在のビデオユニットが前記VSPピクチャから予測されるかどうかを示すシンタックス要素をシグナリングすることであって、前記現在のビデオユニットが、前記現在のアクセスユニットの現在のビューの現在のテクスチャビューコンポーネントのマクロブロック(MB)またはMBパーティションである、シグナリングすることと、
前記現在のビデオユニットが前記VSPピクチャから予測されないとき、前記ビットストリーム中で、前記現在のビデオユニットについての動き情報をシグナリングすることと、
前記現在のビデオユニットが前記VSPピクチャから予測されるとき、前記ビットストリームから、前記現在のビデオユニットについての前記動き情報を省略することと、
前記ビットストリームを出力することと
を行うように前記ビデオ符号化デバイスを構成する命令を記憶したコンピュータ可読記憶媒体。