[0020]概して、本開示は、2次元(2D)ベースレイヤ/ビュー復号性能を変化させずに、ビデオエンコーダ/デコーダ(コーデック)拡張規格、たとえば、マルチビュー拡張規格またはスケーラブル拡張規格のために時間的動きベクトル予測を改善することのできる技法について説明する。基本ビデオコーディング規格は、たとえば、高効率ビデオコーディング(HEVC)を備えてもよく、HEVCの拡張規格は、HEVCのマルチビュービデオコーディング拡張規格(たとえば、MV−HEVC)およびHEVCのスケーラブルビデオコーディング拡張規格(たとえば、SHVC)を含んでもよい。
[0021]ビデオコーディング規格は、ITU−T H.261、ISO/IEC MPEG−1 Visual、ITU−T H.262またはISO/IEC MPEG−2 Visual、ITU−T H.263、ISO/IEC MPEG−4 Visual、およびそのスケーラブルビデオコーディング(SVC)拡張規格とマルチビュービデオコーディング(MVC:Multiview Video Coding)拡張規格とを含む、(ISO/IEC MPEG−4 AVCとしても知られる)ITU−T H.264を含む。さらに、ITU−Tビデオコーディングエキスパートグループ(VCEG)とISO/IECモーションピクチャエキスパートグループ(MPEG:Motion Picture Experts Group)とのジョイントコラボレーションチームオンビデオコーディング(JCT−VC:Joint Collaboration Team on Video Coding)によって開発されている新しいビデオコーディング規格、すなわち、高効率ビデオコーディング(HEVC)がある。以下では「HEVC WD9」または単に「WD9」と呼ぶHEVCのワーキングドラフト(WD)が、2013年1月2日現在でhttp://phenix.int−evry.fr/jct/doc_end_user/documents/11_Shanghai/wg11/JCTVC−K1003−v13.zipから入手できるBrossら「High Efficiency Video Coding(HEVC) Text Specificaion Draft 9」第11回会議、中国上海、2012年10月10〜19日、JCTVC−K1003_v13に記載されている。
[0022]本開示では、JCTVC−K0239で提示された特定の技法について、図5および図6に関してより詳しく説明する。JCTVC−K0239の提案には改善の余地があることが決定されている。たとえば、JCTVC−K0239の時間的動き予測に関する追加の参照インデックスの導出プロセスは、2Dビデオコーディングに不要なある追加の論理を生じさせることがある。HEVCとMV−HEVCの両方に最小限に変更を施してJCTVC−K0239の場合のように解決手段をサポートするために、本開示では様々な技法について説明する。
[0023]たとえば、時間的動きベクトル予測(TMVP)の追加の参照インデックス値、すなわち、refIdxL0AおよびrefIdxL1Aが、HEVC基本仕様に定義され、常に0に設定されてもよい。代替として、refIdxL0Aおよび/またはrefIdxL1Aは1に設定されてもよい。refIdxL0Aは、参照ピクチャリスト(たとえば、現在のピクチャよりも前の表示順序を有する参照ピクチャのリスト)のインデックス0の例を表し、一方、参照ピクチャリスト(たとえば、現在のピクチャよりも後の表示順序を有する参照ピクチャのリスト)のインデックス1の例を表す。
[0024]さらに、または代替として、TMVPの追加の目標参照インデックス値(refIdxL0A/refIdxL1A)のための導出プロセスがMV−HEVCまたは他のHEVC拡張規格に定義されてもよい。代替として、追加の目標参照インデックス値(refIdxL0A/refIdxL1A)は、たとえば、layer_id(またはviewIdx)が0に等しくない条件の下でまたはスライスヘッダ拡張機能の一部として、MV−HEVCまたは他のHEVC拡張規格のスライスヘッダにおいてのみシグナリングされてもよい。代替として、追加の目標参照インデックス値(refIdxL0A/refIdxL1A)は、HEVC仕様またはHEVC拡張規格のピクチャパラメータセット、シーケンスパラメータセット、またはビデオパラメータセットにおいてシグナリングされてもよい。代替として、追加の目標参照インデックス値(refIdxL0A/refIdxL1A)は、HEVC基本仕様のスライスヘッダにおいてシグナリングされてもよい。
[0025]さらに、または代替として、追加の目標参照インデックス値は、0に等しくない値であることがシグナリングされるとき、参照インデックス0によって特定される参照ピクチャとは異なるタイプを有する参照ピクチャに対応してもよい。たとえば、refPicListX[0]およびrefPicListX[refIdxLXA]は、両方とも短期ピクチャであるとは限らず、両方とも長期ピクチャであるとは限らない。
[0026]図1は、動きベクトルをコーディングするための技法を利用し得る例示的なビデオ符号化および復号システム10を示すブロック図である。図1に示されるように、システム10は、宛先デバイス14によって後で復号されるべき符号化ビデオデータを与えるソースデバイス12を含む。特に、ソースデバイス12は、コンピュータ可読媒体16を介してビデオデータを宛先デバイス14に与える。ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、タブレット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスのいずれかを備え得る。場合によっては、ソースデバイス12および宛先デバイス14は、ワイヤレス通信に対応し得る。
[0027]宛先デバイス14は、コンピュータ可読媒体16を介して復号されるべき符号化ビデオデータを受信し得る。コンピュータ可読媒体16は、ソースデバイス12から宛先デバイス14に符号化ビデオデータを移動させることができる任意のタイプの媒体またはデバイスを備え得る。一例では、コンピュータ可読媒体16は、ソースデバイス12が、符号化ビデオデータを宛先デバイス14にリアルタイムで直接送信することを可能にするための通信媒体を備え得る。符号化ビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先デバイス14に送信され得る。通信媒体は、高周波(RF)スペクトルあるいは1つまたは複数の物理伝送線路のような、任意のワイヤレスまたは有線通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークのような、パケットベースネットワークの一部を形成し得る。通信媒体は、ソースデバイス12から宛先デバイス14への通信を可能にするために有用であり得るルータ、スイッチ、基地局、または任意の他の機器を含み得る。
[0028]いくつかの例では、符号化データは、出力インターフェース22からストレージデバイスに出力され得る。同様に、符号化データは、入力インターフェースによってストレージデバイスからアクセスされ得る。ストレージデバイスは、ハードドライブ、ブルーレイ(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、揮発性または不揮発性メモリ、あるいは、符号化されたビデオデータを記憶するための任意の他の適切なデジタル記憶媒体のような、種々の分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。さらなる一例では、ストレージデバイスは、ソースデバイス12によって生成された符号化ビデオを記憶し得るファイルサーバまたは別の中間ストレージデバイスに対応し得る。宛先デバイス14は、ストリーミングまたはダウンロードを介して、ストレージデバイスから記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化ビデオデータを記憶し、その符号化ビデオデータを宛先デバイス14に送信することが可能な任意のタイプのサーバであり得る。例示的なファイルサーバは、(たとえば、ウェブサイトのための)ウェブサーバ、FTPサーバ、ネットワーク接続ストレージ(NAS)デバイス、またはローカルディスクドライブを含む。宛先デバイス14は、インターネット接続を含む、任意の標準的なデータ接続を通じて符号化ビデオデータにアクセスし得る。これは、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに好適であるワイヤレスチャネル(たとえば、Wi−Fi(登録商標)接続)、有線接続(たとえば、DSL、ケーブルモデムなど)、または両方の組合せを含み得る。ストレージデバイスからの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはそれらの組合せであり得る。
[0029]本開示の技法は、必ずしもワイヤレス適用例または設定に限定されるとは限らない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、dynamic adaptive streaming over HTTP(DASH)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されたデジタルビデオ、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例など、種々のマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオ電話などの適用例をサポートするために、一方向または双方向のビデオ送信をサポートするように構成され得る。
[0030]図1の例では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、出力インターフェース22とを含む。宛先デバイス14は、入力インターフェース28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。本開示によれば、ソースデバイス12のビデオエンコーダ20は、動きベクトルをコーディングするための技法を適用するように構成され得る。他の例では、ソースデバイスおよび宛先デバイスは他のコンポーネントまたは構成を含み得る。たとえば、ソースデバイス12は、外部カメラなどの外部ビデオソース18からビデオデータを受信し得る。同様に、宛先デバイス14は、内蔵ディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。
[0031]図1の示されるシステム10は一例にすぎない。動きベクトルをコーディングするための技法は、任意のデジタルビデオ符号化および/または復号デバイスによって実行され得る。一般に、本開示の技法はビデオ符号化デバイスによって実行されるが、本技法は、通常「コーデック」と呼ばれるビデオエンコーダ/デコーダによっても実行され得る。その上、本開示の技法はまた、ビデオプリプロセッサによって実行され得る。ソースデバイス12および宛先デバイス14は、ソースデバイス12が宛先デバイス14に送信するためのコード化ビデオデータを生成するような、コーディングデバイスの例にすぎない。いくつかの例では、デバイス12、14は、デバイス12、14の各々がビデオ符号化コンポーネントとビデオ復号コンポーネントとを含むように、実質的に対称的に動作し得る。したがって、システム10は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャストまたはビデオ電話のための、ビデオデバイス12とビデオデバイス14との間の一方向または双方向のビデオ送信をサポートすることができる。
[0032]ソースデバイス12のビデオソース18は、ビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされたビデオを含んでいるビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースを含み得る。さらなる代替として、ビデオソース18は、ソースビデオとしてのコンピュータグラフィックスベースのデータ、またはライブビデオとアーカイブされたビデオとコンピュータにより生成されたビデオとの組合せを生成し得る。場合によっては、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、いわゆるカメラ電話またはビデオ電話を形成し得る。しかしながら、上述のように、本開示で説明される技法は、全般にビデオコーディングに適用可能であってよく、ワイヤレスおよび/または有線の適用例に適用可能であってよい。各々の場合において、キャプチャされたビデオ、以前にキャプチャされたビデオ、またはコンピュータで生成されたビデオは、ビデオエンコーダ20によって符号化され得る。符号化ビデオ情報は、次いで、出力インターフェース22によってコンピュータ可読媒体16上に出力され得る。
[0033]コンピュータ可読媒体16は、ワイヤレスブロードキャストまたは有線ネットワーク送信などの一時媒体、あるいはハードディスク、フラッシュドライブ、コンパクトディスク、デジタルビデオディスク、ブルーレイディスク、または他のコンピュータ可読媒体などの記憶媒体(すなわち、非一時的記憶媒体)を含み得る。いくつかの例では、ネットワークサーバ(図示せず)は、たとえば、ネットワーク送信を介して、ソースデバイス12から符号化されたビデオデータを受信し、宛先デバイス14に符号化ビデオデータを与え得る。同様に、ディスクスタンピング設備などの媒体製造設備のコンピューティングデバイスは、ソースデバイス12から符号化ビデオデータを受信し、その符号化ビデオデータを含んでいるディスクを製造することができる。したがって、コンピュータ可読媒体16は、様々な例において、様々な形態の1つまたは複数のコンピュータ可読媒体を含むことが理解されよう。
[0034]宛先デバイス14の入力インターフェース28は、コンピュータ可読媒体16から情報を受信する。コンピュータ可読媒体16の情報は、ビデオエンコーダ20によって定義され、またビデオデコーダ30によって使用される、ブロックおよび他のコード化ユニット、たとえば、GOPの特性および/または処理を記述するシンタックス要素を含む、シンタックス情報を含み得る。ディスプレイデバイス32は、復号ビデオデータをユーザに対して表示し、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスのような、様々なディスプレイデバイスのいずれかを備え得る。
[0035]ビデオエンコーダ20およびビデオデコーダ30は、現在開発中の高効率ビデオコーディング(HEVC)規格などのビデオコーディング規格に従って動作することができ、HEVC Test Model(HM)に準拠することができる。代替的に、ビデオエンコーダ20およびビデオデコーダ30は、代替的にMPEG−4、Part 10、Advanced Video Coding(AVC)と呼ばれるITU−T H.264規格のような、他のプロプライエタリ規格または業界規格、あるいはそのような規格の拡張に従って動作し得る。しかしながら、本開示の技法は、いかなる特定のコーディング規格にも限定されない。ビデオコーディング規格の他の例には、MPEG−2およびITU−T H.263がある。図1には示されていないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30は各々、オーディオエンコーダおよびオーディオデコーダと統合されてよく、適切なMUX−DEMUXユニット、または他のハードウェアとソフトウェアとを含んで、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理することができる。適用可能な場合、MUX−DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
[0036]ITU−T H.264/MPEG−4(AVC)規格は、Joint Video Team(JVT)として知られる共同パートナーシップの成果として、ISO/IEC Moving Picture Experts Group(MPEG)とともにITU−T Video Coding Experts Group(VCEG)によって策定された。いくつかの態様では、本開示で説明される技法は、一般にH.264規格に準拠するデバイスに適用され得る。H.264規格は、ITU−T研究グループによる2005年3月付けのITU−T勧告H.264、Advanced Video Coding for generic audiovisual servicesに記載されており、本明細書ではH.264規格またはH.264仕様、あるいはH.264/AVC規格または仕様と呼ばれ得る。Joint Video Team(JVT)はH.264/MPEG−4 AVCへの拡張に取り組み続けている。
[0037]ビデオエンコーダ20およびビデオデコーダ30は各々、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアのような、種々の適切なエンコーダ回路のいずれか、またはそれらの任意の組合せとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、デバイスは、好適な非一時的コンピュータ可読媒体にソフトウェアのための命令を記憶し、1つまたは複数のプロセッサを使用してその命令をハードウェアで実行して、本開示の技法を実行することができる。ビデオエンコーダ20およびビデオデコーダ30の各々は1つまたは複数のエンコーダまたはデコーダ中に含まれてよく、そのいずれも、それぞれのデバイスにおいて複合エンコーダ/デコーダ(コーデック)の一部として統合されてよい。
[0038]JCT−VCは、HEVC規格の開発に取り組んでいる。HEVC規格化の取り組みは、HEVC Test Model(HM)と呼ばれるビデオコーディングデバイスの発展的モデルに基づく。HMは、たとえば、ITU−T H.264/AVCに従う既存のデバイスに対してビデオコーディングデバイスのいくつかの追加の能力を仮定する。たとえば、H.264は9つのイントラ予測符号化モードを提供するが、HMは33個ものイントラ予測符号化モードを提供し得る。
[0039]概して、HMの作業モデルは、ビデオフレームまたはピクチャが、ルーマとクロマの両方のサンプルを含む一連のツリーブロックまたは最大コーディングユニット(LCU:largest coding unit)(「コーディングツリーユニット」とも呼ばれる)に分割され得ることを記述する。ビットストリーム内のシンタックスデータが、ピクセルの数に関して最大コーディングユニットであるLCUのサイズを定義し得る。スライスは、コーディング順序でいくつかの連続するツリーブロックを含む。ビデオフレームまたはピクチャは、1つまたは複数のスライスに区分され得る。各ツリーブロックは、4分木に従ってコーディングユニット(CU)に分割され得る。一般に、4分木データ構造はCUごとに1つのノードを含み、ルートノードはツリーブロックに対応する。CUが4つのサブCUに分割された場合、CUに対応するノードは4つのリーフノードを含み、リーフノードの各々はサブCUのうちの1つに対応する。
[0040]4分木データ構造の各ノードは、対応するCUのシンタックスデータを与え得る。たとえば、4分木のノードは、そのノードに対応するCUがサブCUに分割されるかどうかを示す分割フラグを含み得る。CUのシンタックス要素は、再帰的に定義されてよく、CUがサブCUに分割されるかどうかに依存し得る。CUがさらに分割されない場合、そのCUはリーフCUと呼ばれる。本開示では、元のリーフCUの明示的分割が存在しない場合でも、リーフCUの4つのサブCUもリーフCUと呼ばれる。たとえば、16×16サイズのCUがこれ以上分割されない場合、この16×16CUがまったく分割されなくても、4つの8×8サブCUもリーフCUと呼ばれる。
[0041]CUは、CUがサイズ差異を有さないことを除いて、H.264規格のマクロブロックと同様の目的を有する。たとえば、ツリーブロックは、4つの子ノード(サブCUとも呼ばれる)に分割されてよく、各子ノードは、今度は親ノードとなり、別の4つの子ノードに分割されてよい。4分木のリーフノードと呼ばれる、最後の分割されていない子ノードは、リーフCUとも呼ばれるコーディングノードを備える。コード化ビットストリームに関連するシンタックスデータは、最大CU深さと呼ばれる、ツリーブロックが分割され得る最大回数を定義することができ、また、コーディングノードの最小サイズを定義することもできる。それに応じて、ビットストリームは最小コーディングユニット(SCU)も定義することができる。本開示では、HEVCの文脈におけるCU、PU、またはTU、あるいは他の規格の文脈における同様のデータ構造(たとえば、H.264/AVCにおけるマクロブロックおよびそれのサブブロック)のいずれかを指すために「ブロック」という用語を使用する。
[0042]CUは、コーディングノードと、コーディングノードに関連する予測ユニット(PU)および変換ユニット(TU)とを含む。CUのサイズは、コーディングノードのサイズに対応し、形状が方形でなければならない。CUのサイズは、8×8ピクセルから最大64×64以上のピクセルを有するツリーブロックのサイズまでに及び得る。各CUは、1つまたは複数のPUと、1つまたは複数のTUとを含み得る。CUに関連するシンタックスデータは、たとえば、CUを1つまたは複数のPUに区分することを記述し得る。区分モードは、CUが、スキップモード符号化またはダイレクトモード符号化されるか、イントラ予測モード符号化されるか、あるいはインター予測モード符号化されるかによって異なり得る。PUは、形状が非正方形になるように区分され得る。CUに関連するシンタックスデータは、たとえば、4分木に従って、CUを1つまたは複数のTUに区分することも記述し得る。TUは、形状が正方形または非正方形(たとえば、矩形)であり得る。
[0043]HEVC規格は、CUごとに異なり得るTUに従った変換を可能にする。TUは、一般に、区分されたLCUについて定義された所与のCU内のPUのサイズに基づいてサイズ決定されるが、常にそうであるとは限らない。TUは通常、PUと同じサイズであるかまたはPUよりも小さい。いくつかの例では、CUに対応する残差サンプルは、「残差4分木」(RQT)として知られる4分木構造を使用して、より小さいユニットに再分割され得る。RQTのリーフノードは変換ユニット(TU)と呼ばれることがある。TUに関連するピクセル差分値は、量子化され得る変換係数を生成するために変換され得る。
[0044]リーフCUは、1つまたは複数の予測ユニット(PU)を含み得る。一般に、PUは、対応するCUのすべてまたは一部分に対応する空間的エリアを表し、そのPUの参照サンプルを取り出すためのデータを含み得る。その上、PUは、予測に関するデータを含む。たとえば、PUがイントラモード符号化されるとき、PUのデータは、PUに対応するTUのイントラ予測モードを記述するデータを含み得る、残差4分木(RQT)中に含まれ得る。別の例として、PUがインターモード符号化されるとき、PUは、PUのための1つまたは複数の動きベクトルを定義するデータを含み得る。PUの動きベクトルを定義するデータは、たとえば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルの解像度(たとえば、1/4ピクセル精度もしくは1/8ピクセル精度)、動きベクトルが指す参照ピクチャ、および/または動きベクトルの参照ピクチャリスト(たとえば、リスト0、リスト1、もしくはリストC)を記述し得る。
[0045]1つまたは複数のPUを有するリーフCUはまた、1つまたは複数の変換ユニット(TU)を含み得る。変換ユニットは、上で論じられたように、(TU4分木構造とも呼ばれる)RQTを使用して指定され得る。たとえば、分割フラグは、リーフCUが4つの変換ユニットに分割されるかどうかを示し得る。次いで、各変換ユニットは、さらに、さらなるサブTUに分割され得る。TUがさらに分割されないとき、そのTUはリーフTUと呼ばれ得る。一般に、イントラコーディングの場合、リーフCUに属するすべてのリーフTUは同じイントラ予測モードを共有する。すなわち、一般に、リーフCUのすべてのTUの予測値を計算するために同じイントラ予測モードが適用される。イントラコーディングの場合、ビデオエンコーダは、イントラ予測モードを使用して各リーフTUの残差値を、TUに対応するCUの一部と元のブロックとの間の差分として計算し得る。TUは、必ずしもPUのサイズに制限されるとは限らない。したがって、TUはPUよりも大きくまたは小さくなり得る。イントラコーディングの場合、PUは、同じCUのための対応するリーフTUと同じ位置にあり得る。いくつかの例では、リーフTUの最大サイズは、対応するリーフCUのサイズに対応し得る。
[0046]その上、リーフCUのTUはまた、残差4分木(RQT)と呼ばれる、それぞれの4分木データ構造と関連付けられ得る。すなわち、リーフCUは、リーフCUがどのようにTUに区分されるかを示す4分木を含み得る。TU4分木のルートノードは一般にリーフCUに対応し、CU4分木のルートノードは一般にツリーブロック(またはLCU)に対応する。分割されないRQTのTUはリーフTUと呼ばれる。全般に、本開示では、別段明記されない限り、リーフCUおよびリーフTUに言及するためにそれぞれCUおよびTUという用語を使用する。
[0047]ビデオシーケンスは通常、一連のビデオフレームまたはピクチャを含む。ピクチャグループ(GOP)は、一般に、ビデオピクチャのうちの一連の1つまたは複数を備える。GOPは、GOP中に含まれるいくつかのピクチャを記述するシンタックスデータを、GOPのヘッダ中、ピクチャのうちの1つまたは複数のヘッダ中、または他の場所に含み得る。ピクチャの各スライスは、それぞれのスライスの符号化モードを記述するスライスシンタックスデータを含み得る。ビデオエンコーダ20は通常、ビデオデータを符号化するために個々のビデオスライス内のビデオブロックに対して動作する。ビデオブロックは、CU内のコーディングノードに対応し得る。ビデオブロックは、固定のサイズまたは可変のサイズを有してよく、指定されるコーディング規格に応じてサイズが異なり得る。
[0048]一例として、HMは、様々なPUサイズでの予測をサポートする。特定のCUのサイズが2N×2Nであると仮定すると、HMは、2N×2NまたはN×NのPUサイズでのイントラ予測をサポートし、2N×2N、2N×N、N×2N、またはN×Nの対称的なPUサイズでのインター予測をサポートする。HMはまた、2N×nU、2N×nD、nL×2N、およびnR×2NのPUサイズでのインター予測のための非対称区分をサポートする。非対称区分では、CUの一方向は区分されないが、他の方向は25%と75%とに区分される。25%の区分に対応するCUの部分は、「n」とその後ろに付く「Up」、「Down」、「Left」、または「Right」という表示によって示される。したがって、たとえば、「2N×nU」は、上部の2N×0.5N PUと下部の2N×1.5N PUへと水平方向に区分された2N×2N CUを指す。
[0049]本開示では、「N×N(NxN)」および「N×N(N by N)」は、垂直寸法および水平寸法に関するビデオブロックのピクセル寸法、たとえば、16×16(16x16)ピクセルまたは16×16(16 by 16)ピクセルを指すために互換的に使用され得る。一般に、16×16ブロックは、垂直方向に16ピクセルを有し(y=16)、水平方向に16ピクセルを有する(x=16)。同様に、N×Nブロックは、一般に、垂直方向にNピクセルを有し、水平方向にNピクセルを有し、ただし、Nは非負整数値を表す。ブロック内のピクセルは行と列で構成され得る。さらに、ブロックは、必ずしも、水平方向に垂直方向と同じ数のピクセルを有する必要はない。たとえば、ブロックはN×Mピクセルを備えてよく、ただし、Mは必ずしもNに等しいとは限らない。
[0050]CUのPUを使用したイントラ予測コーディングまたはインター予測コーディングの後、ビデオエンコーダ20は、CUのTUのための残差データを計算し得る。PUは、(ピクセル領域とも呼ばれる)空間領域において予測ピクセルデータを生成する方法またはモードを記述するシンタックスデータを備えてよく、TUは、変換、たとえば、残差ビデオデータへの離散コサイン変換(DCT)、整数変換、ウェーブレット変換、または概念的に同様の変換の適用後の、変換領域における係数を備え得る。残差データは、符号化されていないピクチャのピクセルと、PUに対応する予測値との間のピクセル差分に対応し得る。ビデオエンコーダ20は、CUのための残差データを含むTUを形成し、次いで、TUを変換して、CUの変換係数を生成し得る。
[0051]変換係数を生成するための任意の変換の後に、ビデオエンコーダ20は、変換係数の量子化を実行し得る。量子化は、一般に、さらなる圧縮を提供する、係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化されるプロセスを指す。量子化プロセスは、係数の一部またはすべてに関連するビット深度を低減することができる。たとえば、量子化中にnビット値がmビット値に切り捨てられてよく、nはmよりも大きい。
[0052]量子化の後に、ビデオエンコーダは、変換係数を走査して、量子化変換係数を含む2次元行列から1次元ベクトルを生成し得る。走査は、より高いエネルギー(したがってより低い周波数)の係数をアレイの前方に配置し、より低いエネルギー(したがってより高い周波数)の係数をアレイの後方に配置するように設計され得る。いくつかの例では、ビデオエンコーダ20は、あらかじめ定義された走査順序を利用して、量子化された変換係数を走査し、エントロピー符号化され得る直列化されたベクトルを生成し得る。他の例では、ビデオエンコーダ20は適応走査を実行し得る。量子化変換係数を走査して1次元ベクトルを形成した後に、ビデオエンコーダ20は、たとえば、コンテキスト適応可変長コーディング(CAVLC)、コンテキスト適応バイナリ算術コーディング(CABAC)、シンタックスベースコンテキスト適応バイナリ算術コーディング(SBAC)、確率間隔区分エントロピー(PIPE)コーディング、または別のエントロピー符号化方法に従って、1次元ベクトルをエントロピー符号化し得る。ビデオエンコーダ20はまた、ビデオデータを復号する際にビデオデコーダ30が使用するための符号化ビデオデータに関連するシンタックス要素をエントロピー符号化することができる。
[0053]CABACを実行するために、ビデオエンコーダ20は、送信されるべきシンボルにコンテキストモデル内のコンテキストを割り当てることができる。コンテキストは、たとえば、シンボルの隣接値が0ではないかどうかに関係し得る。CAVLCを実行するために、ビデオエンコーダ20は、送信されるべきシンボルのための可変長コードを選択することができる。VLCにおけるコードワードは、比較的短いコードが優勢シンボルに対応し、より長いコードが劣勢シンボルに対応するように構成され得る。このようにして、VLCを使用すると、たとえば、送信されるべきシンボルごとに等長コードワードを使用するよりも、ビットの節約を実現することができる。確率の決定は、シンボルに割り当てられるコンテキストに基づき得る。
[0054]本開示の技法によれば、ビデオエンコーダ20およびビデオデコーダ30は、以下の修正を施したJCTVC−K0239の技法を実行するように実質的に構成され得る。JCTVC−K0239において提案されたものと比較して、以下の変更が施されてもよい。
[0055]第1に、(含まれているサブクローズ8.3.5を含む)JCTVC−K0239の第2.1節全体のような追加の目標参照インデックスの導出が削除されてもよく、参照ピクチャリスト構成のための復号プロセスが次のように変更されてもよい(イタリック体のテキストは、追加事項を表し、「削除」の後に続く括弧付きのテキストは削除事項を表す)。
8.3.4参照ピクチャリスト構成のための復号プロセス
このプロセスは、各PスライスまたはBスライスのための復号プロセスの開始時に呼び出される。
参照ピクチャは、サブクローズ8.5.3.2.1に指定されているような参照インデックスを介してアドレス指定される。参照インデックスは参照ピクチャリストへのインデックスである。Pスライスを復号するとき、単一の参照ピクチャリストRefPicList0が存在する。Bスライスを復号するとき、RefPicList0に加えて、第2の独立した参照ピクチャリストRefPicList1が存在する。
各スライスの復号プロセスの開始時に、変数RefIdxL0Aが0に等しくなるように設定され、BスライスについてはRefIdxL1Aが0に等しくなるように設定され、参照ピクチャリストRefPicList0が次のように導出され、BスライスについてはRefPicList1が次のように導出される。
[0056]第2に、(含まれているすべてのサブクローズを含む)JCTVC−K0239の第2.2節全体における「RefIdxLXA」のすべてのインスタンスが「RefIdxLXA」と置き換えられてもよい。
[0057]第3に、RefIdxLXAが0に等しくないときに、RefPicListX[RefIdxLXA]およびRefPicListX[0]が異なるタイプを有するという制約が、HEVC拡張規格に挿入されてもよい。たとえば、RefPicListX[RefIdxLXA]が長期ピクチャであり、RefPicListX[0]が短期ピクチャであってもよく、またはRefPicListX[RefIdxLXA]が短期ピクチャであり、RefPicListX[0]が長期ピクチャであってもよい。
[0058]これらの変更を実現するために、ビデオエンコーダ20およびビデオデコーダ30は、HEVC WD9に関して説明する以下の高レベル構文変更に従って実施されてもよい。HEVC WD9に対する追加のテキストは、イタリック体を使用して表される。
8.3.4参照ピクチャリスト構成のための復号プロセス
このプロセスは、各PスライスまたはBスライスのための復号プロセスの開始時に呼び出される。
参照ピクチャは、サブクローズ8.5.3.2.1に指定されているような参照インデックスを介してアドレス指定される。参照インデックスは参照ピクチャリストへのインデックスである。Pスライスを復号するとき、単一の参照ピクチャリストRefPicList0が存在する。Bスライスを復号するとき、RefPicList0に加えて、第2の独立した参照ピクチャリストRefPicList1が存在する。
各スライスの復号プロセスの開始時に、変数RefIdxL0Aが0に等しくなるように設定され、BスライスについてはRefIdxL1Aが0に等しくなるように設定され、参照ピクチャリストRefPicList0が次のように導出され、BスライスについてはRefPicList1が次のように導出される。
[0059]時間的動きベクトル予測は、HEVC WD9に関して説明する以下の技法を使用して実現されてもよい。以下では、追加事項はイタリック体のテキストによって表され、一方、削除事項は、「削除」の後に続く括弧付きのテキストによって表される。
マージモードに関してTMVPを呼び出すための変更
8.5.2.1.1 マージモードに関するルーマ動きベクトルのための導出プロセス
このプロセスは、PredMode[xC][yC]がMODE_SKIPに等しいかまたはPredMode[xC][yC]がMODE_INTERに等しく、マージ_フラグ[xP][yP]が1に等しいときにのみ呼び出され、ここにおいて、(xP,yP)は現在のピクチャの左上ルーマサンプルに対する現在のルーマ予測ブロックの左上サンプルを指定する。
このプロセスの入力は以下の通りである。
−現在ピクチャの左上ルーマサンプルに対する現在のルーマコーディングブロックの左上サンプルのルーマロケーション(xC,yC)、
−現在のピクチャの左上ルーマサンプルに対する現在のルーマ予測ブロックの左上サンプルのルーマロケーション(xP,yP)、
−現在のルーマコーディングブロックのサイズを指定する変数nCS、
−ルーマ予測ブロックの幅および高さを指定する変数nPbWおよびnPbH、
−現在のコーディングユニット内の現在の予測ユニットのインデックスを指定する変数partIdx。
このプロセスの出力は以下の通りである。
−ルーマ動きベクトルmvL0およびmvL1、
−参照インデックスrefIdxL0およびrefIdxL1、
−予測リスト利用フラグpredFlagL0およびpredFlagL1。
変数singleMCLFlagは次のように導出される。
−log2_parallel_merge_level_minus2が0よりも大きくnCSが8に等しい場合、singleMCLFlagが1に設定される。
−それ以外の場合、singleMCLFlagは0に設定される。
singleMCLFlagが1に等しいとき、xPがxCに等しくなるように設定され、yPがyCに等しくなるように設定され、nPbWとnPbHの両方がnCSに等しくなるように設定される。
注意−singleMCLFlagが1に等しいとき、現在のコーディングユニットのすべての予測ユニットが2Nx2N予測ユニットのマージ候補リストと同一の単一のマージ候補リストを共有する。
動きベクトルmvL0およびmvL1、参照インデックスrefIdxL0およびrefIdxL1、ならびに予測利用フラグpredFlagL0およびpredFlagL1は、以下の順序のステップによって指定されたように導出される。
1. サブクローズにおける互いに隣接する予測ユニットパーティションからのマージ候補の導出プロセス...
2. (Xが0または1である)時間的マージ候補refIdxLXの参照インデックスが0に等しくなるように設定される。
3. サブクローズ8.5.3.1.7における時間的ルーマ動きベクトル予測のための導出プロセスが、ルーマロケーション(xP,yP)と、ルーマ予測ブロックの幅および高さnPbWおよびnPbHと、[削除:「および」]refIdxLXと、1に等しいmergeTMVPとを入力として呼び出され、出力が利用可能性フラグavailableFlagXColおよび時間的動きベクトルmvLXColとなる。変数availableFlagLXColおよびpredFlagLXCol(Xはそれぞれ0または1である)は、以下で指定するように導出される。
4. ...
...
AMVPモードに関するTMVPの呼び出しのための変更
8.5.3.1.5 ルーマ動きベクトル予測のための導出プロセス
このプロセスへの入力は以下の通りである。
−現在ピクチャの左上ルーマサンプルに対する現在のルーマコーディングブロックの左上サンプルのルーマロケーション(xC,yC)、
−現在のルーマコーディングブロックのサイズを指定する変数nCS、
−現在のピクチャの左上ルーマサンプルに対する現在のルーマ予測ブロックの左上サンプルを指定するルーマロケーション(xP,yP)、
−ルーマ予測ブロックの幅および高さを指定する変数nPbWおよびnPbH、
− 現在の予測ユニットパーティションの参照インデックスrefIdxLX(ここで、Xは0または1である)。
−現在のコーディングユニット内の現在の予測ユニットのインデックスを指定する変数partIdx。
このプロセスの出力は以下の通りである。
− 動きベクトルmvLXの予測mvpLX(ここで、Xは0または1である)。
動きベクトル予測子mvpLXは、以下の順序付きステップで導出される。
1. サブクローズ8.5.3.1.6における互いに隣接する予測ユニットパーティションからの動きベクトル予測子候補の導出プロセスは、ルーマコーディングブロックロケーション(xC,yC)と、コーディングブロックサイズnCSと、ルーマ予測ブロックロケーション(xP,yP)と、予測ユニットの幅および高さnPbWおよびnPbHと、refIdxLX(Xはそれぞれ0または1である)と、パーティションインデックスpartIdxとを入力として呼び出され、NがA、Bによって置き換えられる利用可能性フラグavailableFlagLXNと動きベクトルmvLXNとを出力として呼び出される。
2. availableFlagLXAとavailableFlagLXBが1に等しく、mvLXAがmvLXBに等しくない場合、availableFlagLXColが0に等しくなるように設定され、それ以外の場合、サブクローズ8.5.3.1.7における時間的ルーマ動きベクトル予測のための導出プロセスが、ルーマロケーション(xP,yP)と、ルーマ予測ブロックの幅および高さnPbWおよびnPbHと、[削除:「および」]refIdxLX(Xはそれぞれ0または1である)と、0に等しいmergeTMVPとを入力として呼び出され、出力が利用可能性フラグavailableFlagXColおよび時間的動きベクトル予測子mvLXColとなる。
...
TMVP導出のための変更
8.5.3.1.7 時間的ルーマ動きベクトル予測のための導出プロセス
このプロセスへの入力は以下の通りである。
−現在のピクチャの左上ルーマサンプルに対する現在のルーマ予測ブロックの左上サンプルを指定するルーマロケーション(xP,yP)、
−ルーマ予測ブロックの幅および高さnPbWおよびnPbHを指定する変数nPbWおよびnPbH、
−変数mergeTMVP、
−参照インデックスrefIdxLX(Xは0または1である)。
このプロセスの出力は以下の通りである。
−動きベクトル予測mvLXCol、
−利用可能性フラグavailableFlagLXCol。
変数currPbは、ルーマロケーション(xP,yP)における現在のルーマ予測ブロックを指定する。
変数mvLXColおよびavailableFlagLXColは次のように導出される。
−slice_temporal_mvp_enable_flagが0に等しい場合、mvLXColの両方の成分は0に等しくなるように設定され、availableFlagLXColは0に等しくなるように設定される。
−それ以外の場合、以下の順序のステップが適用される。
1. slice_type、collocated_from_l0_flag、およびcollocated_ref_idxの値に応じて、同じ位置にある区分を含むピクチャを規定する変数colPicは、次のように導出される。
−slice_typeがBに等しく、collocated_from_l0_flagが0に等しい場合、変数colPicは、RefPicList1[collocated_ref_idx]によって規定されるような同じ位置にある区分を含むピクチャを規定する。
−それ以外の場合(slice_typeがBに等しく、collocated_from_l0_flagが1に等しく、またはslice_typeがPに等しい)、変数colPicは、RefPicList0[collocated_ref_idx]によって規定されるような同じ位置にある区分を含むピクチャを規定する。
2. 右下連結動きベクトルは次のように導出される。
−(yP>>Log2CtbSizeY)が(yPRb>>Log2CtbSizeYが(yPRb>>LOg2CbtSizeY)に等しく、xPRbがpic_width_in_luma_samplesである場合、以下のことが適用される。
−変数colPuは、colPicによって指定される連結ピクチャ内部の((xPRb>>4)<<4、(yPRb)>>4)<<4)によって与えられる修正されたロケーションを対象とするルーマ予測ブロックを指定する。
−ルーマロケーション(xPCol,yPCol)は、colPicによって指定される連結ピクチャの左上ルーマサンプルに対してcolPbによって指定される連結ルーマ予測ブロックの左上サンプルに等しくなるように設定される。
−サブクローズ8.5.3.1.8において指定されるような連結動きベクトルのための導出プロセスは、currPb、colPic、colPb、(xPCol,yPCol)、mergeTMVP、およびrefIdxLXを入力として呼び出され、出力がmvLXColおよびavailableFlagLXColに割り当てられる。
−それ以外の場合、mvLXColの両方の成分は0に等しく設定され、availableFlagLXColは0に等しく設定される。
3. availableFlagLXColが0に等しいとき、中央連結動きベクトルは次のように導出される。
−変数colPbは、colPic内部の((xPCtr>>4)<<4、(yPCtr)>>4)<<4)によって与えられる修正されたロケーションを対象とするルーマ予測ブロックを指定する。
−ルーマロケーション(xPCol,yPCol)は、colPicによって指定される連結ピクチャの左上ルーマサンプルに対してcolPbによって指定される連結ルーマ予測ブロックの左上サンプルに等しくなるように設定される。
−サブクローズ8.5.3.1.8において指定されるような連結動きベクトルのための導出プロセスは、currPb、colPic、colPb、(xPCol,yPCol)、mergeTMVP、およびrefIdxLXを入力として呼び出され、出力がmvLXColおよびavailableFlagLXColに割り当てられる。
8.5.3.1.8 連結動きベクトルのための導出プロセス
このプロセスへの入力は以下の通りである。
−現在の予測ブロックを指定するcurrPb、
−連結ピクチャを指定するcolPic、
−colPicによって指定される連結ピクチャ内部の連結予測ブロックを指定するcolPb、
−colPicによって指定される連結ピクチャの左上ルーマサンプルに対してcolPbによって指定される連結ルーマ予測ブロックの左上サンプルを指定するルーマロケーション(xPCol,yPCol)、
−変数mergeTMVP、
−参照インデックスrefIdxLX(ここにおいて、Xは0または1である)。
このプロセスの出力は以下の通りである。
−動きベクトル予測mvLXCol、
−利用可能性フラグavailableFlagLXCol。
変数currPicは現在のピクチャを指定する。
アレイpredFlagLXCol[x][y]、mvLXCol[x][y]、およびrefIdxLXCol[x][y]は、それぞれcolPic、PredFlagLX[x][Y]、MvLX[x][y]、およびRefIdxLX[x][y]によって指定される連結ピクチャの対応するアレイに等しくなるように設定され、Xはこのプロセスを呼び出す目的であるXの値である。
変数mvLXColおよびavailableFlagLXColは、次のように導出される。
−colPbがイントラ予測モードでコーディングされる場合、mvLXColの両方の成分は0に等しくなるように設定され、availableFlagLXColは0に等しくなるように設定される。
−それ以外の場合、動きベクトルmvCol、参照インデックスrefIdxCol、および参照リスト識別子listColは次のように導出される。
−predFlagL0Col[xPCol][yPCol]が0に等しい場合、mvCol、refIdxCol、およびlistColは、それぞれ、mvL1Col[xPCol][yPCol]、refIdxL1Col[xPCol][yPCol]、およびL1に等しくなるように設定される。
それ以外の場合predFlagL0Col[xPCol][yPCol]が1に等しくpredFlagL1Col[xPCol][yPCol]が0に等しい場合、mvCol、refIdxCol、およびlistColは、それぞれ、mvL0Col[xPCol][yPCol]、refIdxL0Col[xPCol][yPCol]、およびL0に等しくなるように設定される。
−場合によっては(predFlagL0Col[xPCol][yPCol]が1に等しくpredFlagL1Col[xPCol][yPCol]が1に等しい場合)、以下の割当てが行われる。
−DiffPicOrderCnt(currPic,pic)が現在のスライスのあらゆる参照ピクチャリストのあらゆるピクチャpicについて0以下である場合、mvCol、refIdxCol、およびlistColは、それぞれ、mvLX[xPCol][yPCol]、refIdxLX[xPCol][yPCol]、およびLXに等しくなるように設定され、Xは、このプロセスを呼び出す目的であるXの値である。
−それ以外の場合、mvCol、refIdxCol、およびlistColは、それぞれ、mvLNCol[xPCol][yPCol]、refIdxLNCol[xPCol][yPCol]、およびLNに等しくなるように設定され、Nはcollocated_from_10_flagの値である。
変数mvLXColおよびavailableFlagLXColは次のように導出される。
−[削除:「もしも」]LongTermRefPic(currPic,currPb,refIdxLX,LX)がLongTermRefPic(colPic,colPb,refIdxCol,listCol)に等しくない場合、以下のことが適用される。
−refIdxLXAが0よりも大きく、mergeTMVPが1に等しい場合、refIdxLXはRefIdxLXAに設定され、availableFlagLXColは1に設定される。
−それ以外の場合、mvLXColの両方の成分が0に等しくなるように設定され、availableFlagLXColが0に等しくなるように設定される。
−[削除:「それ以外の場合、」]変数availableFlagLXColが1に等しくなるように設定されると、refPicListCol[refIdxCol]は、ピクチャcolPic内に予測ブロックcurrPbを含むスライスの参照ピクチャリストlistCol内に参照インデックスrefIdxColを有するピクチャになるように設定される。
−RefPicListX[refIdxLX]が長期参照ピクチャであるかまたはcolPocDiffがcurrPocDiffに等しい場合、mvLXColは次のように導出される。
−それ以外の場合、mvLXColは、以下で指定されるような動きベクトルmvColのスケーリングされたバージョンとして導出される。
ここにおいて、tdおよびtbは、次のように導出される。
[0060]ビデオエンコーダ20およびビデオデコーダ30は、適宜、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理回路、ソフトウェア、ハードウェア、ファームウェアなど、種々の好適なエンコーダまたはデコーダ回路のいずれか、あるいはそれらの任意の組合せとして各々実装され得る。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダ内に含まれてよく、それらのいずれも複合ビデオエンコーダ/デコーダ(コーデック)の一部として統合されてよい。ビデオエンコーダ20および/またはビデオデコーダ30を含むデバイスは、集積回路、マイクロプロセッサ、および/または、携帯電話のようなワイヤレス通信デバイスを備え得る。
[0061]図2は、動きベクトルをコーディングするための技法を実装し得るビデオエンコーダ20の例を示すブロック図である。ビデオエンコーダ20は、ビデオスライス内のビデオブロックのイントラコーディングとインターコーディングとを実行し得る。イントラコーディングは、空間的予測を利用して、所与のビデオフレームまたはピクチャ内のビデオの空間的冗長性を低減または除去する。インターコーディングは、時間的予測を利用して、ビデオシーケンスの隣接フレームまたはピクチャ内のビデオの時間的冗長性を低減または除去する。イントラモード(Iモード)は、いくつかの空間ベースのコーディングモードのいずれかを指し得る。単方向予測(Pモード)または双方向予測(Bモード)などのインターモードは、いくつかの時間ベースのコーディングモードのいずれかを指し得る。
[0062]図2に示されるように、ビデオエンコーダ20は、符号化されるべきビデオフレーム内の現在のビデオブロックを受信する。図2の例では、ビデオエンコーダ20は、モード選択ユニット40と、参照ピクチャメモリ64と、加算器50と、変換処理ユニット52と、量子化ユニット54と、エントロピー符号化ユニット56とを含む。モード選択ユニット40は、今度は、動き補償ユニット44と、動き推定ユニット42と、イントラ予測ユニット46と、区分ユニット48とを含む。ビデオブロックの復元のために、ビデオエンコーダ20はまた、逆量子化ユニット58と、逆変換ユニット60と、加算器62とを含む。復元されたビデオからブロッキネスアーティファクトを除去するためにブロック境界をフィルタリングする、デブロッキングフィルタ(図2に図示せず)も含まれ得る。所望される場合、デブロッキングフィルタは一般に、加算器62の出力をフィルタリングすることになる。また、デブロッキングフィルタに加えて追加のフィルタ(ループ内またはループ後)が使用され得る。そのようなフィルタは、簡潔のために示されていないが、所望される場合、(ループ内フィルタとして)加算器50の出力をフィルタリングし得る。
[0063]符号化プロセス中に、ビデオエンコーダ20は、コーディングされるべきビデオフレームまたはスライスを受信する。フレームまたはスライスは、複数のビデオブロックに分割され得る。動き推定ユニット42および動き補償ユニット44は、時間的な予測を行うために、1つまたは複数の参照フレーム中の1つまたは複数のブロックに対する受信されたビデオブロックのインター予測コーディングを実行する。イントラ予測ユニット46は代替的に、空間的な予測を行うために、コーディングされるべきブロックと同じフレームまたはスライス中の1つまたは複数の隣接ブロックに対して受信されたビデオブロックのイントラ予測コーディングを実行し得る。ビデオエンコーダ20は、たとえば、ビデオデータのブロックごとに適切なコーディングモードを選択するために、複数のコーディングパスを実行し得る。
[0064]その上、区分ユニット48は、前のコーディングパスにおける前の区分方式の評価に基づいて、ビデオデータのブロックをサブブロックに区分し得る。たとえば、区分ユニット48は、初めにフレームまたはスライスをLCUに区分し、レートひずみ分析(たとえば、レートひずみ最適化)に基づいてLCUの各々をサブCUに区分し得る。モード選択ユニット40は、さらに、LCUをサブCUに区分することを示す4分木データ構造を生成し得る。4分木のリーフノードCUは、1つまたは複数のPUと、1つまたは複数のTUとを含み得る。
[0065]モード選択ユニット40は、たとえば、誤差結果に基づいて、コーディングモード、すなわち、イントラまたはインターのうちの1つを選択することができ、残差ブロックデータを生成するために、得られたイントラコーディングされたブロックまたはインターコーディングされたブロックを加算器50に与え、参照フレームとして使用するための符号化ブロックを復元するために、得られたイントラコーディングされたブロックまたはインターコーディングされたブロックを加算器62に与える。モード選択ユニット40はまた、動きベクトル、イントラモードインジケータ、区分情報、および他のそのようなシンタックス情報などのシンタックス要素をエントロピー符号化ユニット56に与える。
[0066]動き推定ユニット42および動き補償ユニット44は高度に統合され得るが、概念的な目的のために別々に示されている。動き推定ユニット42によって実行される動き推定は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、現在のフレーム(または他のコード化ユニット)内でコーディングされている現在のブロックに対する参照フレーム(または他のコード化ユニット)内の予測ブロックに対する現在のビデオフレームまたはピクチャ内のビデオブロックのPUの変位を示し得る。予測ブロックは、絶対値差分和(SAD)、2乗差分和(SSD)、または他の差分尺度によって決定され得るピクセル差分に関して、コーディングされるブロックに精密に一致することがわかっているブロックである。いくつかの例では、ビデオエンコーダ20は、参照ピクチャメモリ64に記憶された参照ピクチャのサブ整数ピクセル位置の値を計算し得る。たとえば、ビデオエンコーダ20は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置、または他の分数ピクセル位置の値を補間し得る。したがって、動き推定ユニット42は、フルピクセル位置と分数ピクセル位置とに対する動き探索を実行し、分数ピクセル精度で動きベクトルを出力し得る。
[0067]動き推定ユニット42は、PUの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコード化スライス中のビデオブロックのPUのための動きベクトルを計算する。参照ピクチャは、第1の参照ピクチャリスト(リスト0)または第2の参照ピクチャリスト(リスト1)から選択されてよく、それらの参照ピクチャリストの各々は、参照ピクチャメモリ64に記憶された1つまたは複数の参照ピクチャを識別する。動き推定ユニット42は、計算された動きベクトルをエントロピー符号化ユニット56と動き補償ユニット44とに送る。
[0068]動き補償ユニット44によって実行される動き補償は、動き推定ユニット42によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成することに関与し得る。この場合も、いくつかの例では、動き推定ユニット42と動き補償ユニット44とは機能的に統合され得る。現在のビデオブロックのPUのための動きベクトルを受信すると、動き補償ユニット44は、参照ピクチャリストのうちの1つにおいて動きベクトルが指す予測ブロックの位置を特定し得る。加算器50は、以下で説明されるように、コーディングされている現在ビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成することによって、残差ビデオブロックを形成する。一般に、動き推定ユニット42はルーマ成分に対して動き推定を実行し、動き補償ユニット44は、クロマ成分とルーマ成分の両方のためにルーマ成分に基づいて計算された動きベクトルを使用する。モード選択ユニット40はまた、ビデオスライスのビデオブロックを復号する際にビデオデコーダ30が使用するためのビデオブロックとビデオスライスとに関連するシンタックス要素を生成し得る。
[0069]イントラ予測ユニット46は、上で説明されたように、動き推定ユニット42と動き補償ユニット44とによって実行されるインター予測の代替として、現在のブロックをイントラ予測し得る。特に、イントラ予測ユニット46は、現在のブロックを符号化するために使用すべきイントラ予測モードを決定し得る。いくつかの例では、イントラ予測ユニット46は、たとえば、別々の符号化パスの間に、様々なイントラ予測モードを使用して、現在のブロックを符号化することができ、イントラ予測ユニット46(または、いくつかの例において、モード選択ユニット40)は、テストされたモードから使用するのに適切なイントラ予測モードを選択することができる。
[0070]たとえば、イントラ予測ユニット46は、様々なテストされたイントラ予測モードのためのレートひずみ分析を使用してレートひずみ値を計算し、テストされたモードの中で最良のレートひずみ特性を有するイントラ予測モードを選択し得る。レートひずみ分析は、一般に、符号化ブロックと、符号化ブロックを生成するために符号化された元の符号化されていないブロックとの間のひずみ(または誤差)の量、ならびに符号化ブロックを生成するために使用されるビットレート(すなわち、ビット数)を決定する。イントラ予測ユニット46は、どのイントラ予測モードがブロックについて最良のレートひずみ値を呈するかを決定するために、様々な符号化ブロックのひずみおよびレートから比率を計算し得る。
[0071]ブロック用のイントラ予測モードを選択した後、イントラ予測ユニット46は、ブロック用に選択されたイントラ予測モードを示す情報を、エントロピー符号化ユニット56に提供することができる。エントロピー符号化ユニット56は、選択されたイントラ予測モードを示す情報を符号化することができる。ビデオエンコーダ20は、(コードワードマッピングテーブルとも呼ばれる)複数のイントラ予測モードインデックステーブルおよび複数の修正されたイントラ予測モードインデックステーブルと、様々なブロック用の符号化コンテキストの定義と、最確イントラ予測モードの指示とを含み得る送信されるビットストリーム構成データの中に、コンテキストの各々について使用する、イントラ予測モードインデックステーブルと修正されたイントラ予測モードインデックステーブルとを含めることができる。
[0072]ビデオエンコーダ20は、コーディングされている元のビデオブロックから、モード選択ユニット40からの予測データを減算することによって、残差ビデオブロックを形成する。加算器50は、この減算演算を実行する1つまたは複数のコンポーネントを表す。変換処理ユニット52は、離散コサイン変換(DCT)または概念的に同様の変換などの変換を残差ブロックに適用し、残差変換係数値を備えるビデオブロックを生成する。変換処理ユニット52は、DCTと概念的に同様である他の変換を実行し得る。ウェーブレット変換、整数変換、サブバンド変換または他のタイプの変換も使用され得る。
[0073]いずれの場合も、変換処理ユニット52は、変換を残差ブロックに適用し、残差変換係数のブロックを生成する。変換は、残差情報をピクセル値領域から周波数領域などの変換領域に変換し得る。変換処理ユニット52は、得られた変換係数を量子化ユニット54に送り得る。量子化ユニット54は、ビットレートをさらに低減するために変換係数を量子化する。量子化プロセスは、係数の一部またはすべてに関連するビット深度を低減することができる。量子化プロセスは「スケーリング」プロセスと呼ばれることもあり、したがって、量子化された変換係数は「スケーリングされた変換係数」と呼ばれることもある。量子化(またはスケーリング)の程度は、量子化パラメータを調整することによって修正され得る。いくつかの例では、エントロピー符号化ユニット56は、次いで、量子化変換係数を含む行列の走査を実行し得る。
[0074]量子化の後、エントロピー符号化ユニット56は、走査された量子化変換係数をエントロピーコーディングする。たとえば、エントロピー符号化ユニット56は、コンテキスト適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)、確率間隔区分エントロピー(PIPE)コーディングまたは別のエントロピーコーディング技法を実行し得る。コンテキストベースエントロピーコーディングの場合、コンテキストは隣接ブロックに基づき得る。エントロピー符号化ユニット56によるエントロピーコーディングの後、符号化ビットストリームは、別のデバイス(たとえば、ビデオデコーダ30)に送信されてよく、または後で送信するかもしくは取り出すために保管され得る。
[0075]逆量子化ユニット58および逆変換ユニット60は、それぞれ逆量子化および逆変換を適用して、たとえば参照ブロックとして後で使用するために、ピクセル領域中で残差ブロックを復元する。動き補償ユニット44は、残差ブロックを参照ピクチャメモリ64のフレームのうちの1つの予測ブロックに加算することによって参照ブロックを計算し得る。動き補償ユニット44はまた、復元された残差ブロックに1つまたは複数の補間フィルタを適用して、動き推定において使用するサブ整数ピクセル値を計算し得る。加算器62は、復元された残差ブロックを、動き補償ユニット44によって生成された動き補償予測ブロックに加算して、参照ピクチャメモリ64に記憶するための復元されたビデオブロックを生成する。復元されたビデオブロックは、後続のビデオフレーム中のブロックをインターコーディングするための参照ブロックとして、動き推定ユニット42および動き補償ユニット44によって使用され得る。
[0076]モード選択ユニット40は、上記で説明したように様々な符号化パスを実行してもよい。これらのパスのうちのいくつかにおいて、モード選択ユニット40は、ビデオデータの現在のブロックに関する特定の符号化モードを決定してもよい。たとえば、モード選択ユニット40は、パスから得られるレートひずみメトリクスに基づいて現在のブロックはインター予測を使用して予測すべきであると決定してもよい。同様に、モード選択ユニット40は、高度動きベクトル予測(AMVP)またはマージモードを使用して現在のブロックの動きベクトルを符号化すべきであるかどうかを決定してもよい。概して、AMVPでは、動きベクトルはAMVP候補の動きベクトルに対してコーディングされ、現在の動きベクトルとAMVP候補の動きベクトルとの間の動きベクトルの差が算出される。さらに、現在の動きベクトルについても参照ピクチャリスト識別子および参照インデックスがコーディングされる。
[0077]一方、マージモードでは、ほぼすべての動きパラメータが動きベクトル予測子から継承され、動きベクトル予測子インデックスのみが、候補動きベクトル予測子の組におけるどの動きベクトル予測子が動きベクトルをコーディングするために使用されるかを示すために符号化される。しかしながら、本開示の技法によれば、ビデオエンコーダ20は、マージモードを実行する際に追加の参照インデックスを使用してもよい。
[0078]モード選択ユニット40は、現在のブロックをビュー間予測すべきであると決定してもよい。さらに、モード選択ユニット40は、コロケートされたブロックの動きベクトルが、現在のブロックのビュー間参照ピクチャの参照ブロックを識別する動きベクトルを定めるのに十分であると決定してもよい。したがって、モード選択ユニット40は、現在のブロックの動きベクトルを符号化するためにマージモード、すなわち、時間的動きベクトル予測子(TMVP)を使用するマージモードを使用することを選んでもよい。しかしながら、従来のマージモードでは、現在のブロックの動きベクトルは、コロケートされたブロックの参照インデックス、すなわち、現在のブロックを含む現在のピクチャのピクチャ順序カウント(POC)とは異なるピクチャ順序カウントを有する参照ピクチャを参照するTMVPを継承する。したがって、ビデオエンコーダ20は、ビュー間参照ピクチャが現在のピクチャと同じPOCを有するように、TMVPの参照インデックスからとは別個の追加の参照インデックスを使用して参照ピクチャリストからビュー間参照ピクチャを選択してもよい。
[0079]特に、ビデオエンコーダ20は、追加の参照インデックスの所定の値を決定してもよい。所定の値は0であっても、−1であっても、または別の値であってもよい。ビデオエンコーダ20は、いくつかの例では、現在のブロックを含むスライスのスライスヘッダ、現在のブロックを含むピクチャのピクチャパラメータセット(PPS)、ピクチャを含むシーケンスのシーケンスパラメータセット(SPS)、および/またはビデオパラメータセット(VPS)内の所定の値を表すデータを符号化してもよい。エントロピー符号化ユニット56は、このデータをエントロピー符号化し得る。いずれの場合も、ビデオエンコーダ20は、追加の参照インデックスを使用することによって、現在のピクチャの現在のブロックに関するビュー間参照ピクチャに現在のピクチャのPOC値と同じPOCを確実に有させ得る。
[0080]したがって、動き補償ユニット44は、現在のブロックの予想されるブロックを構成する際、参照ピクチャ内の参照ブロックのロケーションを決定するために異なるピクチャ内のコロケートされたブロックから水平動成分、垂直動成分、および参照ピクチャリストを使用してもよいが、追加の参照ブロックの所定の値を使用してもよく、次いで参照ブロックから所定のブロックを算出してもよい。参照ピクチャは、参照ピクチャリストに適用される追加の参照インデックスによって識別される参照ピクチャに対応してもよく、一方、参照ブロックは、TMVPの水平動成分および垂直動成分によってオフセットされる現在のブロックのロケーションによって定められる参照ピクチャ内のロケーションにおいて識別されてもよい。
[0081]このように、ビデオエンコーダ20は、現在の動きベクトルの候補動きベクトル予測子が参照する参照ピクチャを表す第1の目標参照インデックスを決定することと、候補動きベクトル予測子に関して、現在の動きベクトルの時間的動きベクトル予測(TMVP)の間に、所定の値と等しい追加の目標参照インデックスの値を決定することと、追加の参照インデックスの値に少なくとも部分的に基づいて現在の動きベクトルをコーディングする(すなわち、この例では符号化する)こととを行うように構成されたビデオコーダの例を表す。
[0082]図2のビデオエンコーダ20は、現在の動きベクトルの時間的動きベクトル予測(TMVP)の間に追加の参照インデックスの値を所定の値に設定し、追加の参照インデックスの値に少なくとも部分的に基づいて現在の動きベクトルをコーディングするように構成されてもよいビデオエンコーダの例も表す。追加または代替として、ビデオエンコーダ20は、コーディングすべきビデオデータが基本ビデオコーディング規格または基本ビデオコーディング規格の拡張規格に適合するかどうかを決定することと、ビデオデータが基本ビデオコーディング規格に適合するときに、基本ビデオコーディング規格に従ってビデオデータをコーディングすることと、ビデオデータが基本ビデオコーディング規格の拡張規格に適合するときに、ビデオデータのピクチャのブロックの動きベクトルをコーディングする際に、動きベクトルの時間的動きベクトル予測(TMVP)の追加の目標参照インデックス値の値を導出することと、追加の目標参照インデックス値の値に少なくとも部分的に基づいて動きベクトルをコーディングすることとを行うように構成されてもよい。
[0083]図3は、動きベクトルをコーディングするための技法を実装し得るビデオデコーダ30の例を示すブロック図である。図3の例では、ビデオデコーダ30は、エントロピー復号ユニット70と、動き補償ユニット72と、イントラ予測ユニット74と、逆量子化ユニット76と、逆変換ユニット78と、参照ピクチャメモリ82と、加算器80とを含む。ビデオデコーダ30は、いくつかの例では、ビデオエンコーダ20(図2)に関して説明された符号化パスとは全般に逆の復号パスを実行し得る。動き補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルに基づいて予測データを生成することができ、イントラ予測ユニット74は、エントロピー復号ユニット70から受信されたイントラ予測モードインジケータに基づいて予測データを生成することができる。
[0084]復号プロセス中に、ビデオデコーダ30は、ビデオエンコーダ20から、符号化ビデオスライスのビデオブロックと、関連するシンタックス要素とを表す符号化ビデオビットストリームを受信する。ビデオデコーダ30のエントロピー復号ユニット70は、量子化係数と、動きベクトルまたはイントラ予測モードインジケータと、他のシンタックス要素とを生成するためにビットストリームをエントロピー復号する。エントロピー復号ユニット70は、動きベクトルと他の予測シンタックス要素とを動き補償ユニット72に転送する。ビデオデコーダ30は、ビデオスライスレベルおよび/またはビデオブロックレベルでシンタックス要素を受信し得る。
[0085]ビデオスライスがイントラコード化(I)スライスとしてコーディングされるとき、イントラ予測ユニット74は、シグナリングされたイントラ予測モードと、現在のフレームまたはピクチャの、前に復号されたブロックからのデータとに基づいて、現在のビデオスライスのビデオブロックのための予測データを生成し得る。ビデオフレームがインターコード化(すなわち、B、P、またはGPB)スライスとしてコーディングされるとき、動き補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルと他のシンタックス要素とに基づいて、現在のビデオスライスのビデオブロックのための予測ブロックを生成する。予測ブロックは、参照ピクチャリストの1つの中の参照ピクチャの1つから生成され得る。ビデオデコーダ30は、参照ピクチャメモリ82に記憶された参照ピクチャに基づいて、デフォルトの構成技法を使用して、参照フレームリスト、すなわち、リスト0とリスト1とを構築し得る。
[0086]動き補償ユニット72は、動きベクトルと他のシンタックス要素とを解析することによって現在のビデオスライスのビデオブロックについての予測情報を決定し、予測情報を使用して、復号されている現在のビデオブロックのための予測ブロックを生成する。たとえば、動き補償ユニット72は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード(たとえば、イントラまたはインター予測)、インター予測スライスタイプ(たとえば、Bスライス、Pスライス、またはGPBスライス)、スライスの参照ピクチャリストのうちの1つまたは複数に対する構成情報、スライスの各インター符号化ビデオブロックに対する動きベクトル、スライスの各インターコード化ビデオブロックに対するインター予測ステータス、および現在のビデオスライス中のビデオブロックを復号するための他の情報を決定するために、受信されたシンタックス要素のいくつかを使用する。
[0087]動き補償ユニット72はまた、補間フィルタに基づいて補間を実行し得る。動き補償ユニット72は、ビデオブロックの符号化中にビデオエンコーダ20によって使用された補間フィルタを使用して、参照ブロックのサブ整数ピクセルの補間値を計算し得る。この場合、動き補償ユニット72は、受信されたシンタックス要素からビデオエンコーダ20によって使用された補間フィルタを決定し、その補間フィルタを使用して予測ブロックを生成し得る。
[0088]逆量子化ユニット76は、ビットストリーム中で与えられ、エントロピー復号ユニット70によって復号された量子化変換係数を逆量子化(inverse quantize)、すなわち、逆量子化(de-quantize)する。逆量子化プロセスは、量子化の程度を決定し、同様に、適用されるべき逆量子化の程度を決定するための、ビデオスライス中のビデオブロックごとにビデオエンコーダ30によって計算される量子化パラメータQPYの使用を含み得る。
[0089]逆変換ユニット78は、逆変換、たとえば、逆DCT、逆整数変換、または概念的に同様の逆変換処理を変換係数に適用して、ピクセル領域において残差ブロックを生成する。
[0090]動き補償ユニット72が、動きベクトルと他のシンタックス要素とに基づいて現在のビデオブロックのための予測ブロックを生成した後、ビデオデコーダ30は、逆変換ユニット78からの残差ブロックを動き補償ユニット72によって生成された対応する予測ブロックと加算することによって、復号ビデオブロックを形成する。加算器80は、この加算演算を実行する1つまたは複数のコンポーネントを表す。所望される場合、ブロッキネスアーティファクトを除去するために、復号されたブロックをフィルタリングするためのデブロッキングフィルタも適用され得る。ピクセル遷移を平滑化し、または別様にビデオ品質を改善するために、(コーディングループ内またはコーディングループ後の)他のループフィルタも使用され得る。所与のフレームまたはピクチャの中の復号されたビデオブロックは、次いで、その後の動き補償のために使用される参照ピクチャを記憶する参照ピクチャメモリ82に記憶される。参照ピクチャメモリ82はまた、図1のディスプレイデバイス32のようなディスプレイデバイス上での後の表示のために、復号されたビデオを記憶する。
[0091]本開示の技法によれば、ビデオデコーダ30は、現在のブロックがインター予測を使用して復号されることを示すデータを受け取ってもよい。さらに、データは、現在のブロックの動きベクトルがマージモードを使用して復号され、マージモードの間使用できる時間的動きベクトル予測子(TMVP)が利用可能であることを示してもよい。さらに、ビデオデコーダ30は、追加の参照インデックスに使用するための所定の値を決定してもよい。たとえば、所定の値は、現在のブロックを含むスライスのスライスヘッダ、現在のブロックを含むピクチャのピクチャパラメータセット(PPS)、ピクチャを含むシーケンスのシーケンスパラメータセット(SPS)、および/またはビデオパラメータセット(VPS)内に定められてよい。
[0092]いくつかの例では、ビデオデコーダ30は、現在のブロックのマージ候補がコロケートされたブロックの動きベクトルであることを示す動きベクトル予測子(MVP)インデックス、すなわち、TMVPを復号する。したがって、ビデオデコーダ30は、参照インデックス、参照ピクチャリスト、水平動成分、および垂直動成分などのTMVPの動きパラメータを決定してもよい。しかしながら、ビデオデコーダ30は、上述のように所定の値を有する追加の参照インデックスを決定してもよい。
[0093]エントロピー復号ユニット70またはビデオデコーダ30の別のユニット(たとえば、動き補償ユニット72)は、マージモードおよびTMVPを使用して現在のブロックの動きベクトルを構成してもよい。特に、ビデオデコーダ30は、TMVPの水平動成分、垂直動成分、および参照ピクチャリスト識別子を有するように現在のブロックの動きベクトルを構成してもよい。しかしながら、現在のブロックの動きベクトルは、TMVPの参照インデックスではなく、追加の参照インデックスを使用してもよい。したがって、動き補償ユニット72は、TMVPの参照ピクチャリストによって識別される参照ピクチャおよび追加の参照インデックス、ならびに水平動成分および垂直動成分に基づく参照ピクチャ内の参照ブロックの位置を使用して現在のブロックの予想されるブロックを算出することができる。
[0094]このように、ビデオデコーダ30は、現在の動きベクトルの候補動きベクトル予測子が参照する参照ピクチャを表す第1の目標参照インデックスを決定することと、候補動きベクトル予測子に関して、現在の動きベクトルの時間的動きベクトル予測(TMVP)の間に、所定の値と等しい追加の目標参照インデックスの値を決定することと、追加の参照インデックスの値に少なくとも部分的に基づいて現在の動きベクトルをコーディングする(すなわち、この例では復号する)こととを行うように構成されたビデオデコーダの例を表す。
[0095]図3のビデオデコーダ30は、現在の動きベクトルの時間的動きベクトル予測(TMVP)の間に追加の参照インデックスの値を所定の値に設定し、追加の参照インデックスの値に少なくとも部分的に基づいて現在の動きベクトルをコーディングするように構成されてもよいビデオデコーダの例も表す。追加または代替として、ビデオデコーダ30は、コーディングすべきビデオデータが基本ビデオコーディング規格または基本ビデオコーディング規格の拡張規格に適合するかどうかを決定することと、ビデオデータが基本ビデオコーディング規格に適合するときに、基本ビデオコーディング規格に従ってビデオデータをコーディングすることと、ビデオデータが基本ビデオコーディング規格の拡張規格に適合するときに、ビデオデータのピクチャのブロックの動きベクトルをコーディングする際に、動きベクトルの時間的動きベクトル予測(TMVP)の追加の目標参照インデックス値の値を導出することと、追加の目標参照インデックス値の値に少なくとも部分的に基づいて動きベクトルをコーディングすることとを行うように構成されてもよい。
[0096]図4は、例示的なMVC予測パターンを示す概念図である。マルチビュービデオコーディング(MVC)は、ITU−T H.264/AVCの拡張である。同様の技法が、HEVCに適用され得る。図4の例では、(ビューID「S0」〜「S7」を有する)8つのビューが示され、各ビューについて12個の時間位置(「T0」〜「T11」)が示されている。すなわち、図4中の各行はビューに対応し、各列は時間位置を示す。図4は、各ビュー内のピクチャ間予測とビュー同士の間のビュー間予測との両方を含むマルチビュービデオコーディングのための代表的なMVC予測構造を示す。
[0097]MVCはH.264/AVCデコーダによって復号可能であるいわゆる基本ビューを有し、ステレオビューペアはMVCによってサポートされ得るが、MVCの1つの利点は、MVCが、3Dビデオ入力として3つ以上のビューを使用し複数のビューによって表されるこの3Dビデオを復号する例を、サポートできることである。MVCデコーダを有するクライアントのレンダラは、複数のビューを伴う3Dビデオコンテンツを予想することができる。
[0098]典型的なMVCの復号順序の構成は、時間優先コーディングと呼ばれる。アクセスユニットは、1つの出力時間インスタンスのためのすべてのビューのコード化ピクチャを含み得る。たとえば、時刻T0のピクチャの各々は、共通のアクセスユニットに含まれてよく、時刻T1のピクチャの各々は、第2の共通のアクセスユニットに含まれてよく、以下同様である。復号順序は、出力または表示順序と必ずしも同一とは限らない。MVCでは、同じアクセスユニット中の(たとえば、同じ時間インスタンスをもつ)ピクチャ間でビュー間予測が可能になる。非ベースビューのうちの1つ中のピクチャをコーディングするとき、ピクチャが異なるビュー中にあるが同じ時間インスタンスをもつ場合、そのピクチャは参照ピクチャリストに追加され得る。ビュー間予測参照ピクチャは、任意のインター予測参照ピクチャと同様に、参照ピクチャリストの任意の位置に置かれ得る。
[0099]図4中のフレームは、対応するフレームがイントラコーディングされる(すなわち、Iフレームである)のか、一方向に(すなわち、Pフレームとして)インターコーディングされるのか、複数の方向に(すなわち、Bフレームとして)インターコーディングされるのかを指定する、文字を含む影付きブロックを使用して、図4中の各行と各列との交差部において示されている。一般に、予測は矢印によって示され、ここで矢印の終点のフレームは、予測参照のために矢印の始点のオブジェクトを使用する。たとえば、時間位置T0にあるビューS2のPフレームは、時間位置T0にあるビューS0のIフレームから予測される。
[0100]シングルビュービデオ符号化の場合と同様に、マルチビュービデオコーディングのビデオシーケンスのフレームは、異なる時間位置におけるフレームに関して予測的に符号化され得る。たとえば、時間位置T1におけるビューS0のbフレームは、時間位置T0におけるビューS0のIフレームからそのbフレームに向けられた矢印を有し、その矢印は、bフレームがIフレームから予測されることを示す。しかしながら、加えて、マルチビュービデオ符号化の文脈では、フレームは、ビュー間予測され得る。すなわち、ビュー成分は、参照のために他のビュー中のビュー成分を使用することができる。MVCでは、たとえば、別のビュー中のビュー成分がインター予測参照であるかのように、ビュー間予測が実現される。潜在的なビュー間参照は、シーケンスパラメータセット(SPS)MVC拡張においてシグナリングされ、インター予測またはビュー間予測参照のフレキシブルな順序付けを可能にする参照ピクチャリスト構成プロセスによって変更され得る。
[0101]H.264/AVCのMVC拡張では、一例として、ビュー間予測は視差動き補償によってサポートされ、視差動き補償は、H.264/AVC動き補償のシンタックスを使用するが、異なるビュー中のピクチャが参照ピクチャとして使用されることを可能にする。2つのビューのコーディングは、MVCによってサポートされ得るが、一般に、立体視ビューと呼ばれる。MVCの利点の1つは、MVCエンコーダが3Dビデオ入力として3つ以上のビューをとらえることができ、MVCデコーダがそのようなマルチビュー表現を復号できることである。したがって、MVCデコーダを有するレンダリングデバイスは、3つ以上のビューを伴う3Dビデオコンテンツを予想することができる。
[0102]通常、Bピクチャの第1または第2の参照ピクチャリストに対する参照ピクチャリスト構成は、2つのステップ、すなわち参照ピクチャリスト初期化と、参照ピクチャリスト並べ替え(修正)とを含む。参照ピクチャリスト初期化は、参照ピクチャメモリ(復号ピクチャバッファとしても知られる)中の参照ピクチャを、POC(ピクチャの表示順で整列されるピクチャ順序カウント)値の順序に基づいてリストに入れる際に従う、暗黙的な機構である。
[0103]ビデオコーダは、参照ピクチャリスト並べ替え機構を使用して、参照ピクチャリスト初期化中にリストに入れられたピクチャの位置を任意の新しい位置へと修正し、または参照ピクチャメモリ中の任意の参照ピクチャを、そのピクチャが初期化リストに属さなくても、任意の位置に入れることができる。参照ピクチャリスト並べ替え(修正)後のいくつかのピクチャは、リスト中の離れた位置に入れられる場合がある。しかしながら、ピクチャの位置が、リストのアクティブ参照ピクチャの数を超える場合、ピクチャは、最終参照ピクチャリストのエントリーとは見なされない。アクティブな参照ピクチャの数は、リストごとにスライスヘッダでシグナリングされ得る。参照ピクチャリストが構築された後(たとえば、利用可能であれば、RefPicList0およびRefPicList1)、参照ピクチャリストに対する参照インデックスは、参照ピクチャリストに含まれる任意の参照ピクチャを識別するために使用され得る。
[0104]時間的動きベクトル予測子(TMVP)を得るために、まず、同じ位置にあるピクチャが識別されることになる。現在のピクチャがBスライスである場合、collocated_from_l0_flagが、同じ位置にあるピクチャがRefPicList0からのものかRefPicList1からのものかを示すために、スライスヘッダにおいてシグナリングされる。参照ピクチャリストが識別された後、スライスヘッダでシグナリングされるcollocated_ref_idxが、リスト中のピクチャの中のピクチャを識別するために使用される。同じ位置にあるPUが次いで、同じ位置にあるピクチャを確認することによって識別される。このPUを含むCUの一番右下のPUの動きと、このPUを含むCUの中心PU内の一番右下のPUの動きのいずれかが、使用される。上記のプロセスによって識別される動きベクトルが、AMVPまたは統合モードのための動き候補を生成するために使用される場合、動きベクトルは、時間的な位置(POCに反映される)に基づいてスケーリングされる必要がある。
[0105]HEVCでは、シーケンスパラメータセット(SPS)は、フラグsps_temporal_mvp_enable_flagを含み、スライスヘッダは、sps_temporal_mvp_enable_flagが1に等しい場合、フラグpic_temporal_mvp_enable_flagを含む。ある特定のピクチャに対してpic_temporal_mvp_enable_flagとtemporal_idの両方が0に等しい場合、復号順序においてその特定のピクチャの前にあるピクチャからの動きベクトルは、特定のピクチャ、または復号順序で特定のピクチャの後にあるピクチャの復号において、時間的動きベクトル予測子として使用されない。
[0106]現在、Moving Pictures Experts Group(MPEG)は、HEVCに基づいて3DV規格を開発しており、その3DV規格に対して、規格化の努力の一部は、HEVCに基づくマルチビュービデオコーデックの規格化も含む。同様に、HEVCベースの3DVでは、異なるビューから復元されたビュー成分に基づくビュー間予測が有効にされることに留意されたい。
[0107]拡張が実際に「HLSのみ」(ハイレベルシンタックスのみ)という要件を満たすような方式で、AVCはマルチビュー拡張によって拡張された。「HLSのみ」という要件は、AVC中のマクロブロックレベルにおけるモジュールが再設計される必要がなく、完全にマルチビュービデオコーディング(MVC)に対して再使用され得るように、MVCにおいてハイレベルシンタックス(HLS)の変更しか存在しないことを保証する。「HLSのみ」という要件は、HEVCのMVC/3DV拡張に対して、また、マルチループ復号が受け入れ可能であると考えられる場合には、HEVCのスケーラブルビデオコーディング(SVC)拡張に対しても満たされ得ることが可能である。
[0108]ビュー間予測を可能にするために、HLSの変更が行われてよいのは以下の目的、すなわちピクチャの識別のためであり、参照ピクチャリストの構築および標識は、特定のビューの中のピクチャを識別することが可能である必要がある。
[0109]HLSの変更は、H.264/MVCにおける「HLSのみ」という要件を満たすには十分ではなく、それは、ローレベルコーディングモジュールが、たとえば無動きに関するスケーリングを処理する状況に決して遭遇しないように、他の制約、仮定が行われるからである。そのような制約、修正、および仮定は以下の通りである。
・同じ位置にあるピクチャがビュー間(のみ)参照ピクチャである場合、時間ダイレクトモードを無効にする
・短期ではないものとしてビュー間(のみ)参照ピクチャを見なす:空間ダイレクトに関する
・暗黙的加重予測を無効にする
[0110]「HLSのみ」という要件を満たすために、拡張におけるそのような修正は、ハイレベルシンタックスのみにおいて行われなければならない。したがって、スライスヘッダのもとにあるシンタックス要素に対しては修正はあるべきではなく、拡張仕様に対するCUレベルの復号プロセスの変更はない。たとえば、HEVC拡張仕様の動きベクトル予測は、HEVC基本仕様における動きベクトル予測と厳密に同じであるべきである。HLSの変更は、拡張仕様の規範的なデコーダの変更であるが、基本仕様の観点からは、そのような変更は、必ずしも既知である必要はなく、義務的ではなくてよい。
[0111]効率的なビュー間予測のような機能を可能にするために、HEVC拡張における修正と基本仕様の両方が実装され得る。通常の復号プロセスまたは基本HEVCデコーダのコーディング効率に影響を与えないが拡張仕様における機能を有効にすることを目的とする基本仕様の変更は、フックと呼ばれる。多くの場合、「HLSのみ」という要件は、基本仕様におけるフックと拡張仕様におけるHLSの変更の両方により満たされる。基本仕様におけるフックが良好に定義されなければ、ある所望の機能が、拡張仕様において有効にされないことがあり、または、拡張仕様において多くの修正を必要とする。
[0112]HLSのみのSVCでは、場合によってはアップサンプリングおよび/またはフィルタリングの後で、基本レイヤの表現が、現在のレイヤの現在のピクチャの参照ピクチャリストへと入れられ得る。そのようなピクチャは、レイヤ間参照ピクチャと呼ばれる。
[0113]HEVC拡張規格は、JCT−3VおよびJCT−VCにおいて策定中である。JCT−3Vでは、2つのHEVC拡張規格、すなわち、マルチビュー拡張規格(MV−HEVC)および3Dビデオ拡張規格(3D−HEVC)を策定中である。さらに、2つのAVC拡張規格、MVC+Dおよび3D−AVCが策定中である。策定中の規格の例示的な説明には、http://phenix.it−sudparis.eu/jct2/doc_end_user/documents/2_Shanghai/wg11/JCT3V−B1001−v1.zipにおいて入手可能なJCT3V−B1001「Study Text of ISO/IFC 14496−10:2012/DAM2 MVC extension for inclusion of depth maps」M.Hannuksela(Nokia)、Y.Chen(Qualcomm)、G.Sullivan(Microsoft)、T.Suzuki、S.Hattori(Sony)、http://phenix.it−sudparis.eu/jct2/doc_end_user/documents/2_Shanghai/wg11/JCT3V−B1002−v1.zipにおいて入手可能なJCT3V−B1002「3D−AVC draft text 4」M.Hannuksela、Y.Chen、T.Suzuki、J.−R.Ohm、G.J.Sullivan、http://phenix.it−sudparis.eu/jct2/doc_end_user/documents/2_Shanghai/wg11/JCT3V−B1004−v1.zipにおいて入手可能なJCT3V−B1004「MV−HEVC Draft Text 2」G.Tech、K.Wegner、Y.Chen、M.Hannuksela、http://phenix.it−sudparis.eu/jct2/doc_end_user/documents/2_Shanghai/wg11/JCT3V−B1005−v1.zipにおいて入手可能なJCT3V−B1005「3D−HEVC Test Model 2」G.Tech、K.Wegner、Y.Chen、S.Yesが含まれる。一方、HEVCのスケーリング可能な拡張規格はJCT−VCによって開発中である。
[0114]コーディング拡張規格の様々な変形例では、複数のビューまたはレイヤが存在してもよく、さらに、様々なレイヤ、テクスチャビュー、またはデプスビューはそれぞれに異なる空間解像度を有してもよい。概して、本文献で「レイヤ」を参照する場合、レイヤという用語は、SVCのレイヤまたはMVCのビューのいずれにも同等に適用可能であってよい。すなわち、異なるビューはビットストリームの異なる「レイヤ」と見なされてもよい。MV HEV仕様は、HLS変更のみを使用して実現されるように設計される。
[0115]図5は、ピクチャのブロックをコーディングするために使用される例示的な1組のピクチャおよび動きベクトルを示す概念図である。図5の例は、現在のピクチャ100、コロケートされたピクチャ106、短期(ST)参照ピクチャ122、および現在のピクチャ100の参照ピクチャリストに入れられたときに参照インデックス0を有する参照ピクチャ124を示す。ピクチャ100、106、122、および124の各々は、この例では、同じビュー、すなわち、この例では非ベースビュー内で生じる。図5は、非ベースビューとは別個のベースビュー内で生じるビュー間参照ピクチャ120も示す。
[0116]この例では、現在のピクチャ100はブロック102、104を含む。ブロック102は、時間的動きベクトル114を使用してピクチャ124に対して予測される。この例では、コロケートされたピクチャ106はブロック108、110を含む。同様に、この例では、ブロック108は、時間的動きベクトル112を使用して短期参照ピクチャ122に対して時間的に予測され、一方、ブロック110は、差異動きベクトル116を使用してビュー間参照ピクチャ120に対してビュー間予測される。
[0117]ビデオエンコーダ20またはビデオデコーダ30のようなビデオコーダは、動きベクトルを使用して動きベクトル114をコーディングし得る。動きベクトル予測モードは、マージモードおよび高度動きベクトル予測(AMVP)を含む。WD9は、動きベクトル予測モードがマージモードであるとき、目標参照インデックスが0に設定されることを規定している。したがって、コロケートされたPU内の動きベクトルは、短期参照ピクチャを参照する場合、現在のPUのマージ候補を形成するようにスケーリングされる。図5の例では、ビデオコーダは、時間的動きベクトル114をコーディングするために、時間的動きベクトル114のマージ候補を形成するように時間的動きベクトル112をスケーリングし、ここにおいてブロック102は現在のPUを表す。
[0118]しかしながら、WD9は、コロケートされたPUが(ビュー間参照ピクチャに対応する)長期参照ピクチャを参照する動きベクトルを有する場合、ビュー間参照ピクチャを参照する動きベクトルが現在の動きベクトルを予測するのに使用されないことも規定する。たとえば、図5において、WD9は、ブロック110の差異動きベクトル116がブロック104の動きベクトルをコーディングするのに使用されないことを規定する(図5はこの動きベクトルを示さない)。
[0119]MV−HEVCでは、時間的動きベクトル予測プロセスは、コーディングユニットの修正もまたはそれよりも低いレベルの修正も導入できないことに起因してHEVCの場合と同じである。しかしながら、ビュー間参照ピクチャを参照する動きベクトルを含む顕著な量のコロケートされたピクチャがあり得、一方、目標参照インデックス(0に等しい)は、短期参照ピクチャを示す。したがって、WD9によって規定されたようにこれらの動きベクトルからの予測を無効化すると、マージモードの効率が低下する。
[0120]図6は、ピクチャのブロックをコーディングするために使用される別の例示的な1組のピクチャおよび動きベクトルを示す概念図である。特に、図6は、http://phenix.int−evry.fr/jct/doc_end_user/documents/11_Shanghai/wg11/JCTVC−K0239−v2.zipで入手可能なChenら「Temporal Motion Vector Prediction Hook for NV−HEVC」JCTVC−K0239、中国、上海、2012年10月10〜19日による提案を示す。この文献は、一部が本開示に付録Aとして添付されている。JCTVC−K0239では、追加の目標参照インデックスが有効化されることが提案されている。図5の例に関しては、短期参照ピクチャを参照する動きベクトルは、HHEVC WD9の場合と同様に、0に等しい参照インデックスを有する参照ピクチャに対してさらにスケーリングされてもよい。
[0121]しかしながら、長期参照ピクチャでは、ビデオコーダ(たとえば、ビデオエンコーダ20およびビデオデコーダ30)は、長期参照ピクチャを参照する動きベクトルが、マージ候補を形成するのに使用可能であり、利用不能とは見なされないように、新しい追加の参照インデックス(ref_idx Add.)を導出してもよい。図6に示すように、コロケートされたブロック110から現在のピクチャのブロック104への差異動きベクトル116は、差異動きベクトル118を予測するための差異動きベクトル候補を形成するために使用されてもよい。本開示の技法によれば、追加の参照インデックスの値は、たとえば、適用可能なビデオコーディング規格(たとえば、HEVC)、そのような規格の拡張規格(たとえば、マルチビュービデオコーディングまたはスケーリング可能なビデオコーディング)、またはビデオエンコーダ20(図1および図2)などのビデオエンコーダによってあらかじめ決定されてもよい。いくつかの例では、ビデオエンコーダ20は、スライスヘッダ、PPS、SPS、および/またはVPSにおいて所定の値を符号化してもよい。
[0122]概して、0に等しい参照インデックスが短期参照ピクチャを表すとき、新たに追加される目標参照インデックスは、長期参照ピクチャを表すために使用されてもよい。0に等しい参照インデックスが長期参照ピクチャを表すとき、新しく追加される目標参照インデックスは、短期参照ピクチャを表すために使用されてもよい。したがって、ビデオコーダ(たとえば、ビデオエンコーダ20およびビデオデコーダ30)は、0に等しい参照インデックスが短期参照ピクチャを表すとき、新たに追加される目標参照インデックスが、長期参照ピクチャを表し、0に等しい参照インデックスが長期参照ピクチャを表すとき、新たに追加される目標参照インデックスが、短期参照ピクチャを表すことを決定してもよい。
[0123]HEVC WD9と同様に、目標参照インデックスが長期参照ピクチャに対応する場合、コロケートされたブロック内の動きベクトルは、利用可能であると見なされる場合、スケーリングされる必要はない。
[0124]以下の構文および意味は、HEVC基本仕様に関して、高レベルの構文変更として、追加の目標参照インデックスを導出するための技法として提案されている。スライスレベルでは、RefPicList0およびRefPicList1の各々に関する追加の参照インデックス(refIdxLXA)の値が利用可能な場合は導出されてもよい。
8.3.5 TMVPに関する追加の目標参照インデックスのための導出プロセス
このプロセスは、現在のスライスがPスライスまたはBスライスであるときに呼び出される。追加の目標参照インデックスrefIdxL0AおよびrefIdxL1Aが導出される。
変数refIdxL0AとrefIdxL1Aの両方を−1に設定する。
refIdxL0Aを導出するために以下のことが適用される。
スライスがBスライスであるとき、refIdxL1Aを導出するために以下のことが適用される。
[0125]JCTVC−K0239によって提案され上記で説明したHEVCの第8.3.5節は、比較のために提示されている。本開示の技法によれば、マージモードに追加の参照インデックスを使用することなど、JCTVC−K0239の特定の一般的な技法が使用されてよいが、第8.3.5節は省略されてもよい。第8.3.5節の代わりに、本開示の技法によれば、追加の参照インデックスは所定の値に設定されてもよく、たとえば、0、−1、または別の所定の値に設定されてもよい。したがって、本開示の技法は、処理効率が改善され得るように複雑さを低減させることができるという点でJCTVC−K0239に勝るかなりの利益を実現することができる。したがって、本開示では、追加の参照インデックス、たとえば、RefIdxL0A(Bスライスの場合はRefIdxL1A)の値を決定するためにJCTVC−K0239によって提案されたように第8.3.5節を使用する代わりに、変数RedIdxL0aおよびRedIdxL1Aを所定の値(たとえば、0または−1)に等しくなるように設定することを提案する。参照ピクチャリスト(RefPicListX、ここにおいてXは0または1に等しくてもよい)は、HEVC、MV−HEVC、JCTVC−K0239、またはそれ以外に従って正常に導出され得る。
[0126]以下に、時間的動きベクトル予測を実行するための技法について説明する。時間的動きベクトル予測の間に、現在のモードがマージであるとき、目標参照インデックス0はrefIdxLXA(Xは0または1である)に変更されてもよい。AMVPモードは変更されない。新たに追加され/修正されるイタリック体のテキストおよび括弧付きで「削除」の後に続く削除されるテキストを含む、提案された仕様のテキスト変更は以下の通りである。
マージモードに関してTMVPを呼び出すための変更
8.5.2.1.1 マージモードに関するルーマ動きベクトルのための導出プロセス
このプロセスは、PredMode[xC][yC]がMODE_SKIPに等しいかまたはPredMode[xC][yC]がMODE_INTERに等しく、マージ_フラグ[xP][yP]が1に等しいときにのみ呼び出され、ここにおいて、(xP,yP)は現在のピクチャの左上ルーマサンプルに対する現在のルーマ予測ブロックの左上サンプルを指定する。
このプロセスの入力は以下の通りである。
−現在ピクチャの左上ルーマサンプルに対する現在のルーマコーディングブロックの左上サンプルのルーマロケーション(xC,yC)、
−現在のピクチャの左上ルーマサンプルに対する現在のルーマ予測ブロックの左上サンプルのルーマロケーション(xP,yP)、
−現在のルーマコーディングブロックのサイズを指定する変数nCS、
−ルーマ予測ブロックの幅および高さを指定する変数nPbWおよびnPbH、
−現在のコーディングユニット内の現在の予測ユニットのインデックスを指定する変数partIdx。
このプロセスの出力は以下の通りである。
−ルーマ動きベクトルmvL0およびmvL1、
−参照インデックスrefIdxL0およびrefIdxL1、
−予測リスト利用フラグpredFlagL0およびpredFlagL1。
変数singleMCLFlagは次のように導出される。
−log2_parallel_merge_level_minus2が0よりも大きくnCSが8に等しい場合、singleMCLFlagが1に設定される。
−それ以外の場合、singleMCLFlagは0に設定される。
singleMCLFlagが1に等しいとき、xPがxCに等しくなるように設定され、yPがyCに等しくなるように設定され、nPbWとnPbHの両方がnCSに等しくなるように設定される。
注意−singleMCLFlagが1に等しいとき、現在のコーディングユニットのすべての予測ユニットが2Nx2N予測ユニットのマージ候補リストと同一の単一のマージ候補リストを共有する。
動きベクトルmvL0およびmvL1、参照インデックスrefIdxL0およびrefIdxL1、ならびに予測利用フラグpredFlagL0およびpredFlagL1は、以下の順序のステップによって指定されたように導出される。
1. サブクローズにおける互いに隣接する予測ユニットパーティションからのマージ候補の導出プロセス...
2. (Xが0または1である)時間的マージ候補refIdxLXの参照インデックスが0に等しくなるように設定される。
3. サブクローズ8.5.3.1.7における時間的ルーマ動きベクトル予測のための導出プロセスが、ルーマロケーション(xP,yP)と、ルーマ予測ブロックの幅および高さnPbWおよびnPbHと、[削除:「および」]refIdxLXと、1に等しいmergeTMVPとを入力として呼び出され、出力が利用可能性フラグavailableFlagXColおよび時間的動きベクトルmvLXColとなる。 変数availableFlagLXColおよびpredFlagLXCol(Xはそれぞれ0または1である)は、以下で指定するように導出される。
4. ...
AMVPモードに関するTMVPの呼び出しのための変更
8.5.3.1.5 ルーマ動きベクトル予測のための導出プロセス
このプロセスへの入力は以下の通りである。
−現在ピクチャの左上ルーマサンプルに対する現在のルーマコーディングブロックの左上サンプルのルーマロケーション(xC,yC)、
−現在のルーマコーディングブロックのサイズを指定する変数nCS、
−現在のピクチャの左上ルーマサンプルに対する現在のルーマ予測ブロックの左上サンプルのルーマロケーション(xP,yP)、
−ルーマ予測ブロックの幅および高さを指定する変数nPbWおよびnPbH、
− 現在の予測ユニットパーティションの参照インデックスrefIdxLX(ここで、Xは0または1である)。
−現在のコーディングユニット内の現在の予測ユニットのインデックスを指定する変数partIdx。
このプロセスの出力は以下の通りである。
− 動きベクトルmvLXの予測mvpLX(ここで、Xは0または1である)。
動きベクトル予測子mvpLXは、以下の順序付きステップで導出される。
3. サブクローズ8.5.3.1.6における互いに隣接する予測ユニットパーティションからの動きベクトル予測子候補の導出プロセスは、ルーマコーディングブロックロケーション(xC,yC)と、コーディングブロックサイズnCSと、ルーマ予測ブロックロケーション(xP,yP)と、ルーマ予測ブロックの幅および高さnPbWおよびnPbHと、refIdxLX(Xはそれぞれ0または1である)と、パーティションインデックスpartIdxとを入力として呼び出され、NがA、Bによって置き換えられる利用可能性フラグavailableFlagLXNと動きベクトルmvLXNとを出力として呼び出される。
4. availableFlagLXAとavailableFlagLXBが1に等しく、mvLXAがmvLXBに等しくない場合、availableFlagLXColが0に等しくなるように設定され、それ以外の場合、サブクローズ8.5.3.1.7における時間的ルーマ動きベクトル予測のための導出プロセスが、ルーマロケーション(xP,yP)と、ルーマ予測ブロックの幅および高さnPbWおよびnPbHと、[削除:「および」]refIdxLX(Xはそれぞれ0または1である)と、0に等しいmergeTMVPとを入力として呼び出され、出力が利用可能性フラグavailableFlagXColおよび時間的動きベクトル予測子mvLXColとなる。
...
TMVPのための変更
8.5.3.1.7 時間的ルーマ動きベクトル予測のための導出プロセス
このプロセスへの入力は以下の通りである。
−現在のピクチャの左上ルーマサンプルに対する現在のルーマ予測ブロックの左上サンプルのルーマロケーション(xP,yP)、
−ルーマ予測ブロックの幅および高さを指定する変数nPbWおよびnPbH、
−参照インデックスrefIdxLX(Xは0または1である)[削除:「.」]、
−変数mergeTMVP、
このプロセスの出力は以下の通りである。
−動きベクトル予測mvLXCol、
−利用可能性フラグavailableFlagLXCol。
関数RefPicOrderCnt(picX,refIdx,LX)は、ピクチャpicXの参照ピクチャリストLXからのインデックスrefIdxをもつ参照ピクチャのピクチャ順序カウントPicOrderCntValを戻し、次のように指定される。
slice_type、collocated_from_l0_flagおよびcollocated_ref_idxの値に応じて、コロケートパーティションを含んでいるピクチャを指定する変数colPicは次のように導出される。
−slice_typeがBに等しく、collocated_from_l0_flagが0に等しい場合、変数colPicは、RefPicList1[collocated_ref_idx]によって指定されるコロケートパーティションを含んでいるピクチャを指定する。
−それ以外の場合(slice_typeがBに等しく、collocated_from_l0_flagが1に等しく、またはslice_typeがPに等しい)、変数colPicは、RefPicList0[collocated_ref_idx]によって指定されるような同じ位置にある区分を含むピクチャを指定する。
変数colPuとその位置(xPCol,yPCol)とは、以下の順序付きステップで導出される
1. 変数colPuは次のように導出される。
−(yP>>Log2CtbSizeY)が(yPRb>>Log2CtbSizeY)に等しい場合、現在のルーマ予測ブロックの右下ルーマロケーションの水平成分は次のように定義される。
変数colPbは、colPic内部の((xPRb>>4)<<4,(yPRb>>4)<<4)によって与えられる修正されたロケーションを対象とするルーマ予測ユニットとして設定される。
−それ以外の場合((yP>>Log2CtbSizeY)が(yPRb>>Log2CtbSizeY)に等しくない)、colPbは「利用不可能である」とマークされる。
2. colPbがイントラ予測モードでコーディングされるか、またはcolPbが「利用不可能である」とマークされるとき、以下のことが適用される。
−現在の予測ブロックの中心ルーマロケーションは次のように定義される。
−変数colPbは、colPic内部の((xPCtr>>4)<<4、(yPCtr)>>4)<<4)によって与えられる修正されたロケーションを対象とするルーマ予測ブロックとして設定される。
3. (xPCol,yPCol)は、colPicの左上ルーマサンプルに対するcolPbの左上サンプルに等しくなるように設定される。
refIdxLXは、以下の条件のすべてが真である場合にrefIdxLXAになるように設定される。
−mergeTMVPは1に等しい。
−LongTermRefPic(currPic,refIdxLX,ListX)がLongTermRefPic(colPic,refIdxCol,listCol)に等しくない。
−refIdxLXAは0よりも大きい。
変数mvLXColおよびavailableFlagLXColは、次のように導出される。
−次の条件のうちの1つまたは複数が真である場合、mvLXColの両方の成分は0に等しくなるように設定され、availableFlagLXColは0に等しくなるように設定される。
−colPbがイントラ予測モードでコーディングされる。
−colPuが「利用不可能である」とマークされる。
−slice_temporal_mvp_enable_flagが0に等しい。
−LongTermRefPic(currPic,refIdxLX,ListX)がLongTermRefPic(colPic,refIdxCol,listCol)に等しくない。
−それ以外の場合、動きベクトルmvCol、参照インデックスrefIdxCol、および参照リスト識別子listColは次のように導出される。
−PredFlagL0[xPCol][yPCol]が0に等しい場合、mvCol、refIdxCol、およびlistColは、それぞれ、MvL1[xPCol][yPCol]、RefIdxL1[xPCol][yPCol]、およびL1に等しくなるように設定される。
−それ以外の場合(PredFlagL0[xPCol][yPCol]が1に等しい)、以下のことが適用される。
−PredFlagL1[xPCol][yPCol]が0に等しい場合、mvCol、refIdxCol、およびlistColは、それぞれ、MvL0[xPCol][yPCol]、RefIdxL0[xPCol][yPCol]、およびL0に等しくなるように設定される。
−それ以外の場合(PredFlagL1[xPCol][yPCol]が1に等しい)、以下の割当てが行われる。
−あらゆる参照ピクチャリスト中のあらゆるピクチャpicのPicOrderCnt(pic)がPicOrderCntVal以下である場合、mvCol、refIdxCol、およびlistColは、MvLX[xPCol][yPCol]、RefIdxLX[xPCol][yPCol]、およびLXに等しくなるように設定され、それぞれ、Xは、このプロセスが呼び出されるXの値である。
−それ以外の場合(少なくとも1つの参照ピクチャリスト中の少なくとも1つのピクチャpicのPicOrderCnt(pic)がPicOrderCntValよりも大きい)、mvCol、refIdxColおよびlistColは、それぞれ、MvLN[xPCol][yPCol]、RefIdxLN[xPCol][yPCol]およびLNに等しくなるように設定され、Nは、collocated_from_l0_flagの値である。
−変数availableFlagLXColは1に等しく設定され、次のことが適用される。
−RefPicListX[refIdxLX]が長期参照ピクチャである場合、またはPicOrderCnt(colPic)−RefPicOrderCnt(colPic,refIdxCol,listCol)がPicOrderCntVal−PicOrderCnt(RefPicListX[refIdxLX])に等しい場合、
−それ以外の場合、mvLXColは、以下で指定されるような動きベクトルmvColのスケーリングされたバージョンとして導出される。
ここにおいて、tdおよびtbは、次のように導出される。
1.1.1HEVC WD9とともに適用すべき代替実装形態
[0127]refIdxLXA(Xは0または1である)は、上記の例で説明するように導出されるかまたは他の方法でシグナリング/設定されてもよい。修正は、追加についてはイタリック体で示され、または削除については括弧に入れられ、「削除」の後に続く。以下の例は、上述の例と同様であり、時間的動きベクトル予測についての内容の一部が更新されている。
8.5.3.1.7 時間的ルーマ動きベクトル予測のための導出プロセス
このプロセスへの入力は以下の通りである。
−現在のピクチャの左上ルーマサンプルに対する現在のルーマ予測ブロックの左上サンプルのルーマロケーション(xP,yP)、
−ルーマ予測ブロックの幅および高さを指定する変数nPbWおよびnPbH、
−変数mergeTMVP、
−参照インデックスrefIdxLX(ここにおいて、Xは0または1である)。
このプロセスの出力は以下の通りである。
−動きベクトル予測mvLXCol、
−利用可能性フラグavailableFlagLXCol。
変数currPbは、ルーマロケーション(xP,yP)における現在のルーマ予測ブロックを指定する。
変数mvLXColおよびavailableFlagLXColは次のように導出される。
−slice_temporal_mvp_enable_flagが0に等しい場合、mvLXColの両方の成分は0に等しくなるように設定され、availableFlagLXColは0に等しくなるように設定される。
−それ以外の場合、以下の順序のステップが適用される。
1. slice_type、collocated_from_l0_flag、およびcollocated_ref_idxの値に応じて、コロケートパーティションを含んでいるピクチャを指定する変数colPicは次のように導出される。
−slice_typeがBに等しく、collocated_from_l0_flagが0に等しい場合、変数colPicは、RefPicList1[collocated_ref_idx]によって指定されるコロケートパーティションを含んでいるピクチャを指定する。
−それ以外の場合(slice_typeがBに等しく、collocated_from_l0_flagが1に等しく、またはslice_typeがPに等しい)、変数colPicは、RefPicList0[collocated_ref_idx]によって指定されるようなコロケートパーティションを含むピクチャを指定する。
2. 右下連結動きベクトルは次のように導出される。
−(yP>>Log2CtbSizeY)が(yPRb>>Log2CtbSizeY)に等しく、xPRbがpic_width_in_luma_samplesより小さい場合、以下のことが適用される。
−変数colPuは、colPicによって指定される連結ピクチャ内部の((xPRb>>4)<<4、(yPRb)>>4)<<4)によって与えられる修正されたロケーションをするルーマ予測ブロックを指定する。
−ルーマロケーション(xPCol,yPCol)は、colPicによって指定される連結ピクチャの左上ルーマサンプルに対してcolPbによって指定される連結ルーマ予測ブロックの左上サンプルに等しくなるように設定される。
−サブクローズ8.5.3.1.8において指定されるような連結動きベクトルのための導出プロセスは、currPb、colPic、colPb、(xPCol,yPCol)、mergeTMVP、およびrefIdxLXを入力として呼び出され、出力がmvLXColおよびavailableFlagLXColに割り当てられる。
−それ以外の場合、mvLXColの両方の成分が0に等しくなるように設定され、availableFlagLXColが0に等しくなるように設定される。
3. availableFlagLXColが0に等しいとき、中央連結動きベクトルは次のように導出される。
−変数colPbは、colPic内部の((xPCtr>>4)<<4、(yPCtr)>>4)<<4)によって与えられる修正されたロケーションを対象とするルーマ予測ブロックを指定する。
−ルーマロケーション(xPCol,yPCol)は、colPicによって指定される連結ピクチャの左上ルーマサンプルに対してcolPbによって指定される連結ルーマ予測ブロックの左上サンプルに等しくなるように設定される。
−サブクローズ8.5.3.1.8において指定されるような連結動きベクトルのための導出プロセスは、currPb、colPic、colPb、(xPCol,yPCol)、mergeTMVP、およびrefIdxLXを入力として呼び出され、出力がmvLXColおよびavailableFlagLXColに割り当てられる。
8.5.3.1.8 連結動きベクトルのための導出プロセス
このプロセスへの入力は以下の通りである。
−現在の予測ブロックを指定するcurrPb、
−連結ピクチャを指定するcolPic、
−colPicによって指定される連結ピクチャ内部の連結予測ブロックを指定するcolPb、
−colPicによって指定される連結ピクチャの左上ルーマサンプルに対してcolPbによって指定される連結ルーマ予測ブロックの左上サンプルを指定するルーマロケーション(xPCol,yPCol)、
−変数mergeTMVP、
−参照インデックスrefIdxLX(ここにおいて、Xは0または1である)。
このプロセスの出力は以下の通りである。
−動きベクトル予測mvLXCol、
−利用可能性フラグavailableFlagLXCol。
変数currPicは現在のピクチャを指定する。
アレイpredFlagLXCol[x][y]、mvLXCol[x][y]、およびrefIdxLXCol[x][y]は、それぞれcolPic、PredFlagLX[x][Y]、MvLX[x][y]、およびRefIdxLX[x][y]によって指定される連結ピクチャの対応するアレイに等しくなるように設定され、Xはこのプロセスを呼び出す目的であるXの値である。
変数mvLXColおよびavailableFlagLXColは次のように導出される。
−colPbがイントラ予測モードでコーディングされる場合、mvLXColの両方の成分は0に等しくなるように設定され、availableFlagLXColは0に等しくなるように設定される。
−それ以外の場合、動きベクトルmvCol、参照インデックスrefIdxCol、および参照リスト識別子listColは次のように導出される。
−predFlagL0Col[xPCol][yPCol]が0に等しい場合、mvCol、refIdxCol、およびlistColは、それぞれ、mvL1Col[xPCol][yPCol]、refIdxL1Col[xPCol][yPCol]、およびL1に等しくなるように設定される。
−それ以外の場合、predFlagL0Col[xPCol][yPCol]が1に等しくpredFlagL1Col[xPCol][yPCol]が0に等しい場合、mvCol、refIdxCol、およびlistColは、それぞれ、mvL0Col[xPCol][yPCol]、refIdxL0Col[xPCol][yPCol]、およびL0に等しくなるように設定される。
−場合によっては(predFlagL0Col[xPCol][yPCol]が1に等しくpredFlagL1Col[xPCol][yPCol]が1に等しい場合)、以下の割当てが行われる。
−DiffPicOrderCnt(currPic,pic)が現在スライスのあらゆる参照ピクチャリスト内のあらゆるピクチャpicについて0以下である場合、mvCol、refIdxCol、およびlistColは、それぞれ、mvLX[xPCol][yPCol]、refIdxLX[xPCol][yPCol]、およびLXに等しくなるように設定され、Xは、このプロセスを呼び出す目的であるXの値である。
−それ以外の場合、mvCol、refIdxCol、およびlistColは、それぞれ、mvLNCol[xPCol][yPCol]、refIdxLNCol[xPCol][yPCol]、およびLNに等しくなるように設定され、Nはcollocated_from_10_flagの値である。
変数mvLXColおよびavailableFlagLXColは次のように導出される。
−[削除:「もしも」]LongTermRefPic(currPic,currPb,refIdxLX,LX)がLongTermRefPic(colPic,colPb,refIdxCol,listCol)の場合、以下のことが適用される。
−refIdxLXAが0よりも大きく、mergeTMVPが1に等しい場合、refIdxLXはrefIdxLXAに設定され、availableFlagLXColは1に設定される。
−それ以外の場合、mvLXColの両方の成分が0に等しくなるように設定され、availableFlagLXColが0に等しくなるように設定される。
−[削除:「それ以外の場合、」]変数availableFlagLXColが1に等しくなるように設定されると、refPicListCol[refIdxCol]は、ピクチャcolPic内に予測ブロックcurrPicを含むスライスの参照ピクチャリストlistCol内に参照インデックスrefIdxColを有するピクチャになるように設定される。
−RefPicListX[refIdxLX]が長期参照ピクチャであるかまたはcolPocDiffがcurrPocDiffに等しい場合、mvLXColは次のように導出される。
−それ以外の場合、mvLXColは、以下で指定されるような動きベクトルmvColのスケーリングされたバージョンとして導出される。
ここにおいて、tdおよびtbは、次のように導出される。
[0128]3−ビューの場合のテクスチャビューコーディングに関するアンカーと比較して提案された方法のコーディング利得について以下で説明する。表1は、HTM4.0アンカーに対する提案された方法の平均コーディング利得を示す。「ビデオのみ」によって示される列は、ビットレートが3つのテクスチャビューを含むビットストリームの総ビットレートを表し、PSNR値が復号された3つのテクスチャビューの平均PSNR値であるすべての3つのテクスチャビューのコーディング利得を列挙している。「ビデオ1」および「ビデオ2」に関するビットレート節約もこの表に列挙されている。「ビデオ0」がベースビューに対応し、一方、「ビデオ1」および「ビデオ2」が非ベースビュー(テクスチャのみ)を示すことに留意されたい。
[0129]表1に示すように、すべてのテクスチャビューに関する全体的な平均ビットレート節約は約0.94%であり、非ベースビューの節約は約2.5%である。
[0130]図7は、本開示の技法による、ビデオデータのブロックを符号化する例示的な方法を示すフローチャートである。説明の目的で、図7について図1および図2のビデオエンコーダ20に関して説明する。しかしながら、図7の方法がビデオコードを符号化するための他のデバイスによって実行されてよいことを理解されたい。同様に、図7の方法の特定のステップは、異なる順序で、または並行して実行され得る。
[0131]図7の例には示されていないが、ビデオエンコーダ20は最初に、現在のブロックの動きベクトルをマージモードを使用して符号化すべきであると決定してもよい。ビデオエンコーダ20は、現在のブロックに空間的に隣接するブロックならびに別のピクチャにおける現在のブロックに対してコロケートされたブロックの動きベクトルを表す1組の候補動きベクトル予測子を構成してもよい。コロケートされたブロックの動きベクトルは、時間的動きベクトル予測子(TMVP)の例を表す。たとえば、図6に示すように、現在のブロックはブロック104に対応してもよく、コロケートされたブロックはブロック110に対応してもよく、動きベクトル116はブロック104に関するTMVPの例を表してもよい。図7の例では、ビデオエンコーダ20がマージモードを使用して現在のブロックの動きベクトルを符号化するときに現在のブロックに関するTMVPを選択すると仮定される。
[0132]したがって、ビデオエンコーダ20は、現在のブロックのコロケートされたブロックを決定してもよい(150)。ビデオエンコーダ20はさらに、コロケートされたブロックの動きベクトルの参照インデックスを決定してもよい(152)。コロケートされたブロックの動きベクトルの参照インデックスは、コロケートされたブロックの動きベクトルが指し示す参照ピクチャに対応する。この例では、動きベクトルが指し示す参照ピクチャが、長期参照ピクチャとして特徴付けされ得るビュー間参照ピクチャであるように、コロケートされたブロックの動きベクトルは差異動きベクトル、すなわち、ビュー間動きベクトルであると仮定される。したがって、コロケートされたブロックの動きベクトルの参照インデックスは、コロケートされたブロックを含むピクチャと同じピクチャ順序カウント(POC)を有する参照ピクチャに対応してもよい。
[0133]同じPOC値を有するピクチャ間でビュー間予測が有効化されるので、本開示の技法がなければ、コロケートされたブロックの動きベクトルは概して、マージモードの動きベクトルコーディングには利用不可能と見なされる。すなわち、コロケートされたブロックの動きベクトルが現在のブロックの動きベクトルとして厳密なマージモードで使用された場合、現在のブロックの動きベクトルは、現在のブロックを含む現在のピクチャとは異なるPOC値を有する参照ピクチャの参照ブロックを参照する。
[0134]しかしながら、本開示の技法を使用すると、ビデオエンコーダ20は追加の参照インデックスの所定の値を得ることができる(154)。たとえば、ビデオエンコーダ20は、ビデオコーディング規格またはビデオコーディング規格の拡張規格に基づいて所定の値を決定しても、所定の値を割り当てても、所定の値をユーザから受け取っても、または場合によっては所定の値を決定してもよい。ビデオエンコーダ20は次いで、追加の参照インデックスの値を決定してもよく(156)、すなわち、所定の値に等しくなるように決定してもよい。たとえば、所定の値は0(ゼロ)または−1(負の1)に等しくてもよい。ビデオエンコーダ20は、いくつかの例では、たとえば、現在のブロックを含むスライスのスライスヘッダ、現在のブロックを含むピクチャのピクチャパラメータセット(PPS)、ピクチャを含むシーケンスのシーケンスパラメータセット(SPS)、および/またはビデオパラメータセット(VPS)内の所定の値を表すデータを符号化してもよい。
[0135]ビデオエンコーダ20は次いで、追加の参照インデックスを使用して現在のブロックの動きベクトル(MV)を構成してもよい(158)。一例では、ビデオエンコーダ20は、現在のブロックの動きベクトルに参照ピクチャリスト、水平動成分、および垂直動成分などのTMVPの動きパラメータを継承させてもよい。概して、動きベクトルは水平動成分および垂直動成分によって定義されてもよく、ここにおいて、水平動成分は、現在のブロックの位置に対する参照ブロックの水平位置を定義し、垂直動成分は、現在のブロックの位置に対する参照ブロックの垂直位置を定義する。
[0136]同様に、参照ピクチャリストは潜在的な参照ピクチャのリストである。参照インデックスは、参照ピクチャリストにおいて使用すべき実際の参照ピクチャを識別する。従来のマージモードでは、参照インデックスおよび参照ピクチャリストは、動きベクトル予測子から継承される。しかしながら、本開示の技法によれば、参照ピクチャリストは、動きベクトル予測子から継承されてもよいが、所定の値と等しい値を有する追加の参照インデックスが現在のブロックの動きベクトルを構成するのに使用されてもよい。したがって、現在のブロックの構成された動きベクトルは、TMVPの参照ピクチャリスト識別子と等しい参照ピクチャリスト識別子と、TMVPの水平動成分と等しい水平動成分と、TMVPの垂直動成分と等しい垂直動成分と、所定の値と等しい参照インデックス(すなわち、追加の参照インデックス)とを有してもよい。
[0137]ビデオエンコーダ20は、構成された動きベクトルを使用して現在のブロックの予測ブロックを算出してもよい(160)。たとえば、ビデオエンコーダ20は、所定の値および追加の参照インデックスに等しくてもよい、構成された動きベクトルの参照ピクチャリストおよび構成された動きベクトルの参照インデックスを使用して参照ピクチャを識別してもよい。ビデオエンコーダ20は次いで、参照ブロックを、構成された動きベクトルの水平動成分によって水平方向にシフトされ構成された動きベクトルの垂直動成分によって垂直方向にシフトされた現在のブロックの位置に位置していると特定してもよい。予測ブロックを算出することは、動きベクトルが分数ピクセル精度を有する場合に補間をさらに含んでもよい。
[0138]ビデオエンコーダ20は、次いで、予測ブロックを使用して現在のブロックを符号化してもよい(162)。たとえば、ビデオエンコーダ20は、現在のブロックの元のブロックと予測ブロックとの間のピクセルごとの差を使用して残差ブロックを算出し得る。ビデオエンコーダ20はさらに、残差ブロックを変換して量子化し、次いで得られた量子化された変換係数をエントロピー符号化してもよい。ビデオエンコーダ20はさらに、現在のブロックの動きベクトル予測子(MVP)インデックスを符号化してもよい(164)。この例では、MVPインデックスは、1組の動きベクトル予測子候補内のTMVP候補に対応する。同様に、ビデオエンコーダ20は、マージモードが現在のブロックの動きベクトルをコーディングするのに使用され、TMVPがマージモードに関して有効化されることを示すデータを符号化してもよい。
[0139]このように、図7の方法は、現在の動きベクトルの候補動きベクトル予測子が参照する参照ピクチャを表す第1の目標参照インデックスを決定することと、候補動きベクトル予測子に関して、現在の動きベクトルの時間的動きベクトル予測(TMVP)の間に、所定の値と等しい追加の目標参照インデックスの値を決定することと、追加の参照インデックスの値に少なくとも部分的に基づいて現在の動きベクトルをコーディングする(すなわち、この例では符号化する)こととを含む方法の例を表す。特に、第1の目標参照インデックスは、コロケートされたブロックの動きベクトルに対応するTMVPの参照インデックスに対応してもよい。候補動きベクトル予測子はTMVPに対応してもよい。現在の動きベクトルは、現在のブロックの動きベクトルに対応してもよい。
[0140]図8は、本開示の技法による、ビデオデータのブロックを復号する例示的な方法を示すフローチャートである。説明の目的で、図8について図1および図3のビデオエンコーダ30に関して説明する。しかしながら、図8の方法がビデオデータを復号するための他のデバイスによって実行されてもよいことを理解されたい。同様に、図8の方法の特定のステップは、異なる順序で、または並行して実行され得る。
[0141]最初に、ビデオデコーダ30は、現在のブロックの動きベクトル予測子(MVP)インデックスを復号してもよい(180)。さらに、ビデオデコーダ30は、現在のブロックの動きベクトルをマージモードを使用して復号すべきであり、マージモードについて時間的動きベクトル予測が有効化されることを示すデータを復号してもよい。ビデオデコーダ30は、復号されたMVPインデックスが現在のブロックに対してコロケートされたブロック、すなわち、現在のブロックと同じ位置または実質的に同じ位置を有するが異なるピクチャ内に存在するブロックに対応すると決定してもよい(182)。言い換えれば、MVPインデックスは、時間的動きベクトル予測子(TMVP)に対応してもよい。
[0142]ビデオデコーダ30は次いで、コロケートされたブロックの動きベクトルの参照インデックスを決定してもよい(184)。ビデオデコーダ30は、追加の参照インデックスの所定の値を得てもよい(186)。たとえば、ビデオデコーダ30は、現在のブロック、PPS、SPS、VPS、または他のそのようなシグナリングデータを含むスライスのスライスヘッダから所定の値を決定してもよい。ビデオデコーダ30は次いで、所定の値と等しい追加の参照インデックスの値を決定してもよい(188)。
[0143]ビデオデコーダ30は次いで、追加の参照インデックスを使用して現在のブロックの動きベクトル(MV)を構成してもよい(190)。図7に関して説明したように、ビデオデコーダ30は、現在のブロックの動きベクトルに参照ピクチャリスト識別子、水平動成分、および垂直動成分を継承させるが、現在のブロックの参照ブロックを見つけるべきである参照ピクチャを決定するために参照ピクチャリスト識別子によって識別される参照ピクチャリストのインデックスとして追加の参照インデックスを使用させてもよい。
[0144]したがって、ビデオデコーダ30は、構成された動きベクトルを使用して現在のブロックの予測ブロックを算出するために構成された動きベクトルを使用してもよい(192)。たとえば、この場合も、上述のように、水平動成分および垂直動成分は、現在のブロックの位置に対する参照ピクチャ内の参照ブロックの位置を定義することができる。この場合も、ビデオデコーダ30は、動きベクトルがサブピクセル精度を有する場合にピクセル補間を実行してもよい。
[0145]ビデオデコーダ30は次いで、予測ブロックを使用して現在のブロックを復号してもよい(194)。たとえば、ビデオデコーダ30は、ビットストリームから量子化された変換係数を復号してもよい。ビデオデコーダ30は次いで、現在のブロックの残差ブロックを再生するために係数を逆量子化し、逆変換し得る。次に、ビデオデコーダ30は、現在のブロックを再構成するために予想ブロックと残差ブロックをピクセルごとに組み合わせてもよい。
[0146]このように、図8の方法は、現在の動きベクトルの候補動きベクトル予測子が参照する参照ピクチャを表す第1の目標参照インデックスを決定することと、候補動きベクトル予測子に関して、現在の動きベクトルの時間的動きベクトル予測(TMVP)の間に、所定の値と等しい追加の目標参照インデックスの値を決定することと、追加の参照インデックスの値に少なくとも部分的に基づいて現在の動きベクトルをコーディングする(すなわち、この例では復号する)こととを含む方法の例を表す。
[0147]例によっては、本明細書で説明された技法のうちいずれかの、いくつかの行為またはイベントは、異なる順番で実行される可能性があり、追加され、統合され、または完全に除外され得る(たとえば、すべての説明された行為またはイベントが、本技法の実施のために必要であるとは限らない)ことを認識されたい。さらに、いくつかの例では、行為またはイベントは、連続的にではなく、同時に、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを通じて実行され得る。
[0148]1つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されてよく、あるいは、コンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行されてよい。コンピュータ可読媒体は、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を支援する、任意の媒体を含むデータ記憶媒体または通信媒体などの有形媒体に対応するコンピュータ可読記憶媒体を含み得る。このようにして、コンピュータ可読媒体は、一般に、(1)非一時的である有形コンピュータ可読記憶媒体、あるいは(2)信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明された技法の実装のための命令、コードおよび/またはデータ構造を取り出すために、1つまたは複数のコンピュータあるいは1つまたは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
[0149]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、あるいは、命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用されコンピュータによってアクセスされ得る、任意の他の媒体を備え得る。同様に、いかなる接続も適切にコンピュータ可読媒体と称される。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザディスク(disc)(登録商標)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびブルーレイディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
[0150]命令は、1つまたは複数のデジタル信号プロセッサ(DSP)などの1つまたは複数のプロセッサ、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、あるいは他の等価な集積回路またはディスクリート論理回路によって実行され得る。したがって、本明細書で使用される「プロセッサ」という用語は、前述の構造、または本明細書で説明される技法の実装に好適な他の構造のいずれかを指す。加えて、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成された専用のハードウェアおよび/またはソフトウェアモジュール内で与えられてよく、あるいは複合コーデックに組み込まれてよい。また、本技法は、1つまたは複数の回路または論理要素中で完全に実装され得る。
[0151]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)、またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示される技法を実行するように構成されたデバイスの機能的態様を強調するために、様々なコンポーネント、モジュール、またはユニットが説明されたが、それらのコンポーネント、モジュール、またはユニットは、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上で説明されたように、様々なユニットが、好適なソフトウェアおよび/またはファームウェアとともに、上で説明された1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられてよく、または相互動作ハードウェアユニットの集合によって与えられてよい。
[0152]様々な例が説明されてきた。これらおよび他の例は以下の特許請求の範囲内に入る。