[0018]概して、本開示は、マルチレイヤビデオコーディングのために有益であり得る、ビデオコーディングのためのピクチャ順序カウント(POC)値設計について説明する。本開示は、マルチレイヤビデオコーディングにおけるPOC値のシグナリングおよび導出のための、様々な設計改良について説明する。しかしながら、本技法は、概して、マルチレイヤビデオコーディングに関して説明されるが、本開示の技法は、シングルレイヤビデオコーディングにも適用され得る。
[0019]POC値は、ピクチャの表示順序を示し得、概して、ピクチャを識別するために使用され得る。たとえば、0のPOC値を有するピクチャ(すなわち、0に等しいPOC値を有するピクチャ)は、1のPOC値を有するピクチャより前に表示される。現在ピクチャのブロックが参照ピクチャに対してインター予測されるとき、参照ピクチャは、参照ピクチャのためのPOC値を使用して識別され得る。より詳細には、参照ピクチャリスト中に含まれるべき参照ピクチャのためのPOC値が、シーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)などのパラメータセット、および/またはブロックに対応するスライスヘッダにおいてシグナリングされ得る。このようにして、ビデオエンコーダは、参照ピクチャリスト中の参照ピクチャの位置に対応する、参照ピクチャリストへのインデックスをシグナリングすることによって、参照ピクチャを識別し得、ビデオデコーダは、(POC値に基づいて)参照ピクチャリストを構築することと、参照ピクチャリスト中の参照ピクチャの位置を識別するために、参照インデックスを使用することとによって、参照ピクチャを識別し得る。
[0020]POC値は、最下位ビット(LSB)と最上位ビット(MSB)とからなり得る。コーディング中にピクチャのPOC値を無制限に増加させるのではなく、ピクチャのPOC値は、0に等しくなるように周期的にリセットされ得る。POC値は、典型的に、瞬時デコーダリフレッシュ(IDR)ピクチャについてリセットされる。加えて、ビデオコーダは、POCリセットに関連付けられた現在ピクチャの前に処理され、復号ピクチャバッファ(DPB)に記憶されている、ピクチャのPOC値をデクリメントし得る。デクリメントされた参照ピクチャのPOC値は、そのようなピクチャの適切な出力順序を維持するために、負値を有し得る。
[0021]マルチレイヤビデオコーディング(たとえば、マルチビュービデオコーディング、スケーラブルビデオコーディングなど)では、DPBは「サブDPB」に区分され得、ビデオデータの各レイヤが、DPBの別々に管理されたサブDPBに割り当てられる。ビュー構成要素は、(表示順序または出力順序に関して)特定の時間における特定のレイヤまたはビューのための符号化ピクチャを備え得る。アクセスユニットは、概して、共通の時間インスタンスのためのすべてのビュー構成要素(たとえば、すべてのネットワークアブストラクションレイヤ(NAL)ユニット)を含むデータのユニットである。したがって、特定の時間インスタンスのためのアクセスユニットは、それぞれのサブDPBからのそれぞれのビュー構成要素を含み得る。アクセスユニットのビュー構成要素は、典型的には、一緒に出力される(すなわち、実質的に同時に出力される)ように意図されており、その場合、ピクチャを出力することは、概して、DPBからピクチャを転送すること(たとえば、DBPから外部メモリにピクチャを記憶すること、DPBからディスプレイへピクチャを送ること、DPBからピクチャを除去することなど)を伴う。
[0022]ビデオコーダは、「出力のために必要とされる」および「参照のために使用されない」とマークされているピクチャをDPBから出力するために、出力およびバンピングプロセスを使用し得る。場合によっては、ピクチャ出力プロセスは、(1)ピクチャの復号前であるが、ピクチャの最初のスライスのスライスヘッダをパースした後と、(2)ピクチャの最後の復号ユニットがコード化ピクチャバッファから除去されるときとを含めて、ピクチャごとに2回呼び出され得る。バンピングプロセスが呼び出されるとき、このプロセスは、選択されたアクセスユニットに属するすべてのピクチャを出力する。
[0023](たとえば、後述されるような)既存のPOC設計は、最適化されないことがある。たとえば、場合によっては、POC値をデクリメントすることは、レイヤ固有のプロセスであり得る。したがって、以下の例で説明されるように、レイヤのピクチャのPOC値またはPOC最上位ビット(MSB)が、そのレイヤのピクチャの復号中にリセットされるとき、レイヤのためのサブDPB内のより早いピクチャ(たとえば、現在コーディングされているピクチャより前に処理され、サブDPBに記憶されているピクチャ)のPOC値は、他のサブDPB内のより早いピクチャのPOC値とクロスレイヤ整合されないことがある。クロスレイヤ整合は、たとえば、アクセスユニットのピクチャが同時にまたはほぼ同時に出力されるように、アクセスユニットの各ピクチャが同じPOC値を有するときに発生する。既存のPOC設計では、上位レイヤ(たとえば、相対的により大きいレイヤ識別子を有するレイヤ)におけるピクチャのPOC値は、ベースレイヤのピクチャを復号するまで更新されないことがある。このようにしてPOCまたはPOC MSBを更新することは、DPB内で復号ピクチャを包含するアクセスユニットごとのPOC値のクロスレイヤ整合を必要とする、バンピングプロセスを通したピクチャ出力についての問題を生じ得る。
[0024]説明のための一例では、マルチレイヤシーケンスが3つのレイヤ(たとえば、レイヤA、B、およびC)を有すると仮定する。加えて、特定のアクセスユニットが、そのためのPOCリセットが実行されるピクチャを含むと仮定する。この例では、ビデオデコーダは、(たとえば、POCリセットを実行するための指示をビットストリーム中で受信すると)アクセスユニットのレイヤAピクチャのPOC値をリセットし得る。ビデオデコーダはまた、適切な出力順序を維持するために、レイヤAのためのサブDPBに前に記憶されたレイヤAのピクチャをデクリメントし得る。しかしながら、レイヤAの最初のピクチャを復号する間、および、アクセスユニットのレイヤBピクチャを復号するより前に、レイヤBおよびCのためのそれぞれのサブDPBに記憶されているレイヤBおよびCのためのピクチャのPOC値は、レイヤAのサブDPBに記憶されたピクチャのPOC値と不整合に(クロスレイヤ整合されなく)なる。すなわち、アクセスユニットのレイヤBピクチャおよびレイヤCピクチャはまだリセットされていないので、レイヤBおよびCの各々のそれぞれのサブレイヤのPOC値もまだデクリメントされていない。アクセスユニットのピクチャは、出力されるより前にクロスレイヤ整合されるべきであるので、そのような不整合は、ピクチャが不適切な順序でDPBから出力されることを引き起こし得る。
[0025]本開示で説明されるPOC値設計は、様々な態様を含み、そのいずれかまたはすべては、単独または任意の組合せで実装され得る。本開示の技法は、上記で説明された問題を克服し得る。一例では、ビデオコーダ(たとえば、ビデオエンコーダおよびビデオデコーダ)は、それにおいてPOCリセットが実行されるアクセスユニットの初期ピクチャを復号するより前に、DPBに記憶された(すべてのレイヤの)すべてのピクチャのPOC値をデクリメントするように構成され得る。たとえば、ビデオコーダは、POCリセットを必要とする各アクセスユニットの開始において、1回、DPB内でコーディング順序においてより早いピクチャ(すなわち、すべてのサブDPBのための復号順序において現在ピクチャに先行するすべてのピクチャ)に、POCデクリメントプロセスを適用し得る。言い換えれば、ビデオコーダは、すべてのサブDPB内でコーディング順序において現在ピクチャに先行するすべてのピクチャのPOC値が、POCデクリメントプロセスの単一の呼出しに基づいてデクリメントされるように、POCリセットを必要とする各アクセスユニットの開始において、1回、POCデクリメントプロセスを適用し得る。POCデクリメントプロセスは、アクセスユニットのために受信された最初のピクチャの復号前であるが、そのピクチャの最初のスライスのスライスヘッダ情報のパースおよび復号後に呼び出され得る。このようにして、DPBに記憶された(すなわち、すべてのサブDPBのための)ピクチャのPOC値は、アクセスユニットのピクチャをコーディングするときに整合されたままであり得、それによって、DPBのピクチャが適切な順序で出力されることが可能になる。
[0026]本開示の他の技法は、POC値をシグナリングするための技法を含む。たとえば、いくつかのPOC設計に関する別の潜在的な問題は、追加のPOC最下位ビット(LSB)情報のシグナリングに関する。場合によっては、以下でより詳細に説明されるように、POCアンカーピクチャのPOC LSBは、ベースレイヤにおけるPOCアンカーピクチャがIDRピクチャであるとき、シグナリングされない。ベースレイヤにおけるIDRピクチャは、DPB内のより早いピクチャ(たとえば、コーディング順序において現在コーディングされているピクチャに先行するピクチャ)のPOC値をデクリメントするために使用される値を導出するための情報を包含していないので、そのような場合にPOC LSBをシグナリングしないことは、問題を生じ得る。
[0027]本開示の態様によれば、POCアンカーピクチャのPOC LSBをシグナリングするための条件が更新され得る。たとえば、本開示の態様によれば、ビデオエンコーダは、(以下でより詳細に説明されるように)2に等しいpoc_reset_idcシンタックス要素を有するベースレイヤIDRピクチャのための追加のPOC LSBを示すデータをシグナリングし得る(および、ビデオデコーダは復号し得る)。
[0028]図1は、本開示の技法による、POC値を管理するための技法を利用し得る、例示的なビデオ符号化および復号システム10を示すブロック図である。図1に示されているように、システム10は、宛先デバイス14によって後で復号されるべき符号化ビデオデータを与えるソースデバイス12を含む。具体的には、ソースデバイス12は、コンピュータ可読媒体16を介して宛先デバイス14にビデオデータを与える。ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、いわゆる「スマート」パッド、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスのいずれかを備え得る。場合によっては、ソースデバイス12および宛先デバイス14はワイヤレス通信に対応し得る。
[0029]宛先デバイス14は、コンピュータ可読媒体16を介して、復号されるべき符号化ビデオデータを受信し得る。コンピュータ可読媒体16は、ソースデバイス12から宛先デバイス14に符号化ビデオデータを移動することが可能な、任意のタイプの媒体またはデバイスを備え得る。一例では、コンピュータ可読媒体16は、ソースデバイス12が符号化ビデオデータを宛先デバイス14にリアルタイムで直接送信することを可能にするための通信媒体を備え得る。符号化ビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先デバイス14に送信され得る。通信媒体は、無線周波(RF)スペクトルまたは1つもしくは複数の物理伝送線路など、任意のワイヤレス通信媒体またはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークのような、パケットベースのネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス12から宛先デバイス14への通信を容易にするために有用であり得る任意の他の機器を含み得る。
[0030]いくつかの例では、符号化データは、出力インターフェース22から記憶デバイスへ出力され得る。同様に、符号化データは、入力インターフェースによって記憶デバイスからアクセスされ得る。記憶デバイスは、ハードドライブ、Blu−ray(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、揮発性もしくは不揮発性のメモリ、または符号化ビデオデータを記憶するための任意の他の好適なデジタル記憶媒体など、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれをも含み得る。さらなる例では、記憶デバイスは、ソースデバイス12によって生成された符号化ビデオを記憶し得るファイルサーバまたは別の中間記憶デバイスに対応し得る。宛先デバイス14は、ストリーミングまたはダウンロードを介して、記憶デバイスから記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化ビデオデータを記憶し、その符号化ビデオデータを宛先デバイス14に送信することが可能な任意のタイプのサーバであり得る。例示的なファイルサーバには、ウェブサーバ(たとえば、ウェブサイト用の)、FTPサーバ、ネットワーク接続記憶(NAS)デバイス、またはローカルディスクドライブがある。宛先デバイス14は、インターネット接続を含む、任意の標準のデータ接続を通して符号化ビデオデータにアクセスし得る。これは、ワイヤレスチャネル(たとえば、Wi−Fi(登録商標)接続)、ワイヤード接続(たとえば、DSL、ケーブルモデムなど)、または、ファイルサーバに記憶された符号化ビデオデータにアクセスするために好適である、両方の組合せを含み得る。記憶デバイスからの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはそれらの組合せであり得る。
[0031]本開示の技法は、ワイヤレス応用またはワイヤレス設定に必ずしも限定されるとは限らない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、動的適応ストリーミングオーバーHTTP(DASH:dynamic adaptive streaming over HTTP)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されたデジタルビデオ、データ記憶媒体上に記憶されたデジタルビデオの復号、または他の応用など、様々なマルチメディア応用のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスト、および/またはビデオ電話などの応用をサポートするために、一方向または両方向のビデオ送信をサポートするように構成され得る。
[0032]図1の例では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、出力インターフェース22とを含む。宛先デバイス14は、入力インターフェース28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。本開示によれば、ソースデバイス12のビデオエンコーダ20は、本開示の技法に従って、POC値情報をコーディングするための技法を適用するように構成され得る。他の例では、ソースデバイスおよび宛先デバイスは、他の構成要素または配置を含み得る。たとえば、ソースデバイス12は、外部カメラなどの外部のビデオソース18からビデオデータを受信し得る。同様に、宛先デバイス14は、一体型ディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースをとり得る。
[0033]図1の示されるシステム10は一例にすぎない。本開示の技法による、POC値を管理するための技法は、任意のデジタルビデオ符号化および/または復号デバイスによって実行され得る。一般に、本開示の技法は、ビデオ符号化デバイスによって実行されるが、これらの技法は、通常は「コーデック」と呼ばれるビデオエンコーダ/デコーダによっても実行され得る。その上、本開示の技法は、ビデオプリプロセッサによっても実行され得る。ソースデバイス12および宛先デバイス14は、ソースデバイス12が宛先デバイス14に送信するためのコード化ビデオデータを生成するようなコーディングデバイスの例にすぎない。いくつかの例では、デバイス12、14は、デバイス12、14の各々がビデオ符号化構成要素とビデオ復号構成要素とを含むように実質的に対称的に動作し得る。したがって、システム10は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスト、またはビデオ電話のための、ビデオデバイス12とビデオデバイス14との間の一方向または双方向のビデオ送信をサポートし得る。
[0034]ソースデバイス12のビデオソース18は、ビデオカメラ、以前にキャプチャされたビデオを包含するビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースなどの、ビデオキャプチャデバイスを含み得る。さらなる代替として、ビデオソース18は、ソースビデオとしてコンピュータグラフィックスベースのデータ、または、ライブビデオ、アーカイブされたビデオ、およびコンピュータ生成ビデオの組合せを生成し得る。場合によっては、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、いわゆるカメラ付き電話またはビデオ付き電話を形成し得る。しかしながら、上述されたように、本開示で説明される技法は、一般にビデオコーディングに適用可能であり得、ワイヤレスおよび/またはワイヤードの応用に適用され得る。各場合において、キャプチャされたビデオ、前にキャプチャされたビデオ、またはコンピュータ生成ビデオは、ビデオエンコーダ20によって符号化され得る。次いで、符号化ビデオ情報は、出力インターフェース22によってコンピュータ可読媒体16上に出力され得る。
[0035]コンピュータ可読媒体16は、ワイヤレスブロードキャストもしくはワイヤードネットワーク送信などの一時媒体、またはハードディスク、フラッシュドライブ、コンパクトディスク、デジタルビデオディスク、Blu−rayディスク、もしくは他のコンピュータ可読媒体などの記憶媒体(すなわち、非一時的記憶媒体)を含み得る。いくつかの例では、ネットワークサーバ(図示せず)は、たとえば、ネットワーク送信を介して、ソースデバイス12から符号化ビデオデータを受信し、宛先デバイス14に符号化ビデオデータを与え得る。同様に、ディスクスタンピング設備など、媒体製造設備のコンピューティングデバイスは、ソースデバイス12から符号化ビデオデータを受信し、その符号化ビデオデータを包含しているディスクを生成し得る。したがって、様々な例では、コンピュータ可読媒体16は、様々な形態の1つまたは複数のコンピュータ可読媒体を含むと理解され得る。
[0036]宛先デバイス14の入力インターフェース28は、コンピュータ可読媒体16から情報を受信する。コンピュータ可読媒体16の情報は、ビデオエンコーダ20によって定義され、またビデオデコーダ30によって使用される、ブロックおよび他のコード化ユニット、たとえば、GOPの特性および/または処理を記述するシンタックス要素を含む、シンタックス情報を含み得る。ディスプレイデバイス32は、復号ビデオデータをユーザに表示し、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなどの様々なディスプレイデバイスのうちのいずれかを備え得る。
[0037]ビデオエンコーダ20およびビデオデコーダ30は、それぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、離散論理、ソフトウェア、ハードウェア、ファームウェアまたはそれらの任意の組合せなど、様々な好適なエンコーダ回路のいずれかとして実装され得る。本技法がソフトウェアに部分的に実装されるとき、デバイスは、ソフトウェアに対する命令を好適な非一時的コンピュータ可読媒体に記憶し、本開示の技法を実行するための1つまたは複数のプロセッサを使用してハードウェアにおいてそれらの命令を実行し得る。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダに含まれ得、そのいずれも、それぞれのデバイスにおいて、複合エンコーダ/デコーダ(コーデック)の一部として統合され得る。ビデオエンコーダ20および/またはビデオデコーダ30を含むデバイスは、集積回路、マイクロプロセッサ、および/またはセルラー電話などのワイヤレス通信デバイスを備え得る。
[0038]図1には示されていないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30は、それぞれ、オーディオエンコーダおよびデコーダと統合され得、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理するために、適切なMUX−DEMUXユニット、または他のハードウェアおよびソフトウェアを含み得る。適用可能であれば、MUX−DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに適合し得る。
[0039]本開示は全般に、ビデオエンコーダ20が、ある情報をビデオデコーダ30のような別のデバイスに「シグナリング」することに言及することがある。ただし、ビデオエンコーダ20は、いくつかのシンタックス要素をビデオデータの様々な符号化された部分に関連付けることによって情報をシグナリングし得ることを理解されたい。すなわち、ビデオエンコーダ20は、ビデオデータの様々な符号化された部分のヘッダに、いくつかのシンタックス要素を記憶することによって、データを「シグナリング」し得る。場合によっては、そのようなシンタックス要素は、ビデオデコーダ30によって受信および復号されるより前に、符号化および記憶され得る。したがって、「シグナリング」という用語は、そのような通信がリアルタイムもしくはほぼリアルタイムで行われるか、または、符号化時にシンタックス要素を媒体に記憶し、次いで、この媒体に記憶された後の任意の時間にそのシンタックス要素が復号デバイスによって取り出され得るときなどに行われ得る、ある期間にわたって行われるかにかかわらず、概して、圧縮ビデオデータを復号するためのシンタックスまたは他のデータの通信を指し得る。
[0040]ビデオエンコーダ20およびビデオデコーダ30は、ビデオコーディング規格に従って動作し得る。例示的なビデオコーディング規格は、ITU−T H.261と、ISO/IEC MPEG−1 Visualと、ITU−T H.262またはISO/IEC MPEG−2 Visualと、ITU−T H.263と、ISO/IEC MPEG−4 Visualと、そのスケーラブルビデオコーディング(SVC)拡張およびマルチビュービデオコーディング(MVC)拡張を含む(ISO/IEC MPEG−4 AVCとしても知られる)ITU−T H.264とを含む。最近、新しいビデオコーディング規格、すなわち高効率ビデオコーディング(HEVC)の設計が、ITU−T Video Coding Experts Group(VCEG)およびISO/IEC Motion Picture Experts Group(MPEG)のJoint Collaboration Team on Video Coding(JCT−VC)によって確定された。以下でHEVC WDと呼ばれる、最新のHEVCドラフト仕様が、http://phenix.int−evry.fr/jct/doc_end_user/documents/15_Geneva/wg11/JCTVC−O1003−v1.zipから入手可能である。HEVCのマルチビュー拡張、すなわちMV−HEVCも、JCT−3Vによって開発されている。以下でMV−HEVC WD6と呼ばれる、MV−HEVCの最近のワーキングドラフト(WD)が、http://phenix.it−sudparis.eu/jct2/doc_end_user/documents/6_Geneva/wg11/JCT3V−F1004−v3.zipから入手可能である。SHVCと称するHEVCのスケーラブル拡張も、JCT−VCによって開発されている。以下でSHVC WD4と呼ばれる、SHVCの最近のワーキングドラフト(WD)は、http://phenix.int−evry.fr/jct/doc_end_user/documents/15_Geneva/wg11/JCTVC−O1008−v1.zipから入手可能である。ただし、本開示の技法は、いかなる特定のコーディング規格にも限定されない。ビデオコーディング規格の他の例には、MPEG−2およびITU−T H.263が含まれる。
[0041]HEVCの規格化の取組みは、HEVCテストモデル(HM)と呼ばれるビデオコーディングデバイスのモデルに基づく。HMは、たとえばITU−T H.264/AVCに従う既存のデバイスに対して、ビデオコーディングデバイスのいくつかの追加の能力を仮定する。たとえば、H.264は、9つのイントラ予測符号化モードを提供するが、HMは、33ものイントラ予測符号化モードを提供し得る。
[0042]概して、HMの作業モデルは、ビデオフレームまたはピクチャが、ルーマサンプルとクロマサンプルの両方を含むツリーブロックまたは最大コーディングユニット(LCU)のシーケンスに分割され得ることを記載している。ビットストリーム内のシンタックスデータは、LCUにとってのサイズを定義し得、LCUは、ピクセルの個数に関して最大のコーディングユニットである。スライスは、コーディング順序でいくつかの連続するツリーブロックを含む。ビデオフレームまたはピクチャは、1つまたは複数のスライスに区分され得る。各ツリーブロックは、4分木に従ってコーディングユニット(CU)にスプリットされ得る。概して、4分木データ構造はCUごとに1つのノードを含み、ルートノードはツリーブロックに対応する。CUが4つのサブCUにスプリットされる場合、CUに対応するノードは、4つのリーフノードを含み、その各々は、サブCUの1つに対応する。
[0043]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とも呼ばれることになる。
[0044]CUは、CUがサイズの特異性を有しないことを別にすれば、H.264規格のマクロブロックと同様の目的を有する。たとえば、ツリーブロックは、(サブCUとも呼ばれる)4つの子ノードにスプリットされ得、各子ノードは、今度は親ノードとなり、別の4つの子ノードにスプリットされ得る。4分木のリーフノードと呼ばれる、最後のスプリットされていない子ノードは、リーフCUとも呼ばれるコーディングノードを備える。コード化ビットストリームに関連するシンタックスデータは、最大CU深度と呼ばれる、ツリーブロックがスプリットされ得る最大回数を定義し得、また、コーディングノードの最小サイズを定義し得る。それに応じて、ビットストリームはまた、最小コーディングユニット(SCU)を定義し得る。本開示は、「ブロック」という用語を、HEVCのコンテキストにおいて、CU、PU、もしくはTUのうちのいずれか、または他の規格のコンテキストにおいて、同様のデータ構造(たとえば、H.264/AVCのマクロブロックおよびそのサブブロック)を指すために使用する。
[0045]CUは、コーディングノードと、コーディングノードに関連付けられた予測ユニット(PU)および変換ユニット(TU)とを含む。CUのサイズは、コーディングノードのサイズに対応し、形状が正方形でなければならない。CUのサイズは、8×8ピクセルから最大64×64ピクセル以上をもつツリーブロックのサイズにまでわたり得る。各CUは、1つまたは複数のPUと1つまたは複数のTUとを包含し得る。CUに関連付けられたシンタックスデータは、たとえば、1つまたは複数のPUへのCUの区分を記述し得る。区分モードは、CUがスキップモード符号化もしくは直接モード符号化されるのか、イントラ予測モード符号化されるのか、またはインター予測モード符号化されるのかの間で異なり得る。PUは、形状が非正方形に区分され得る。CUに関連付けられたシンタックスデータはまた、たとえば、4分木に従う1つまたは複数のTUへのCUの区分を記述し得る。TUは、形状が正方形または非正方形(たとえば、長方形)であってよい。
[0046]HEVC規格は、CUごとに異なり得る、TUに従う変換を可能にする。TUは、一般に、区分されたLCUのために定義された所与のCU内のPUのサイズに基づいてサイズ決定されるが、これは常にそうであるとは限らない。TUは、一般に、PUと同じサイズであるか、またはPUよりも小さい。いくつかの例では、CUに対応する残差サンプルは、「残差4分木」(RQT)として知られる4分木構造を使用して、より小さいユニットに再分割され得る。RQTのリーフノードは、変換ユニット(TU)と呼ばれることがある。TUに関連付けられたピクセル差分値は、変換係数を生成するために変換され得、変換係数は量子化され得る。
[0047]リーフCUは、1つまたは複数の予測ユニット(PU)を含み得る。概して、PUは、対応するCUのすべてまたは一部分に対応する空間エリアを表し、そのPUの参照サンプルを取り出すためのデータを含み得る。その上、PUは、予測に関係するデータを含む。たとえば、PUがイントラモード符号化されるとき、PUに関するデータは、残差4分木(RQT)に含まれ得、残差4分木は、PUに対応するTUに関するイントラ予測モードを記述するデータを含み得る。別の例として、PUがインターモード符号化されるとき、PUは、PUのための1つまたは複数の動きベクトルを定義するデータを含み得る。PUのための動きベクトルを定義するデータは、たとえば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルについての解像度(たとえば、1/4ピクセル精度または1/8ピクセル精度)、動きベクトルが指す参照ピクチャ、および/または動きベクトルのための参照ピクチャリスト(たとえば、リスト0、リスト1、またはリストC)を記述し得る。
[0048]インター予測PU(より詳細には、PUが対応するCUのインター予測部分)のための動き情報は、参照ピクチャリスト識別子と、参照ピクチャリスト中の参照ピクチャの位置に対応する参照インデックスとを含み得る。ビデオエンコーダ20は、たとえば、(元の構築された参照ピクチャリストに対して行われたいかなる修正をも含む)参照ピクチャリストを構築し、(たとえば、絶対差分和(SAD)メトリクス、または同様のメトリクスに基づいて)参照ブロックとも呼ばれる、厳密に一致するブロックを識別するために、参照ピクチャリスト中の参照ピクチャの中で動き探索を実行し得る。参照ブロックのロケーションをシグナリングするために、ビデオエンコーダ20は、PUのための参照ピクチャリスト識別子と参照インデックスとを符号化し得る。さらに、ビデオエンコーダ20は、たとえば、スライスヘッダ中、および/または、PPSもしくはSPSなどのパラメータセット中で、参照ピクチャのためのPOC値を表すデータをシグナリングすることによって、参照ピクチャリスト中に含まれるべき参照ピクチャを表すデータを符号化し得る。
[0049]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のサイズに対応し得る。
[0050]その上、リーフCUのTUは、残差4分木(RQT)と呼ばれる、それぞれの4分木データ構造にも関連付けられ得る。すなわち、リーフCUは、リーフCUがどのようにTUに区分されるかを示す4分木を含み得る。TU4分木のルートノードは一般に、リーフCUに対応し、一方、CU4分木のルートノードは一般に、ツリーブロック(またはLCU)に対応する。スプリットされないRQTのTUは、リーフTUと呼ばれる。一般に、本開示は、別段の注記がない限り、CUおよびTUという用語を、それぞれ、リーフCUおよびリーフTUを指すために使用する。
[0051]ビデオシーケンスは、通常、一連のビデオフレームまたはピクチャを含む。ピクチャグループ(GOP)は、一般に、ビデオピクチャのうちの一連の1つまたは複数を備える。GOPは、GOP中に含まれるいくつかのピクチャを記述するシンタックスデータを、GOPのヘッダ中、ピクチャの1つもしくは複数のヘッダ中、または他の場所に含み得る。ピクチャの各スライスは、それぞれのスライスの符号化モードを記述するスライスシンタックスデータを含み得る。ビデオエンコーダ20は通常、ビデオデータを符号化するために、個々のビデオスライス内のビデオブロックに対して動作する。ビデオブロックは、CU内のコーディングノードに対応し得る。ビデオブロックは、固定のサイズまたは可変のサイズを有してよく、指定されたコーディング規格に従ってサイズが異なり得る。
[0052]一例として、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を指す。
[0053]本開示では、「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に等しいとは限らない。
[0054]CUのPUを使用したイントラ予測コーディングまたはインター予測コーディングに続いて、ビデオエンコーダ20は、CUのTUのための残差データを計算し得る。PUは、空間領域(ピクセル領域とも呼ばれる)において予測ピクセルデータを生成する方法またはモードを記述するシンタックスデータを備え得、TUは、変換、たとえば、残差ビデオデータへの離散コサイン変換(DCT)、整数変換、ウェーブレット変換、または概念的に同様の変換の適用後に、変換領域において係数を備え得る。残差データは、符号化されていないピクチャのピクセルと、PUに対応する予測値との間のピクセル差分に対応し得る。ビデオエンコーダ20は、CUのための残差データを含むTUを形成し、次いで、CUのための変換係数を生成するためにTUを変換し得る。
[0055]変換係数を生成するための任意の変換に続いて、ビデオエンコーダ20は、変換係数の量子化を実行し得る。量子化は、一般に、係数を表すために使用されるデータの量をできるだけ低減するために、変換係数が量子化され、さらなる圧縮を実現するプロセスを指す。量子化プロセスは、係数の一部またはすべてに関連付けられたビット深度を低減し得る。たとえば、nビット値は、量子化中にmビット値に切り捨てられ得、ここで、nはmよりも大きい。
[0056]量子化に続いて、ビデオエンコーダは、変換係数を走査し、量子化された変換係数を含む2次元行列から1次元ベクトルを生成し得る。走査は、アレイの前部により高いエネルギー(したがって、より低い周波数)係数を配置し、アレイの後部により低いエネルギー(したがって、より高い周波数)係数を配置するように設計され得る。いくつかの例では、ビデオエンコーダ20は、エントロピー符号化され得るシリアル化ベクトルを生成するために、量子化された変換係数を走査するためにあらかじめ定義された走査順序を利用し得る。他の例では、ビデオエンコーダ20は、適応走査を実行し得る。1次元ベクトルを形成するために、量子化された変換係数を走査した後、ビデオエンコーダ20は、たとえば、コンテキスト適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)、確率間隔区分エントロピー(PIPE)コーディング、または別のエントロピー符号化方法に従って、1次元ベクトルをエントロピー符号化し得る。ビデオエンコーダ20はまた、ビデオデータを復号する際にビデオデコーダ30によって使用するための、符号化ビデオデータに関連付けられたシンタックス要素をエントロピー符号化し得る。
[0057]CABACを実行するために、ビデオエンコーダ20は、コンテキストモデル内のコンテキストを、送信されるべきシンボルに割り当て得る。コンテキストは、たとえば、シンボルの隣接値が非ゼロであるか否かに関係し得る。CAVLCを実行するために、ビデオエンコーダ20は、送信されるべきシンボルの可変長コードを選択し得る。VLC中のコードワードは、比較的短いコードが優勢シンボルに対応し、一方、より長いコードが劣勢シンボルに対応するように、構成され得る。このようにして、VLCの使用は、たとえば、送信されるべき各シンボルのための等長コードワードを使用することに勝るビット節約を達成し得る。確率決定は、シンボルに割り当てられたコンテキストに基づき得る。
[0058]ビデオエンコーダ20は、さらに、ブロックベースのシンタックスデータ、フレームベースのシンタックスデータ、およびGOPベースのシンタックスデータなどのシンタックスデータを、たとえば、フレームヘッダ、ブロックヘッダ、スライスヘッダ、またはGOPヘッダ中で、ビデオデコーダ30へ送り得る。GOPシンタックスデータは、それぞれのGOP中のいくつかのフレームを記述し得、フレームシンタックスデータは、対応するフレームを符号化するために使用された符号化/予測モードを示し得る。
[0059]コード化ビデオセグメントは、ビデオ電話、記憶、ブロードキャスト、またはストリーミングなどのアプリケーションに対処する「ネットワークフレンドリ」なビデオ表現を提供する、NALユニットに編成され得る。NALユニットは、ビデオコーディングレイヤ(VCL)NALユニットおよび非VCL NALユニットとしてカテゴリー分類され得る。VCLユニットは、コア圧縮エンジンからの出力を包含し得、ブロック、マクロブロック、および/またはスライスレベルのデータを含み得る。他のNALユニットは、非VCL NALユニットであり得る。いくつかの例では、通常は1次コード化ピクチャとして提示される、1つの時間インスタンス中のコード化ピクチャは、1つまたは複数のNALユニットを含み得るアクセスユニット中に包含され得る。
[0060]上述されたように、ビデオエンコーダ20およびビデオデコーダ30は、一般に、MV−HEVCまたはSHVCなど、ビデオコーディング規格またはビデオコーディング規格の拡張に従って動作するように構成され得る。したがって、例として、本開示の技法は、MV−HEVCに関して以下で説明されるが、これらの技法は、SHVCなど、他のビデオコーディング規格または拡張に適用され得ることを理解されたい。
[0061]HEVCでは、NALユニットタイプによって識別され得るいくつかの異なるピクチャタイプがある。1つのピクチャタイプは、概して、IDRピクチャ、クリーンランダムアクセス(CRA)ピクチャ、時間レイヤアクセス(TLA)ピクチャ、リンク切断アクセス(BLA)ピクチャ、STSA(ステップワイズ時間サブレイヤアクセス)ピクチャ、リーディングピクチャ(すなわち、後述されるRASLピクチャおよびRADLピクチャ)、またはいくつかの他の異なるピクチャタイプを含み得る、ランダムアクセスピクチャタイプである。
[0062]ビデオエンコーダ20およびビデオデコーダ30は、ビデオシーケンスの各ピクチャに、ピクチャの識別のためのPOC値を割り当て得る。ビデオエンコーダ20は、たとえば、スライスヘッダ中、および/または、PPSもしくはSPSなどのパラメータセット中で、参照ピクチャのためのPOC値を表すデータをシグナリングすることによって、参照ピクチャリスト中に含まれるべき参照ピクチャを表すデータを符号化し得る(および、ビデオデコーダ30は復号し得る)。特定のコード化ピクチャのための、シンタックス要素PicOrderCntValによって表されるPOC値は、同じコード化ビデオシーケンス中の他のピクチャに対する、ピクチャ出力プロセスにおけるピクチャの相対的順序を示す。
[0063]POC値は、最下位ビット(LSB)と最上位ビット(MSB)とを含む。POCは、MSBとLSBとを連結または加算することによって取得され得る。LSBは、スライスヘッダ中でシグナリングされ得、MSBは、現在ピクチャのNALユニットタイプと、NALユニットタイプランダムアクセススキップリーディング(RASL:random access skipped leading)もしくはランダムアクセス復号可能リーディング(RADL:random access decodable leading)のものではないか、またはサブレイヤ非参照ピクチャではなく、0に等しいtemporal_id値を有する、復号順序における前のピクチャのMSBおよびLSBとに基づいて、ビデオデコーダ30によって計算され得る。0に等しいTemporalIdと、現在ピクチャのnuh_layer_idに等しいnuh_layer_idとを有し、RASLピクチャ、RADLピクチャ、またはサブレイヤ非参照ピクチャではない、そのようなピクチャは、POCアンカーピクチャと呼ばれる。
[0064]現在ピクチャが、1に等しいNoRaslOutputFlagを有するイントラランダムアクセスポイント(IRAP)ピクチャであるか、またはビットストリームの最初のピクチャであるCRAピクチャであるとき、POC MSBの値は0に等しいと推論される(すなわち、コーダによって決定される)。マルチレイヤビットストリーム(たとえば、2つ以上のレイヤを有するSHVCまたはMV−HEVCビットストリーム)では、1つまたは2つ以上のピクチャがIRAPピクチャであるとともに1つまたは複数のピクチャが非IRAPピクチャであるアクセスユニットが存在し得る。そのようなAUは、非整合IRAP AUと呼ばれることがある。非整合IRAP AUを包含するビットストリームを復号するとき、シグナリングされたPOC LSB値に基づいてピクチャについて導出されたPOCが、アクセスユニット中のすべてのピクチャ(たとえば、各レイヤのピクチャ)がPicOrderCntValの同じ値を有するべきであるというビットストリーム要件に違反するようになることがあり得る。
[0065]したがって、場合によっては、POC値は、特定のアクセスユニット中のピクチャのPOC整合を維持するために、そのアクセスユニットについてリセットされ得る。MV−HEVC WD5では、非整合IRAP AUがビットストリーム中に存在するときでも、AU中のすべてのピクチャのPOCが同じであるように現在ピクチャおよびDPB内のピクチャのPicOrderCntValの値が調整されるように、フラグpoc_reset_flagシンタックス要素が、ピクチャのPOCをリセットするために使用され得る。
[0066]2014年4月4日に出願された、Chen他の「CROSS−LAYER POC ALIGNMENT FOR MULTI−LAYER BITSTREAMS THAT MAY INCLUDE NON−ALIGNED IRAP PICTURES」という米国特許出願第14/245,115号は、2つのフラグであるpoc_msb_reset_flagとpoc_lsb_reset_flagとを使用する、POCリセットを達成する別の方法について説明している。前者のフラグは、PicOrderCntValのMSBをリセットし、後者のフラグは、PicOrderCntValのLSBをリセットする。これらのフラグの両方が、スライスヘッダ中でシグナリングされる。
[0067]2013年10月14日に出願された米国仮第61/890,868号は、POC MSBまたはPOCリセット指示のいずれかを包含するピクチャが失われるときの、正確なPOC値の回復のための情報を包含する、SEIメッセージを提案している。
[0068]Hannuksela他、「MV−HEVC/SHVC HLS:on POC value derivation」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11とのビデオコーディング共同研究部会(JCT−VC)、第15回会合:ジュネーブ、スイス、2013年10月23日〜11月1日、JCTVC−O0275v3(http://phenix.int−evry.fr/jct/doc_end_user/documents/15_Geneva/wg11/JCTVC−O0275−v3.zipにおいて入手可能)と、Sjoberg他、「HLS:Error robust POC alignment」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11とのビデオコーディング共同研究部会(JCT−VC)、第15回会合:ジュネーブ、スイス、2013年10月23日〜11月1日、JCTVC−O0176v3(http://phenix.int−evry.fr/jct/doc_end_user/documents/15_Geneva/wg11/JCTVC−O0176−v3.zipにおいて入手可能)とは、マルチレイヤビデオコーディングにおけるPOC値をシグナリングおよび導出するための他の方法を提案している。
[0069]2014年11月17日に出願された米国出願第14/543,470号は、2つのフラグ(すなわち、poc_msb_reset_flagおよびpoc_lsb_reset_flag)を2ビットPOCリセットインジケータに置き換えることを提案し、POCリセット期間の概念を導入しており、ここにおいて、各POCリセット期間は、2つの連続するPOCリセット期間について異なることが必要とされるPOCリセット期間識別子によって識別される。そのような概念によって、POCリセットが実行されるアクセスユニット中の1つまたは複数のピクチャの損失の場合に、デコーダがPOCのクロスレイヤ整合を保つことが可能であるように、POCリセット機構のエラーレジリエンシーが改善される。
[0070]概して、POCリセット期間は、たとえば、MV−HEVCの従属節F.3において、次のように定義され得る。
F.3.1 ピクチャ順序カウント(POC)リセット期間:0よりも大きいpoc_reset_idcと、poc_reset_period_idの同じ値とをすべてが有する、レイヤ内の復号順序におけるピクチャのシーケンス。
代替的に、上記の定義における「レイヤ内」という句は、たとえば、次のように省略され得る。
F.3.2 ピクチャ順序カウント(POC)リセット期間:0よりも大きいpoc_reset_idcと、poc_reset_period_idの同じ値とをすべてが有する、復号順序におけるピクチャのシーケンス。
したがって、POCリセット期間はレイヤ固有である。一例では、MV−HEVC(または、別の適用可能な規格もしくは規格拡張)は、POCリセット期間におけるピクチャがレイヤ内で復号順序において連続であることを必要とし得る。しかしながら、これらのピクチャが、同じレイヤにおいて0に等しいpoc_reset_idcを有するピクチャでインターリーブされることを可能にすることは、柔軟性を追加し得、クラスタ化されたパケット損失に対するより良いエラーレジリエンスを達成するために、同じオーバーヘッドの使用を可能にし得る。
[0071]ビデオエンコーダ20は、スライスをそれぞれのPOCリセット期間に割り当て得る。各POCリセット期間は、1つまたは複数のスライスを含み得る。したがって、POC値がPOCリセット期間の間にリセットされる(コーディング順序においてPOCリセット期間に先行する参照ピクチャのPOC値をリセットすることを含む)とき、ビデオエンコーダ20は、リセットされたPOC値に基づいて、参照ピクチャリスト中に含まれるべき参照ピクチャのPOC値をシグナリングし得る。
[0072]ビデオエンコーダ20およびビデオデコーダ30は、POC値を使用して、DPBに記憶されたピクチャのピクチャ出力とバンピングとを実行し得る。ピクチャ出力およびバンピングプロセスは、DPBから「出力のために必要とされる」および「参照のために使用されない」とマークされているピクチャを出力するためのプロセスである。Ramasubramonian他、「MV−HEVC/SHVC HLS:Sub−DPB based DPB operations」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11とのビデオコーディング共同研究部会(JCT−VC)、第15回会合:ジュネーブ、スイス、2013年10月23日〜11月1日、JCTVC−O0217(http://phenix.int−evry.fr/jct/doc_end_user/documents/15_Geneva/wg11/JCTVC−O0217−v1.zipにおいて入手可能)の採用後、HEVC拡張のためのDPBのピクチャを出力およびバンピングするための概念は、次のことを組み込むように更新されている。
・レイヤごとの別個のDPB容量、いわゆるサブDPBを指定する
・レイヤにわたるサブDPB容量の共有はない
・各レイヤは、それ自体のパラメータ(最大ピクチャ、最大レイテンシ、最大並べ替え)を有する
・「出力レイヤセット」ごとの異なるパラメータ
・動作点の定義を、「レイヤセット」ではなく、出力レイヤセットに固有であるように変更する
変更後、ピクチャ出力およびバンピングプロセスは、次のように動作し、すなわち、デコーダ適合のために、ピクチャ出力プロセスは、(1)ピクチャの復号前であるが、ピクチャの最初のスライスのスライスヘッダをパースした後と、(2)ピクチャの最後の復号ユニットがコード化ピクチャバッファから除去されるときとを含めて、ピクチャごとに2回呼び出される。バンピングプロセスが呼び出されるとき、このプロセスは、選択されたアクセスユニットに属するすべてのピクチャを出力する。
[0073]ピクチャ出力とバンピングとを含む、DPBのための出力順序の例示的な動作は、JCTVC−O0217における追加と、MV−HEVC WD6への、Ramasubramonian他、「MV−HEVC/SHVC HLS:On flushing of decoded pictures from DPB based on NoOutputOfPriorPicsFlag」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11とのビデオコーディング共同研究部会(JCT−VC)、第15回会合:ジュネーブ、スイス、2013年10月23日〜11月1日、O0266(http://phenix.int−evry.fr/jct/doc_end_user/documents/15_Geneva/wg11/JCTVC−O0266−v1.zipにおいて入手可能)の追加とを含めた後、次のようになる。
C.5.2 出力順序DPBの動作
C.5.2.1 一般
復号ピクチャバッファはサブDPBからなり、各サブDPBは、1つのレイヤのみの復号ピクチャの記憶のためのピクチャ記憶バッファを包含する。サブDPBのピクチャ記憶バッファの各々は、「参照のために使用される」とマークされているか、または将来の出力のために保持されている、復号ピクチャを包含する。
DPBからのピクチャの出力および除去のためのプロセスと、ピクチャ復号、マーキング、追加のバンピング、および記憶のためのプロセスと、「バンピング」プロセスとが、以下で指定される。これらのプロセスは、ベースレイヤから開始して、ビットストリーム中のレイヤのnuh_layer_id値の昇順に、レイヤごとに独立して適用される。これらのプロセスが特定のレイヤに対して適用されるとき、ピクチャをクロップおよび出力し、ピクチャに「出力のために必要とされない」とマークし、いかなるレイヤのためのピクチャ記憶バッファをも空にし得る「バンピング」プロセスを除いて、特定のレイヤのためのサブDPBのみが影響を受ける。
ピクチャnおよび現在ピクチャを、nuh_layer_idの特定の値のためのアクセスユニットnのコード化ピクチャまたは復号ピクチャとし、ここにおいて、nは非負整数である。
これらのプロセスが、currLayerIdに等しいnuh_layer_idを有するレイヤに対して適用されるとき、変数MaxNumReorderPics、MaxLatencyIncreasePlus1、MaxLatencyPictures、およびMaxDecPicBufferingMinus1は、次のように導出される。
− Annex GまたはHにおいて指定されているプロファイルのうちの1つまたは複数に適合するCVSが、節2〜10、Annex F、およびAnnex GまたはHにおいて指定されている復号プロセスを適用することによって復号される場合、次のことが適用される。
− MaxNumReorderPicsは、アクティブなVPSのmax_vps_num_reorder_pics[TargetOptLayerSetIdx][HighestTid]に等しく設定される。
− MaxLatencyIncreasePlus1は、アクティブなVPSのシンタックス要素max_vps_latency_increase_plus1[TargetOptLayerSetIdx][HighestTid]の値に等しく設定される。
− MaxLatencyPicturesは、アクティブなVPSのVpsMaxLatencyPictures[TargetOptLayerSetIdx][HighestTid]に等しく設定される。
− MaxDecPicBufferingMinus1は、アクティブなVPSのシンタックス要素max_vps_dec_pic_buffering_minus1[TargetOptLayerSetIdx][currLayerId][HighestTid]の値に等しく設定される。
− そうでない(Annex Aにおいて指定されているプロファイルのうちの1つまたは複数に適合するCVSが、節2〜10において指定されている復号プロセスを適用することによって復号される)場合、次のことが適用される。
− MaxNumReorderPicsは、ベースレイヤのためのアクティブなSPSのsps_max_num_reorder_pics[HighestTid]に等しく設定される。
− MaxLatencyIncreasePlus1は、ベースレイヤのためのアクティブなSPSのsps_max_latency_increase_plus1[HighestTid]に等しく設定される。
− MaxLatencyPicturesは、ベースレイヤのためのアクティブなSPSのSpsMaxLatencyPictures[HighestTid]に等しく設定される。
− MaxDecPicBufferingMinus1は、ベースレイヤのためのアクティブなSPSのsps_max_dec_pic_buffering_minus1[HighestTid]に等しく設定される。
C.5.2.2 DPBからのピクチャの出力および除去
現在ピクチャが現在レイヤにおけるピクチャ0ではない(すなわち、現在ピクチャが0のPOC値を有していない)とき、現在ピクチャ、すなわち、ピクチャnの復号前であるが、現在ピクチャの最初のスライスのスライスヘッダをパースした後の、DPBからの現在レイヤにおけるピクチャの出力および除去は、現在ピクチャの最初の復号ユニットがCPBから除去されるときに瞬時に起こり、次のように進む。
− 従属節8.3.2において指定されているようなRPSのための復号プロセスが呼び出される。
− 現在ピクチャが、1に等しいNoRaslOutputFlagを有するIRAPピクチャであるか、または現在アクセスユニット中のベースレイヤピクチャが、1に等しいNoRaslOutputFlagを有するIRAPピクチャであり、NoClrasOutputFlagが1に等しい場合、次の順序付けられたステップが適用される。
1.変数NoOutputOfPriorPicsFlagは、次のようにテスト中のデコーダのために導出される。
− 現在ピクチャが、1に等しいNoRaslOutputFlagを有するCRAピクチャである場合、NoOutputOfPriorPicsFlagは、1に等しく設定される(no_output_of_prior_pics_flagの値にかかわらず)。
− そうでない場合、現在ピクチャが、1に等しいNoRaslOutputFlagを有するIRAPピクチャであり、現在レイヤのためのアクティブなSPSから導出されたpic_width_in_luma_samples、pic_height_in_luma_samples、またはsps_max_dec_pic_buffering_minus1[HighestTid]の値が、現在レイヤにおいて先行するピクチャを復号するときに現在レイヤについてアクティブであったSPSからそれぞれ導出されたpic_width_in_luma_samples、pic_height_in_luma_samples、またはsps_max_dec_pic_buffering_minus1[HighestTid]の値と異なる場合、NoOutputOfPriorPicsFlagは、no_output_of_prior_pics_flagの値にかかわらず、テスト中のデコーダによって1に設定され得る(が、設定されるべきでない)。
注− これらの条件下では、NoOutputOfPriorPicsFlagをno_output_of_prior_pics_flagに等しく設定することが好ましいが、テスト中のデコーダは、この場合にはNoOutputOfPriorPicsFlagを1に設定することが可能にされる。
− そうでない場合、現在ピクチャが、1に等しいNoRaslOutputFlagを有するIRAPピクチャである場合、NoOutputOfPriorPicsFlagは、no_output_of_prior_pics_flagに等しく設定される。
− そうでない(現在ピクチャが、1に等しいNoRaslOutputFlagを有するIRAPピクチャではなく、現在アクセスユニット中のベースレイヤピクチャが、1に等しいNoRaslOutputFlagを有するIRAPピクチャであり、NoClrasOutputFlagが1に等しい)場合、NoOutputOfPriorPicsFlagは1に等しく設定される。
2.テスト中のデコーダのために導出されたNoOutputOfPriorPicsFlagの値は、次のようにHRDに対して適用される。
− NoOutputOfPriorPicsFlagが1に等しい場合、サブDPB内のすべてのピクチャ記憶バッファは、それらが包含しているピクチャを出力せずに空にされ、サブDPBフルネスは0に等しく設定される。
− そうでない(NoOutputOfPriorPicsFlagが0に等しい)場合、「出力のために必要とされない」および「参照のために使用されない」とマークされているピクチャを包含するすべてのピクチャ記憶バッファは(出力せずに)空にされ、サブDPB内のすべての空でないピクチャ記憶バッファは、従属節C.5.2.4において指定されている「バンピング」プロセスを繰り返し呼び出すことによって空にされ、サブDPBフルネスは0に等しく設定される。
− そうでない場合、現在レイヤにおけるピクチャを包含しており、「出力のために必要とされない」および「参照のために使用されない」とマークされている、すべてのピクチャ記憶バッファは(ピクチャが出力されることなく)空にされる。空にされる各ピクチャ記憶バッファに対して、サブDPBフルネスは1だけデクリメントされる。次の条件のうちの1つまたは複数が真であるとき、空にされる各追加のピクチャ記憶バッファに対してサブDPBフルネスを1だけさらにデクリメントしながら、次の条件のいずれも真でなくなるまで、従属節C.5.2.4において指定されている「バンピング」プロセスが繰り返し呼び出される。
− 「出力のために必要とされる」とマークされた、DPB(すなわち、サブDPBのいずれか)内の少なくとも1つの復号ピクチャを包含するアクセスユニットの数は、MaxNumReorderPicsよりも大きい。
− MaxLatencyIncreasePlus1は0に等しくなく、それについて関連付けられた変数PicLatencyCountがMaxLatencyPictures以上である、「出力のために必要とされる」とマークされた、DPB内の少なくとも1つの復号ピクチャを包含する、少なくとも1つのアクセスユニットがある。
− 現在レイヤのサブDPB内の現在レイヤにおけるピクチャの数は、MaxDecPicBufferingMinus1+1以上である。
C.5.2.3 ピクチャ復号、マーキング、追加のバンピング、および記憶
この従属節において指定されているプロセスは、ピクチャnの最後の復号ユニットがCPBから除去されるときに瞬時に起こる。
PicOutputFlagは次のように更新される。
− 現在アクセスユニットが、ターゲット出力レイヤにおいてピクチャを包含しておらず、alt_output_layer_flagが1に等しい場合、次の順序付けられたステップが適用される。
−リストnonOutputLayerPicturesは、1に等しいPicOutputFlagを有し、ならびに、TargetDecLayerIdList中に含まれており、ターゲット出力レイヤ上にないnuh_layer_id値を有する、アクセスユニットのピクチャのリストである。
−リストnonOutputLayerPicturesの中で最高のnuh_layer_id値を有するピクチャは、リストnonOutputLayerPicturesから除去される。
−リストnonOutputLayerPictures中に含まれる各ピクチャのためのPicOutputFlagは、0に等しく設定される。
− そうでない場合、ターゲット出力レイヤ中に含まれないピクチャのためのPicOutputFlagは、0に等しく設定される。
現在ピクチャが、1に等しいPicOutputFlagを有するとき、「出力のために必要とされる」とマークされており、出力順序において現在ピクチャに後続する、サブDPB内の現在レイヤにおける各ピクチャについて、関連付けられた変数PicLatencyCountは、PicLatencyCount+1に等しく設定される。
現在ピクチャは、ピクチャの最後の復号ユニットが復号された後に復号されると見なされる。現在復号ピクチャは、サブDPB内の空のピクチャ記憶バッファ内に記憶され、次のことが適用される。
− 現在復号ピクチャが、1に等しいPicOutputFlagを有する場合、それは「出力のために必要とされる」とマークされ、その関連付けられた変数PicLatencyCountは、0に等しく設定される。
− そうでない(現在復号ピクチャが、0に等しいPicOutputFlagを有する)場合、それは「出力のために必要とされない」とマークされる。
現在復号ピクチャは、「短期参照のために使用される」とマークされる。
次の条件のうちの1つまたは複数が真であるとき、従属節C.5.2.4において指定されている「バンピング」プロセスが、次の条件のいずれも真でなくなるまで繰り返し呼び出される。
− 「出力のために必要とされる」とマークされた、DPB(すなわち、サブDPBのいずれか)内の少なくとも1つの復号ピクチャを包含するの数は、MaxNumReorderPicsよりも大きい。
− MaxLatencyIncreasePlus1は0に等しくなく、それについて関連付けられた変数PicLatencyCountがMaxLatencyPictures以上である、「出力のために必要とされる」とマークされた、DPB内の少なくとも1つの復号ピクチャを包含する、少なくとも1つのアクセスユニットがある。
C.5.2.4 「バンピング」プロセス
「バンピング」プロセスは、次の順序付きステップからなる。
1.出力のための最初のものである1つまたは複数のピクチャが、「出力のために必要とされる」とマークされたDPB内のすべてのピクチャのうちのPicOrderCntValの最小値を有するピクチャとして選択される。
2.これらのピクチャの各々が、nuh_layer_idの昇順で、ピクチャのためのアクティブSPS中で指定された適合クロッピングウィンドウを使用してクロップされ、クロップされたピクチャが出力され、そのピクチャが「出力のために必要とされない」とマークされる。
3.「参照のために使用されない」とマークされ、クロップおよび出力されたピクチャのうちの1つであったピクチャを包含する、各ピクチャ記憶バッファが空にされる。
[0074]本開示の技法によれば、ビデオエンコーダ20およびビデオデコーダ30は、それにおいてPOCリセットが実行されるアクセスユニットの初期ピクチャを復号するより前に、DPBに記憶されたすべてのピクチャ(たとえば、すべてのレイヤのピクチャ)のPOC値をデクリメントするようにそれぞれ構成され得る。たとえば、ビデオエンコーダ20およびビデオデコーダ30は、コーディングされているピクチャより前に処理され、DPBに記憶されているピクチャ(たとえば、現在ピクチャに対して「より早いピクチャ」と一般に呼ばれることがある、コーディング順序において現在コーディングされているピクチャに先行するピクチャ)に、POCデクリメントを適用し得る。本開示の態様によれば、ビデオエンコーダ20およびビデオデコーダ30は、POCリセットを必要とする各アクセスユニットの開始において、DPB内の(すなわち、すべてのサブDPBのための)そのようなより早いピクチャにPOCデクリメントを適用し得る。POCデクリメントプロセスは、アクセスユニットのための初期ピクチャをコーディング(たとえば、符号化または復号)する前であるが、初期ピクチャの最初のスライスのスライスヘッダ情報をコーディングした後に(すなわち、それに続いて)呼び出され得る。このようにして、ビデオエンコーダ20およびビデオデコーダ30のDPBに記憶されたピクチャのPOC値は、アクセスユニットのピクチャをコーディングするときに整合されたままであり得、それによって、DPBのピクチャが適切な順序で出力されることが可能になり、したがって、ピクチャが正確に表示され得ることが保証される。たとえば、DPBに記憶されたピクチャのクロスレイヤ整合を(たとえば、各それぞれのアクセスユニットのピクチャが同じPOC値を有するように)維持することによって、ビデオデコーダ30は、別のアクセスユニットのピクチャを出力するより前に、あるアクセスユニットからすべてのピクチャを出力し得る。これは、適切な閲覧体験を提供するために、アクセスユニットのピクチャが実質的に同時に表示されることを可能にし得る。
[0075]別の例では、本開示の態様によれば、POCデクリメントのタイミングが変更され得る。たとえば、ビデオデコーダ30は、アクセスユニット中の各ピクチャを復号する前であるが、ピクチャの最初のスライスのスライスヘッダ情報のパースおよび復号後、各サブDPB内で復号されているピクチャの前に処理され(たとえば、復号され)、DPBに記憶されているピクチャに対して、POCデクリメントプロセスを呼び出し得る。ビデオデコーダ30はまた、アクセスユニット中に存在するピクチャを復号した後、アクセスユニットのために存在しないかまたは受信されないピクチャを有するレイヤのためのサブDPB内のより早いピクチャの追加のPOCデクリメントプロセスを実行し得る。
[0076]さらに別の例では、本開示の態様によれば、ビデオデコーダ30は、アクセスユニット中の各ピクチャの復号前であるが、それぞれのピクチャの最初のスライスのスライスヘッダ情報のパースおよび復号後、各サブDPB内のより早いピクチャに対して、POCデクリメントプロセスを呼び出し得る。サブDPB内のより早いピクチャのPOCデクリメントプロセスが実行される前に、同じプロセスが1つまたは複数の下位レイヤサブDPBに対してまだ実行されていない場合、このプロセスがそれらのサブDPBに対して実行される。
[0077]さらに別の例では、本開示の態様によれば、ビデオデコーダ30は、POCリセットを必要とする各アクセスユニットを復号することの終了において、DPB内の(すなわち、すべてのサブDPBのための)より早いピクチャのPOCデクリメントプロセスが1回適用されるを実行し得る。すなわち、ビデオデコーダ30は、POCリセットが実行されるとともにのために、アクセスユニットのすべてのピクチャを復号し、続いてDPBのすべてのピクチャのPOC値をデクリメントし得る。
[0078]本開示の態様によれば、ビデオエンコーダ20およびビデオデコーダは、MV−HEVCなど、適用可能なビデオコーディング規格によって確立された制限(たとえば、所与のビットストリームに、コーダによって、適用可能であると決定され、見なされるようなビットストリーム制約)に従って、それぞれ構成され得る。たとえば、本開示の態様によれば、DPB(たとえば、すべてのサブDPB)内のより早いピクチャをデクリメントするための、導出される値は、POCまたはPOC MSBリセットが実行されるアクセスユニット中のすべてのピクチャについて同じであるものとする。
[0079]上述されたように、レイヤ固有のPOCリセット期間は、スライスセグメントヘッダ中でシグナリングされたPOCリセット期間識別子に基づいて指定され得る。すなわち、ビデオエンコーダ20およびビデオデコーダ30は、スライスセグメントヘッダ中でPOCリセット期間識別子を表すデータをそれぞれコーディングし得る。少なくとも1つのIRAPピクチャを包含するアクセスユニットに属する各非IRAPピクチャは、非IRAPピクチャを包含するレイヤにおいてPOCリセット期間の開始であり得る。すなわち、ビデオエンコーダ20は、非IRAPピクチャが新しいPOCリセット期間の開始であることを示すために、少なくとも1つのIRAPピクチャを包含するアクセスユニットの非IRAPピクチャのためのPOCリセットタイプを設定し得る。そのようなアクセスユニットにおいて、各ピクチャは、そのピクチャを包含するレイヤにおいてPOCリセット期間の開始となる。POC MSBのみ、またはPOC MSBとPOC LSBの両方のいずれかである、POCリセット、および、DPB内の同じレイヤのピクチャのPOC値の更新は、各POCリセット期間内の最初のピクチャのみに対して適用され得る。
[0080]ビデオエンコーダ20は、ビデオデコーダ30がスライスセグメントヘッダを有するスライスを含むレイヤにおけるピクチャのPOC値を導出するために使用し得る、スライスセグメントヘッダ中のPOC LSB値をシグナリングし得る。スライスセグメントヘッダ中でシグナリングされたPOC LSB値は、DPB内の同じレイヤのピクチャのPOC値を更新するために使用される、デルタPOC値の導出のため、および、現在ピクチャのPOC値のPOC MSBの導出のためにも使用され得る。現在ピクチャが、シグナリングされたそのようなPOC LSB値を有するとき、および、現在ピクチャに関連付けられたPOCアンカーピクチャがビットストリーム中に存在するとき、POCアンカーピクチャは、POCリセットまたはPOC MSBリセットのいずれかの指示を有する。現在ピクチャのためにシグナリングされたそのようなPOC LSB値は、現在ピクチャとしてのPOCリセット期間の最初のピクチャでもある、POCアンカーピクチャのPOC LSB値に等しい。本開示の態様によれば、ビデオエンコーダ20は、2に等しいpoc_reset_idcシンタックス要素を有するベースレイヤIDRピクチャのための追加のPOC LSBを示すデータをシグナリングする。
[0081]上述されたように、ビデオエンコーダ20およびビデオデコーダ30は、適用可能なビデオコーディング規格によって確立された制限に従ってそれぞれ構成され得る。たとえば、本開示の態様によれば、同じアクセスユニット中のすべてのピクチャは、poc_reset_idcの同じ同じ値を有するものとする。加えて、別の例として、1つのPOCリセット期間は、1または2に等しいpoc_reset_idcを有する2つ以上のアクセスユニットを含まないものとする。加えて、別の例として、1または2に等しいpoc_reset_idcを有するアクセスユニットは、POCリセット期間における最初のアクセスユニットであるものとする。
[0082]本開示の態様によれば、POCリセット期間は、マルチレイヤビデオデータのすべてのレイヤに適用可能であり得る。たとえば、POCリセット期間は、POCリセット期間がマルチレイヤデータのレイヤにわたって適用されるように定義され得る。以下でより詳細に説明されるように、POCリセット期間は、0よりも大きいpoc_reset_idcをすべてが有する、復号順序におけるアクセスユニットのシーケンスを含み得る。上記で説明されたPOC値リセットを示すデータが、POCリセット期間に関連付けられ得る。
[0083]次の開示および表は、本開示の技法による例示的なシンタックスを含む。このシンタックスは、たとえば、上述された文書JCTVC−O0217およびJCTVC−O0266によって修正されるようなMV−HEVCのシンタックスに関して修正され得る。以下の例示的な説明、シンタックステーブルおよびセマンティクスでは、(文書JCTVC−O0217およびJCTVC−O0266によって修正されるような)MV−HEVCに対する追加が、イタリック体を使用して表され、削除が、「除去」が前に付いた括弧付きのテキスト(たとえば、[除去:“除去されたテキスト”])を使用して表される。概して、「要件」に関するステートメントは、規格または規格拡張のテキストの一部を形成するものであり、本開示の技法の目的のための要件を形成しないものと理解されたい。場合によっては、そのような「要件」は、適用可能であると決定され得、次いで、たとえば、その決定に基づいてビデオコーダによって遵守され得る、ビットストリーム制約を含み得る)。
[0084]次の数学関数の定義が、MV−HEVCに、たとえば、MV−HEVCの従属節5.8に追加され得る。
[0085]次の定義が、従属節F.3に追加され得る。
F.3.1 ピクチャ順序カウント(POC)リセット期間:0に等しいpoc_reset_idcを有するアクセスユニットでインターリーブされてもされなくてもよい、0よりも大きいpoc_reset_idcと、poc_reset_period_idの同じ値とをすべてが有する、復号順序におけるアクセスユニットのシーケンス。
[0086]1つの代替として、POCリセット期間におけるピクチャは、レイヤ内で復号順序において連続であることが必要とされる。しかしながら、これらのピクチャが、同じレイヤにおいて0に等しいpoc_reset_idcを有するピクチャでインターリーブされることを可能にすることは、より柔軟であり、クラスタ化されたパケット損失に対するより良いエラーレジリエンスを達成するために、同じオーバーヘッドを使用することを可能にする。
[0087]次の表は、本開示の技法による、PPSのためのシンタックスの一例である。
[0088]上の例では、0に等しいpps_extension_flagは、pps_extension_data_flagシンタックス要素がPPS RBSPシンタックス構造中に存在しないことを指定する。slice_segment_header_extension_present_flagが0に等しいとき、pps_extension_flagは、本仕様の本バージョンに適合するビットストリーム中で0に等しいものとし、pps_extension_flagのための1の値は、ITU−T|ISO/IECによる将来の使用のために確保され、デコーダは、PPS NALユニット中のpps_extension_flagのための値1に後続するすべてのデータを無視するものとする。
[0089]加えて、0に等しいpoc_reset_info_present_flagは、シンタックス要素poc_reset_idcが、PPSを参照するスライスのスライスセグメントヘッダ中に存在しないことを指定する。加えて、1に等しいpoc_reset_info_present_flagは、シンタックス要素poc_reset_idcが、PPSを参照するスライスのスライスセグメントヘッダ中に存在することを指定する。
[0090]加えて、0に等しいpps_extension2_flagは、pps_extension_data_flagシンタックス要素が、PPS RBSPシンタックス構造中に存在しないことを指定する。pps_extension2_flagは、本仕様の本バージョンに適合するビットストリーム中で0に等しいものとする。pps_extension2_flagのための1の値は、ITU−T|ISO/IECによる将来の使用のために確保される。デコーダは、PPS NALユニット中のpps_extension2_flagのための値1に後続するすべてのデータを無視するものとする。
[0091]次の表は、本開示の技法による、スライスヘッダのためのシンタックスの一例である。
[0092]代替的に、poc_reset_period_idシンタックス要素は、たとえば、u(14)としてコーディングされた、異なるビット数を使用してシグナリングされ得る。
[0093]存在するとき、スライスセグメントヘッダシンタックス要素slice_pic_parameter_set_id、pic_output_flag、no_output_of_prior_pics_flag、slice_pic_order_cnt_lsb、short_term_ref_pic_set_sps_flag、short_term_ref_pic_set_idx、num_long_term_sps、num_long_term_pics、slice_temporal_mvp_enabled_flag、discardable_flag、cross_layer_bla_flag、inter_layer_pred_enabled_flag、num_inter_layer_ref_pics_minus1、poc_reset_idc、poc_reset_pic_id、full_poc_reset_flag、およびpoc_lsb_valの値は、コード化ピクチャのすべてのスライスセグメントヘッダ中で同じものとする。存在するとき、スライスセグメントヘッダシンタックス要素lt_idx_sps[i]、poc_lsb_lt[i]、used_by_curr_pic_lt_flag[i]、delta_poc_msb_present_flag[i]、delta_poc_msb_cycle_lt[i]、およびinter_layer_pred_layer_idc[i]の値は、iの可能な値ごとに、コード化ピクチャのすべてのスライスセグメントヘッダ中で同じものとする。
[0094]シンタックス要素slice_segment_header_extension_lengthは、slice_segment_header_extension_length自体をシグナリングするために使用されるビットを含まない、バイト単位のスライスセグメントヘッダ拡張データの長さを指定し得る。poc_reset_info_present_flagが0に等しい場合、シンタックス要素slice_segment_header_extension_lengthの値は、両端値を含む0〜256の範囲内にあるものとする。そうでない場合、シンタックス要素slice_segment_header_extension_lengthの値は、poc_reset_idcが1に等しいとき、またはpoc_reset_idcが2に等しく、nuh_layer_idが0よりも大きいとき、両端値を含む1〜256の範囲内にあるものとし、poc_reset_idcが2に等しく、nuh_layer_idが0に等しいとき、両端値を含む1+Ceil((log2_max_pic_order_cnt_lsb_minus4+4)/8)〜256の範囲内にあるものとし、poc_reset_idcが3に等しいとき、両端値を含む1+Ceil((log2_max_pic_order_cnt_lsb_minus4+5)/8)〜256の範囲内にあるものとする。
[0095]0に等しいシンタックス要素poc_reset_idcは、現在ピクチャのためのピクチャ順序カウント値の最上位ビットまたは最下位ビットのいずれもリセットされないことを指定する。1に等しいシンタックス要素poc_reset_idcは、現在ピクチャのためのピクチャ順序カウント値の最上位ビットのみがリセットされ得ることを指定する。2に等しいシンタックス要素poc_reset_idcは、現在ピクチャのためのピクチャ順序カウント値の最上位ビットと最下位ビットの両方がリセットされ得ることを指定する。3に等しいシンタックス要素poc_reset_idcは、現在ピクチャのためのピクチャ順序カウント値の最上位ビットのみ、または、最上位ビットと最下位ビットの両方のいずれかがリセットされ得、追加のピクチャ順序カウント情報がシグナリングされることを指定する。存在しないとき、シンタックス要素poc_reset_pocの値は、0に等しいと推論される(すなわち、明示的なシグナリングなしに、コーダによって決定される)。
[0096]次の制約が適用されることが、ビットストリーム適合の要件である。
− poc_reset_idcの値は、RASLピクチャ、RADLピクチャ、サブレイヤ非参照ピクチャ、または0よりも大きいTemporalIdを有するピクチャについて、1または2に等しくないものとする。
− アクセスユニット中のすべてのピクチャのpoc_reset_idcの値は、同じものとする。
[除去:− アクセスユニット中のピクチャのpoc_reset_idcの値が1に等しいとき、そのアクセスユニット中のすべてのピクチャのpoc_reset_idcの値は、1に等しいものとする。]
[除去:− アクセスユニット中のピクチャのpoc_reset_idcの値が2に等しいとき、そのアクセスユニット中のすべてのピクチャのpoc_reset_idcの値は、2に等しいものとする。]
− アクセスユニット中の1つのピクチャが、nal_unit_typeの特定の値を有するIRAPピクチャであり、nal_unit_typeの異なる値を有する、同じアクセスユニット中の少なくとも1つの他のピクチャがあるとき、poc_reset_idcの値は、アクセスユニット中のすべてのピクチャについて1または2に等しいものとする。
− アクセスユニット中の0に等しいnuh_layer_idを有するピクチャが、IDRピクチャであり、同じアクセスユニット中の少なくとも1つの非IDRピクチャがあるとき、poc_reset_idcの値は、アクセスユニット中のすべてのピクチャについて2に等しいものとする。
− アクセスユニット中の0に等しいnuh_layer_idを有するピクチャが、IDRピクチャではないとき、poc_reset_idcの値は、アクセスユニット中の任意のピクチャについて2に等しくないものとする。
[0097]アクセスユニットのpoc_reset_idcの値は、アクセスユニット中のピクチャのpoc_reset_idcの値を指す。
[0098]シンタックス要素poc_reset_period_idは、POCリセット期間を識別する。シンタックス要素poc_reset_period_idの同じ値と、1または2に等しいシンタックス要素poc_reset_idcとを有する、同じレイヤにおける復号順序で連続する2つのピクチャがないものとする。
注−あるレイヤにおける複数のピクチャが、poc_reset_pic_idの同じ値を有することと、1または2に等しいpoc_reset_idcを有することとは、そのようなピクチャが復号順序で連続する2つのアクセスユニットにおいて発生しない限り、禁止されない。ピクチャ損失、ビットストリーム抽出、シーク、またはスプライシング動作のために、そのような2つのピクチャがビットストリーム中に現れる見込みを最小限に抑えるために、エンコーダは、(上記で指定された制約を受けて)poc_reset_pic_idの値を、POCリセット期間ごとにランダム値になるように設定するべきである。
[0099]次の制約が適用されることが、ビットストリーム適合の要件である。
− 1つのPOCリセット期間は、1または2に等しいpoc_reset_idcを有する2つ以上のアクセスユニットを含まないものとする。
− 1または2に等しいpoc_reset_idcを有するアクセスユニットは、POCリセット期間における最初のアクセスユニットであるものとする。
[除去:− 1および3に等しいpoc_reset_idcを有するピクチャが、同じPOCリセット期間において存在するとき、poc_reset_idc=3を有するすべてのピクチャは、復号順序において1に等しいpoc_reset_idcを有するピクチャに後続するものとする。]
[除去:− 2および3に等しいpoc_reset_idcを有するピクチャが、同じPOCリセット期間において存在するとき、poc_reset_idc=3を有するすべてのピクチャは、復号順序において2に等しいpoc_reset_idcを有するピクチャに後続するものとする。]
[0100]1に等しいシンタックス要素full_poc_reset_flagは、同じレイヤにおける復号順序において前のピクチャが同じPOCリセット期間に属していないとき、現在ピクチャのためのピクチャ順序カウント値の最上位ビットと最下位ビットの両方がリセットされることを指定する。0に等しいシンタックス要素full_poc_reset_flagは、同じレイヤにおける復号順序において前のピクチャが同じPOCリセット期間に属していないとき、現在ピクチャのためのピクチャ順序カウント値の最上位ビットのみがリセットされることを指定する。
[0101]シンタックス要素poc_lsb_valは、現在ピクチャのピクチャ順序カウントを導出するために使用され得る値を指定する。poc_lsb_valシンタックス要素の長さは、log2_max_pic_order_cnt_lsb_minus4+4ビットである。
[0102]poc_reset_idcが3に等しく、また、現在ピクチャと同じレイヤ内である、1または2に等しいpoc_reset_idcを有する、および同じPOCリセット期間に属する、復号順序における前のピクチャpicAがビットストリーム中に存在するとき、picAは、現在ピクチャと同じレイヤ内である、RASLピクチャ、RADLピクチャまたはサブレイヤ非参照ピクチャではない、および0に等しいTemporalIdを有する、復号順序における前のピクチャと同じピクチャであるものとすること、ならびに、現在ピクチャのpoc_lsb_valの値は、picAのslice_pic_order_cnt_lsbの値に等しいものとすることが、ビットストリーム適合の要件である。
[0103]変数numRsvBitsおよびBytesInSliceSegmtHdrExtは、次のように導出される。
[0104]シンタックス要素slice_segment_header_extension_reserved_bitsは、任意の値を有し得る。slice_segment_header_extension_reserved_bitsシンタックス要素の長さは、numRsvBitsビットに等しい。ビデオデコーダ30などのデコーダは、slice_segment_header_extension_reserved_bitsの値を無視するものとする。その値は、本仕様の本バージョンにおいて指定されているプロファイルへのデコーダ適合に影響を与えない。
[0105]ビデオデコーダ30は、0よりも大きいnuh_layer_idを有するコード化ピクチャの復号を開始するための、次の復号プロセスを実行し得る。以下のプロセスにおいて参照される各「ピクチャ」は、完全コード化ピクチャである。復号プロセスは、現在ピクチャCurrPicについて次のように動作する。
− 本明細書で説明されるように、NALユニットを復号する。
− 従属節F.8.3におけるプロセスは、スライスセグメントレイヤおよびそれ以上におけるシンタックス要素を使用した次の復号プロセスを指定する。
− ピクチャ順序カウントに関係する変数および関数は、従属節F.8.3.1において導出される。これは、ピクチャの最初のスライスセグメントについてのみ呼び出される必要がある。PicOrderCntValがアクセスユニット内で不変のままであるものとすることが、ビットストリーム適合の要件である。DeltaPocValがアクセスユニット内で不変のままであるものとすることもまた、ビットストリーム適合の要件である。
− 従属節F.8.3.2におけるRPSのための復号プロセスが呼び出され、ここにおいて、CurrPicのnuh_layer_idに等しいnuh_layer_idを有する参照ピクチャのみが、「参照のために使用されない」または「長期参照のために使用される」とマークされ得、nuh_layer_idの異なる値を有するいかなるピクチャもマークされない。これは、ピクチャの最初のスライスセグメントについてのみ呼び出される必要がある。
− FirstPicInLayerDecodedFlag[nuh_layer_id]が0に等しいとき、従属節F.8.1.3において指定されている利用不可能な参照ピクチャを生成するための復号プロセスが呼び出され、これは、ピクチャの最初のスライスセグメントについてのみ呼び出される必要がある。
− FirstPicInLayerDecodedFlag[nuh_layer_id]が0に等しくなく、現在ピクチャが、1に等しいNoRaslOutputFlagを有するIRAPピクチャであるとき、従属節F.8.1.3において指定されている利用不可能な参照ピクチャを生成するための復号プロセスが呼び出され、これは、ピクチャの最初のスライスセグメントについてのみ呼び出される必要がある。
[0106]第1の例では、本開示の態様によれば、ビデオデコーダ30は、POC値のための次の復号プロセスを実行し得る。第1の例は、上記で説明されたPOC値をデクリメントするための第1の例示的な技法に対応し得る。すなわち、以下の例は、それにおいてPOCリセットが実行されるアクセスユニットの初期ピクチャを復号するより前に、DPBに記憶された(すべてのレイヤの)すべてのピクチャのPOC値をデクリメントするために使用され得る。POCデクリメントプロセスは、アクセスユニットのための初期ピクチャを復号する前であるが、初期ピクチャの最初のスライスのスライスヘッダ情報をコーディングした後に呼び出され得る。第1の例示的なプロセスは、次のように実行され得る。
このプロセスの出力は、PicOrderCntVal、現在ピクチャのピクチャ順序カウントである。
ピクチャ順序カウントは、マージモードにおける動きパラメータと動きベクトル予測とを導出するために、およびデコーダ適合チェック(従属節C.5参照)のために、ピクチャを識別するために使用される。
各コード化ピクチャは、PicOrderCntValとして示されるピクチャ順序カウント変数に関連付けられる。
FirstPicInLayerDecodedFlag[nuh_layer_id]が1に等しく、poc_reset_idcが0よりも大きく、現在ピクチャを包含するアクセスユニットがPOCリセット期間において復号順序で最初のアクセスユニットである場合、次のことが適用される。
− 変数pocMsbDelta、pocLsbDelta、およびDeltaPocValは、次のように導出される。
− 現在ピクチャのPicOrderCntValは、次のように導出される。
− PrevPicOrderCnt[nuh_layer_id]の値は、次のように導出される。
− 現在ピクチャが、RASLピクチャ、RADLピクチャ、またはサブレイヤ非参照ピクチャではなく、現在ピクチャが、0に等しいTemporalIdを有する場合、PrevPicOrderCnt[nuh_layer_id]は、PicOrderCntValに等しく設定される。
− そうでない場合、poc_reset_idcが3に等しいとき、PrevPicOrderCnt[nuh_layer_id]は、full_poc_reset_flag?0:poc_lsb_valに等しく設定される。
そうでない場合、次のことが適用される。
− DeltaPocValの値は、0に等しく設定される。
− 現在ピクチャのPicOrderCntValは、次のように導出される。
− PrevPicOrderCnt[nuh_layer_id]の値は、次のように導出される。
− 現在ピクチャが、RASLピクチャ、RADLピクチャ、またはサブレイヤ非参照ピクチャではなく、現在ピクチャが、0に等しいTemporalIdを有する場合、PrevPicOrderCnt[nuh_layer_id]は、PicOrderCntValに等しく設定される。
− そうでない場合、FirstPicInLayerDecodedFlag[nuh_layer_id]が0に等しく、poc_reset_idcが3に等しいとき、PrevPicOrderCnt[nuh_layer_id]は、full_poc_reset_flag?0:poc_lsb_valに等しく設定される。
現在ピクチャがアクセスユニット中の最初のピクチャ(すなわち、アクセスユニット中のすべてのピクチャの中でnuh_layer_idの最低値を有するピクチャ)であり、DeltaPocValが0よりも大きい場合、すべてのサブDPB内のすべてのピクチャのPicOrderCntVal値は、DeltaPocValの値だけデクリメントされる。
PicOrderCntValの値は、両端値を含む−231〜231−1の範囲内にあるものとする。1つのCVSの中で、同じレイヤにおける任意の2つのコード化ピクチャのためのPicOrderCntVal値は、同じではないものとする。
関数PicOrderCnt(picX)は、次のように指定される。
関数DiffPicOrderCnt(picA,picB)は、次のように指定される。
ビットストリームは、両端値を含む−215〜215−1の範囲内にはない、復号プロセスにおいて使用されるDiffPicOrderCnt(picA,picB)の値をもたらすデータを包含しないものとする。
注−Xを現在ピクチャとし、YおよびZを同じシーケンス中の2つの他のピクチャとすると、YおよびZは、DiffPicOrderCnt(X,Y)とDiffPicOrderCnt(X,Z)の両方が正であるか、または両方が負であるとき、Xからの同じ出力順序方向であると見なされる。
[0107]第2の例では、本開示の態様によれば、ビデオデコーダ30は、POC値のための次の復号プロセスを実行し得る。第2の例は、上記で説明されたPOC値をデクリメントするための第2の例示的な技法に対応し得る。すなわち、以下の例は、アクセスユニット中の各ピクチャを復号する前であるが、ピクチャの最初のスライスのスライスヘッダ情報のパースおよび復号後、各サブDPB内のより早いピクチャに対して、POCデクリメントプロセスを呼び出すために使用され得る。ビデオデコーダ30はまた、アクセスユニット中に存在するピクチャを復号した後、アクセスユニットのために存在しないかまたは受信されないピクチャを有するレイヤのためのサブDPB内のより早いピクチャの追加のPOCデクリメントプロセスを実行し得る。第2の例示的なプロセスは、次のように実行され得る。
このプロセスの出力は、PicOrderCntVal、現在ピクチャのピクチャ順序カウントである。
ピクチャ順序カウントは、マージモードにおける動きパラメータと動きベクトル予測とを導出するために、およびデコーダ適合チェック(従属節C.5参照)のために、ピクチャを識別するために使用される。
各コード化ピクチャは、PicOrderCntValとして示されるピクチャ順序カウント変数に関連付けられる。
現在ピクチャがアクセスユニット中の最初のピクチャである場合、次のことが適用される。
− PocResetFlagの値が0に設定される。
− 変数DeltaPocValが0に設定される。
− 変数UpdateSubDpbFlag[i]が、両端値を含む0〜63までのiのすべての値について、0に等しく設定される。
FirstPicInLayerDecodedFlag[nuh_layer_id]が1に等しく、poc_reset_idcが0よりも大きく、現在ピクチャを包含するアクセスユニットがPOCリセット期間において復号順序で最初のアクセスユニットである場合、次のことが適用される。
FirstPicInLayerDecodedFlag[nuh_layer_id]が1に等しく、poc_reset_idcが0よりも大きく、現在ピクチャを包含するアクセスユニットがPOCリセット期間において復号順序で最初のアクセスユニットである場合、次のことが適用される。
− 変数pocMsbDelta、pocLsbDelta、およびDeltaPocValは、次のように導出される。
− DPB内にあり、現在ピクチャと同じレイヤに属する各ピクチャのPicOrderCntValは、DeltaPocValだけデクリメントされる。
− 現在ピクチャのPicOrderCntValは、次のように導出される。
− PrevPicOrderCnt[nuh_layer_id]の値は、次のように導出される。
− 現在ピクチャが、RASLピクチャ、RADLピクチャ、またはサブレイヤ非参照ピクチャではなく、現在ピクチャが、0に等しいTemporalIdを有する場合、PrevPicOrderCnt[nuh_layer_id]は、PicOrderCntValに等しく設定される。
− そうでない場合、poc_reset_idcが3に等しいとき、PrevPicOrderCnt[nuh_layer_id]は、full_poc_reset_flag?0:poc_lsb_valに等しく設定される。
そうでない場合、次のことが適用される。
− DeltaPocValの値は、0に等しく設定される
− 現在ピクチャのPicOrderCntValは、次のように導出される。
− PrevPicOrderCnt[nuh_layer_id]の値は、次のように導出される。
− 現在ピクチャが、RASLピクチャ、RADLピクチャ、またはサブレイヤ非参照ピクチャではなく、現在ピクチャが、0に等しいTemporalIdを有する場合、PrevPicOrderCnt[nuh_layer_id]は、PicOrderCntValに等しく設定される。
− そうでない場合、FirstPicInLayerDecodedFlag[nuh_layer_id]が0に等しく、poc_reset_idcが3に等しいとき、PrevPicOrderCnt[nuh_layer_id]は、full_poc_reset_flag?0:poc_lsb_valに等しく設定される。
現在ピクチャがアクセスユニット中の最後のピクチャであり、変数PocResetFlagの値が1に等しい場合、次のことが適用される。
− 両端値を含む0〜63までのiのすべての値について、UpdateSubDpbFlag[i]が0に等しい場合、iに等しいnuh_layer_idを有するDPB内のすべてのピクチャのPicOrderCntValが、変数DeltaPocValの値だけデクリメントされる。
PicOrderCntValの値は、両端値を含む−231〜231−1の範囲内にあるものとする。1つのCVSの中で、同じレイヤにおける任意の2つのコード化ピクチャのためのPicOrderCntVal値は、同じではないものとする。
関数PicOrderCnt(picX)は、次のように指定される。
関数DiffPicOrderCnt(picA,picB)は、次のように指定される。
ビットストリームは、両端値を含む−215〜215−1の範囲内にはない、復号プロセスにおいて使用されるDiffPicOrderCnt(picA,picB)の値をもたらすデータを包含しないものとする。
注−Xを現在ピクチャとし、YおよびZを同じシーケンス中の2つの他のピクチャとすると、YおよびZは、DiffPicOrderCnt(X,Y)とDiffPicOrderCnt(X,Z)の両方が正であるか、または両方が負であるとき、Xからの同じ出力順序方向であると見なされる。
[0108]第3の例では、本開示の態様によれば、ビデオデコーダ30は、POC値のための次の復号プロセスを実行し得る。第3の例は、上記で説明されたPOC値をデクリメントするための第3の例示的な技法に対応し得る。すなわち、以下の例は、アクセスユニット中の各ピクチャの復号前であるが、それぞれのピクチャの最初のスライスのスライスヘッダ情報のパースおよび復号後、各サブDPB内のより早いピクチャに対して、POCデクリメントプロセスを呼び出すために使用され得る。サブDPB内のより早いピクチャのPOCデクリメントプロセスが実行される前に、同じプロセスが1つまたは複数の下位レイヤサブDPBに対してまだ実行されていない場合、このプロセスがそれらのサブDPBに対して実行される。第3の例示的なプロセスは、次のように実行され得る。
このプロセスの出力は、PicOrderCntVal、現在ピクチャのピクチャ順序カウントである。
ピクチャ順序カウントは、マージモードにおける動きパラメータと動きベクトル予測とを導出するために、およびデコーダ適合チェック(従属節C.5参照)のために、ピクチャを識別するために使用される。
各コード化ピクチャは、PicOrderCntValとして示されるピクチャ順序カウント変数に関連付けられる。
現在ピクチャがアクセスユニット中の最初のピクチャである場合、次のことが適用される。
− PocResetFlagの値が0に設定される。
− 変数DeltaPocValが0に設定される。
− 変数UpdateSubDpbFlag[i]が、両端値を含む0〜63までのiのすべての値について、0に等しく設定される。
FirstPicInLayerDecodedFlag[nuh_layer_id]が1に等しく、poc_reset_idcが0よりも大きく、現在ピクチャを包含するアクセスユニットがPOCリセット期間において復号順序で最初のアクセスユニットである場合、次のことが適用される。
− 変数pocMsbDelta、pocLsbDelta、およびDeltaPocValは、次のように導出される。
− 両端値を含む0〜nuh_layer_id−1までのiのすべての値について、UpdateSubDpbFlag[i]が0に等しい場合、DPB内にあり、現在ピクチャと同じレイヤに属する各ピクチャのPicOrderCntValは、DeltaPocValだけデクリメントされる。
− DPB内にあり、現在ピクチャと同じレイヤに属する各ピクチャのPicOrderCntValは、DeltaPocValだけデクリメントされる。
− 現在ピクチャのPicOrderCntValは、次のように導出される。
− PrevPicOrderCnt[nuh_layer_id]の値は、次のように導出される。
− 現在ピクチャが、RASLピクチャ、RADLピクチャ、またはサブレイヤ非参照ピクチャではなく、現在ピクチャが、0に等しいTemporalIdを有する場合、PrevPicOrderCnt[nuh_layer_id]は、PicOrderCntValに等しく設定される。
− そうでない場合、poc_reset_idcが3に等しいとき、PrevPicOrderCnt[nuh_layer_id]は、full_poc_reset_flag?0:poc_lsb_valに等しく設定される。
そうでない場合、次のことが適用される。
− DeltaPocValの値は、0に等しく設定される
− 現在ピクチャのPicOrderCntValは、次のように導出される。
− PrevPicOrderCnt[nuh_layer_id]の値は、次のように導出される。
− 現在ピクチャが、RASLピクチャ、RADLピクチャ、またはサブレイヤ非参照ピクチャではなく、現在ピクチャが、0に等しいTemporalIdを有する場合、PrevPicOrderCnt[nuh_layer_id]は、PicOrderCntValに等しく設定される。
− そうでない場合、FirstPicInLayerDecodedFlag[nuh_layer_id]が0に等しく、poc_reset_idcが3に等しいとき、PrevPicOrderCnt[nuh_layer_id]は、full_poc_reset_flag?0:poc_lsb_valに等しく設定される。
PicOrderCntValの値は、両端値を含む−231〜231−1の範囲内にあるものとする。1つのCVSの中で、同じレイヤにおける任意の2つのコード化ピクチャのためのPicOrderCntVal値は、同じではないものとする。
関数PicOrderCnt(picX)は、次のように指定される。
関数DiffPicOrderCnt(picA,picB)は、次のように指定される。
ビットストリームは、両端値を含む−215〜215−1の範囲内にはない、復号プロセスにおいて使用されるDiffPicOrderCnt(picA,picB)の値をもたらすデータを包含しないものとする。
注−Xを現在ピクチャとし、YおよびZを同じシーケンス中の2つの他のピクチャとすると、YおよびZは、DiffPicOrderCnt(X,Y)とDiffPicOrderCnt(X,Z)の両方が正であるか、または両方が負であるとき、Xからの同じ出力順序方向であると見なされる。
[0109]第4の例では、本開示の態様によれば、ビデオデコーダ30は、POC値のための次の復号プロセスを実行し得る。第4の例は、上記で説明されたPOC値をデクリメントするための第4の例示的な技法に対応し得る。すなわち、以下の例は、POCリセットを必要とする各アクセスユニットを復号することの終了において、DPB内の(すなわち、すべてのサブDPBのための)より早いピクチャのPOCデクリメントプロセスが1回適用されるを実行するために使用され得る。すなわち、ビデオデコーダ30は、POCリセットが実行されるとともにのために、アクセスユニットのすべてのピクチャを復号し、続いてDPBのすべてのピクチャのPOC値をデクリメントし得る。第4の例示的なプロセスは、次のように実行され得る。
このプロセスの出力は、PicOrderCntVal、現在ピクチャのピクチャ順序カウントである。
ピクチャ順序カウントは、マージモードにおける動きパラメータと動きベクトル予測とを導出するために、およびデコーダ適合チェック(従属節C.5参照)のために、ピクチャを識別するために使用される。
各コード化ピクチャは、PicOrderCntValとして示されるピクチャ順序カウント変数に関連付けられる。
FirstPicInLayerDecodedFlag[nuh_layer_id]が1に等しく、poc_reset_idcが0よりも大きく、現在ピクチャを包含するアクセスユニットがPOCリセット期間において復号順序で最初のアクセスユニットである場合、次のことが適用される。
− 変数pocMsbDelta、pocLsbDelta、およびDeltaPocValは、次のように導出される。
− 現在ピクチャのPicOrderCntValは、次のように導出される。
− PrevPicOrderCnt[nuh_layer_id]の値は、次のように導出される。
− 現在ピクチャが、RASLピクチャ、RADLピクチャ、またはサブレイヤ非参照ピクチャではなく、現在ピクチャが、0に等しいTemporalIdを有する場合、PrevPicOrderCnt[nuh_layer_id]は、PicOrderCntValに等しく設定される。
− そうでない場合、poc_reset_idcが3に等しいとき、PrevPicOrderCnt[nuh_layer_id]は、full_poc_reset_flag?0:poc_lsb_valに等しく設定される。
そうでない場合、次のことが適用される。
− DeltaPocValの値は、0に等しく設定される
− 現在ピクチャのPicOrderCntValは、次のように導出される。
− PrevPicOrderCnt[nuh_layer_id]の値は、次のように導出される。
− 現在ピクチャが、RASLピクチャ、RADLピクチャ、またはサブレイヤ非参照ピクチャではなく、現在ピクチャが、0に等しいTemporalIdを有する場合、PrevPicOrderCnt[nuh_layer_id]は、PicOrderCntValに等しく設定される。
− そうでない場合、FirstPicInLayerDecodedFlag[nuh_layer_id]が0に等しく、poc_reset_idcが3に等しいとき、PrevPicOrderCnt[nuh_layer_id]は、full_poc_reset_flag?0:poc_lsb_valに等しく設定される。
現在ピクチャがアクセスユニット中の最後のピクチャであり、変数DeltaPocValの値が0よりも大きい場合、すべてのサブDPB内のすべてのピクチャのPicOrderCntValは、変数DeltaPocValの値だけデクリメントされる。
PicOrderCntValの値は、両端値を含む−231〜231−1の範囲内にあるものとする。1つのCVSの中で、同じレイヤにおける任意の2つのコード化ピクチャのためのPicOrderCntVal値は、同じではないものとする。
関数PicOrderCnt(picX)は、次のように指定される。
関数DiffPicOrderCnt(picA,picB)は、次のように指定される。
ビットストリームは、両端値を含む−215〜215−1の範囲内にはない、復号プロセスにおいて使用されるDiffPicOrderCnt(picA,picB)の値をもたらすデータを包含しないものとする。
注−Xを現在ピクチャとし、YおよびZを同じシーケンス中の2つの他のピクチャとすると、YおよびZは、DiffPicOrderCnt(X,Y)とDiffPicOrderCnt(X,Z)の両方が正であるか、または両方が負であるとき、Xからの同じ出力順序方向であると見なされる。
[0110]このようにして、ビデオエンコーダ20およびビデオデコーダ30は、マルチレイヤビデオデータの第1のレイヤの第1のピクチャのピクチャ順序カウント(POC)値のためのPOCリセットを示すデータをコーディングすることと、ここにおいて、第1のピクチャがアクセスユニット中に含まれる、第1のピクチャのPOC値のためのPOCリセットを示すデータに基づいて、および、第1のピクチャを復号するより前に、マルチレイヤビデオデータの第2のレイヤの少なくとも1つのピクチャを含む、コーディング順序において第1のピクチャに先行する、DPBに記憶されたすべてのピクチャのPOC値をデクリメントすることとを行うように構成された、ビデオコーダの例を表す。
[0111]図2は、本開示の技法による、POC値を管理するための技法を実装し得る、ビデオエンコーダ20の一例を示すブロック図である。特に、ビデオエンコーダ20は、本開示の技法に従って、マルチレイヤビットストリームのピクチャのPOC値を管理するように構成され得る。上述されたように、ビデオエンコーダ20は、マルチビューおよび/またはスケーラブルビデオコーディングを実行するように適応され得る。たとえば、ビデオエンコーダ20は、SHVC、MV−HEVC、または3D−HEVCなどの1つまたは複数のビデオコーディング規格の拡張に適合するビットストリームを符号化するように構成され得る。ただし、特定のコーディング規格が参照されるが、本技法は、任意の1つのコーディング規格に固有のものではなく、将来のおよび/またはまだ開発されていない規格とともに実装され得ることを理解されたい。
[0112]ビデオエンコーダ20は、ビデオスライス内のビデオブロックのイントラコーディングとインターコーディングとを実行し得る。イントラコーディングは、所与のビデオフレームまたはピクチャ内のビデオ中の空間的冗長性を低減または除去するために、空間的予測に依拠する。インターコーディングは、ビデオシーケンスの隣接するフレームまたはピクチャ内のビデオ中の時間的冗長性を低減または除去するために、時間的予測に依拠する。イントラモード(Iモード)は、いくつかの空間ベースのコーディングモードのいずれかを指し得る。単一方向予測(Pモード)または双予測(Bモード)などのインターモードは、いくつかの時間ベースのコーディングモードのいずれかを指し得る。
[0113]図2に示されているように、ビデオエンコーダ20は、符号化されるべきビデオフレーム内で現在ビデオブロックを受信する。図2の例では、ビデオエンコーダ20は、ビデオデータメモリ38と、モード選択ユニット40と、参照ピクチャメモリ64と、加算器50と、変換処理ユニット52と、量子化ユニット54と、エントロピー符号化ユニット56とを含む。モード選択ユニット40は、動き補償ユニット44と、動き推定ユニット42と、イントラ予測ユニット46と、区分ユニット48とを含む。ビデオブロックの再構築のために、ビデオエンコーダ20は、また、逆量子化ユニット58と、逆変換ユニット60と、加算器62とを含む。デブロッキングフィルタ(図2に図示せず)も、再構築されたビデオからブロッキネスアーティファクトを除去するために、ブロック境界をフィルタリングするために含まれ得る。所望される場合、デブロッキングフィルタは、通常、加算器62の出力をフィルタリングすることになる。追加のフィルタ(ループ内またはループ後)も、デブロッキングフィルタに加えて使用され得る。そのようなフィルタは、簡潔のために示されていないが、所望される場合、(ループ内フィルタとして)加算器50の出力をフィルタリングし得る。
[0114]符号化プロセス中に、ビデオエンコーダ20は、コーディングされるべきビデオフレームまたはスライスを受信する。フレームまたはスライスは、複数のビデオブロックに分割され得る。ビデオデータメモリ38は、ビデオエンコーダ20の構成要素によって符号化されるべきビデオデータを記憶し得る。ビデオデータメモリ38内に記憶されるビデオデータは、たとえば、ビデオソース18から取得され得る。参照ピクチャメモリ64は、たとえば、イントラコーディングモードまたはインターコーディングモードで、ビデオエンコーダ20によってビデオデータを符号化する際に使用するための参照ビデオデータを記憶する、DPBと呼ばれることがある。ビデオデータメモリ38および参照ピクチャメモリ64は、同期DRAM(SDRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM(登録商標))、または他のタイプのメモリデバイスを含む、ダイナミックランダムアクセスメモリ(DRAM)など、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ38および参照ピクチャメモリ64は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ38は、ビデオエンコーダ20の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
[0115]動き推定ユニット42および動き補償ユニット44は、時間的予測を行うために、1つまたは複数の参照フレーム中の1つまたは複数のブロックに対する受信されたビデオブロックのインター予測コーディングを実行する。イントラ予測ユニット46は、代替的に、空間的予測を行うために、コーディングされるべきブロックと同じフレームまたはスライス中の1つまたは複数の隣接ブロックに対する受信されたビデオブロックのイントラ予測コーディングを実行し得る。ビデオエンコーダ20は、たとえば、ビデオデータのブロックごとに適当なコーディングモードを選択するために、複数のコーディングパスを実行し得る。
[0116]その上、区分ユニット48は、前のコーディングパスでの前の区分方式の評価に基づいて、ビデオデータのブロックをサブブロックに区分し得る。たとえば、区分ユニット48は、最初にフレームまたはスライスをLCUに区分し、レートひずみ分析(たとえば、レートひずみ最適化)に基づいて、LCUの各々をサブCUに区分し得る。モード選択ユニット40は、サブCUへのLCUの区分を示す4分木データ構造をさらに生成し得る。4分木のリーフノードCUは、1つまたは複数のPUと1つまたは複数のTUとを含み得る。
[0117]モード選択ユニット40は、たとえば、誤差結果に基づいて、コーディングモードのうちの1つ、すなわち、イントラまたはインターを選択し得、得られたイントラコード化ブロックまたはインターコード化ブロックを、残差ブロックデータを生成するために加算器50に、参照フレームとしての使用のために符号化されたブロックを再構築するために加算器62に与える。モード選択ユニット40はまた、動きベクトル、イントラモードインジケータ、区分情報、および他のそのようなシンタックス情報などのシンタックス要素をエントロピー符号化ユニット56に与える。
[0118]動き推定ユニット42および動き補償ユニット44は、高度に統合され得るが、概念上の目的から別々に示されている。動き推定ユニット42によって実行される動き推定は、ビデオブロックに関する動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、現在スライス(または、他のコード化ユニット)内で符号化されている現在ブロックに対する参照ピクチャ(または、他のコード化ユニット)内の予測ブロックに対する現在ビデオフレームまたはピクチャ内のビデオブロックのPUの変位を示し得る。予測ブロックは、絶対差分和(SAD)、2乗差分和(SSD)、または他の差分メトリクスによって決定され得るピクセル差分の観点で、符号化されるべきブロックと厳密に一致することが見出されるブロックである。
[0119]動き推定ユニット42は、PUの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコード化スライス中のビデオブロックのPUの動きベクトルを計算する。参照ピクチャは、第1の参照ピクチャリスト(リスト0)または第2の参照ピクチャリスト(リスト1)から選択され得、それらの参照ピクチャリストの各々は、参照ピクチャメモリ64に記憶された1つまたは複数の参照ピクチャを識別する。動き推定ユニット42は、計算された動きベクトルをエントロピー符号化ユニット56と動き補償ユニット44とに送る。
[0120]動き補償ユニット44によって実行される動き補償は、動き推定ユニット42によって決定された動きベクトルに基づいて、予測ブロックをフェッチまたは生成することを伴い得る。同じく、動き推定ユニット42および動き補償ユニット44は、いくつかの例では、機能的に統合され得る。現在ビデオブロックのPUのための動きベクトルを受信すると、動き補償ユニット44は、動きベクトルが参照ピクチャリストのうちの1つにおいてそれを指す予測ブロックの位置を特定し得る。加算器50は、以下で説明されるように、符号化されている現在ビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成することによって、残差ビデオブロックを形成する。一般に、動き推定ユニット42は、ルーマ成分に対して動き推定を実行し、動き補償ユニット44は、クロマ成分とルーマ成分の両方に関して、ルーマ成分に基づいて計算された動きベクトルを使用する。モード選択ユニット40は、ビデオスライスのビデオブロックを復号する際のビデオデコーダ30による使用のために、ビデオブロックとビデオスライスとに関連付けられたシンタックス要素を生成することもできる。
[0121]動き推定ユニット42は、参照ピクチャメモリ64のDPB内に記憶された参照ピクチャを探索する。モード選択ユニット40は、ピクチャ、ピクチャのスライス、および/またはピクチャのシーケンスを符号化するために、どの参照ピクチャが使用されるべきであるかを決定し得る。ビデオエンコーダ20は、ピクチャ、スライス、またはシーケンスを符号化するために使用される参照ピクチャのためのピクチャ順序カウント(POC)値を符号化し得る。ビデオエンコーダ20は、スライスヘッダ、ならびに/または、PPSおよび/もしくはSPSなどのパラメータセット中で、参照ピクチャリスト中に含まれるべき参照ピクチャを示すPOC値を符号化し得る。
[0122]このようにして、ビデオデコーダ30などのビデオデコーダは、スライスヘッダおよび/またはパラメータセット中で示された参照ピクチャを含めることによって、参照ピクチャリストを再生し得る。さらに、動き推定ユニット42によって生成された動きベクトルを使用して、ブロックを符号化した後、ビデオエンコーダ20は、ブロックについての動き情報を符号化し得、ただし、動き情報は、動きベクトルを表すデータと、参照ピクチャリストのための識別子と、参照ピクチャリスト中の参照ピクチャを識別する参照インデックスとを含み得る。
[0123]いくつかの例では、ビデオエンコーダ20は、参照ピクチャメモリ64内に記憶された参照ピクチャのサブ整数ピクセル位置のための値を計算し得る。たとえば、ビデオエンコーダ20は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置、または他の分数ピクセル位置の値を補間し得る。したがって、動き推定ユニット42は、フルピクセル位置および分数ピクセル位置に対して動き探索を実行し、分数ピクセル精度で動きベクトルを出力し得る。
[0124]ビデオエンコーダ20はまた、POCリセット期間を形成し、それぞれのPOCリセット期間にスライスを割り当てるために、ピクチャのスライスのためのPOCリセット期間識別子のための値を符号化し得る。ビデオエンコーダ20は、ビデオデータの各レイヤ内で個々にPOCリセット期間にスライスを割り当て得る。その上、ビデオエンコーダ20は、スライスのためのPOCリセットタイプを決定し、スライスのためのPOCリセットタイプの指示のための値(たとえば、2ビット値)を符号化し得る。
[0125]図1に関して説明されたように、ビデオエンコーダ20は、適用可能なビデオコーディング規格によって確立された制限に従って構成され得る。たとえば、ビデオエンコーダ20は、各POCリセット期間における最初のピクチャが、POC値が完全または部分的にリセットされるべきであることを示すPOCリセットタイプを有することを保証し得る。さらに、ビデオエンコーダ20は、いくつかの例では、POCリセット期間のPOCアンカーピクチャのためのPOC LSB値を示し得る、POC LSB値を示す追加の情報を符号化し得る。
[0126]ビデオエンコーダ20はまた、参照ピクチャメモリ64のDPB内の参照ピクチャのPOC値をデクリメントし得る。本開示の態様によれば、ビデオエンコーダ20は、それにおいてPOCリセットが実行されるアクセスユニットの初期ピクチャを符号化するより前に、参照ピクチャメモリ64に記憶された(すべてのレイヤの)すべてのピクチャのPOC値をデクリメントするように構成され得る。いくつかの例では、ビデオエンコーダ20は、そのためにPOCリセットが実行されているアクセスユニットを符号化するときに1回のみ、参照ピクチャメモリ64のすべてのサブDPB(その場合、ビデオデータの各レイヤがそれぞれのサブDPBに関連付けられる)中のより早いピクチャに、POCデクリメントプロセスを適用し得る。
[0127]参照ピクチャメモリ64に記憶された参照ピクチャをデクリメントすることによって、ビデオエンコーダ20は、参照ピクチャリスト中に含まれるべき参照ピクチャを示すために、スライスヘッダおよび/またはパラメータセット中でPOC値を符号化するとき、デクリメントされたPOC値を使用し得る。ビデオエンコーダ20がDPB内のピクチャのPOC値をデクリメントする量は、POCアンカーピクチャがデクリメントされる量と同じ量であり得る。POCアンカーピクチャのPOCリセットは、POCアンカーピクチャのPOC MSBのみをリセットすること、または完全なPOC値をリセットすることに限定され得る。
[0128]イントラ予測ユニット46は、上記で説明されたように、動き推定ユニット42と動き補償ユニット44とによって実行されるインター予測の代替として、現在ブロックをイントラ予測し得る。特に、イントラ予測ユニット46は、現在ブロックを符号化するために使用すべきイントラ予測モードを決定し得る。いくつかの例では、イントラ予測ユニット46は、たとえば別々の符号化パス中に、様々なイントラ予測モードを使用して現在ブロックを符号化し得、イントラ予測ユニット46(または、いくつかの例では、モード選択ユニット40)は、テストされたモードから使用すべき適当なイントラ予測モードを選択し得る。
[0129]たとえば、イントラ予測ユニット46は、様々なテストされたイントラ予測モードのためのレートひずみ分析を使用してレートひずみ値を計算し、テストされたモードの中で最良のレートひずみ特性を有するイントラ予測モードを選択し得る。レートひずみ分析は、概して、符号化ブロックと、符号化ブロックを生成するために符号化された元の符号化されていないブロックとの間のひずみ(または誤差)の量、ならびに符号化ブロックを生成するために使用されるビットレート(すなわち、ビット数)を決定する。イントラ予測ユニット46は、どのイントラ予測モードがブロックについて最良のレートひずみ値を呈するかを決定するために、様々な符号化ブロックのひずみおよびレートから比を計算し得る。
[0130]ブロックのためのイントラ予測モードを選択した後、イントラ予測ユニット46は、ブロックのための選択されたイントラ予測モードを示す情報をエントロピー符号化ユニット56に与え得る。エントロピー符号化ユニット56は、選択されたイントラ予測モードを示す情報を符号化し得る。ビデオエンコーダ20は、複数のイントラ予測モードインデックステーブルおよび複数の修正されたイントラ予測モードインデックステーブル(コードワードマッピングテーブルとも呼ばれる)と、様々なブロックの符号化コンテキストの定義と、コンテキストの各々について使用すべき、最確イントラ予測モード、イントラ予測モードインデックステーブル、および修正されたイントラ予測モードインデックステーブルの指示とを含み得る構成データを送信ビットストリーム中に含め得る。
[0131]ビデオエンコーダ20は、モード選択ユニット40からの予測データを、コーディングされている元のビデオブロックから減算することによって、残差ビデオブロックを形成する。加算器50は、この減算演算を実行する、1つまたは複数の構成要素を表す。変換処理ユニット52は、離散コサイン変換(DCT)または概念的に類似する変換などの変換を残差ブロックに適用し、残差変換係数値を備えるビデオブロックを生成する。変換処理ユニット52は、DCTに概念的に類似する他の変換を実行することができる。ウェーブレット変換、整数変換、サブバンド変換、または他のタイプの変換も使用され得る。いずれの場合でも、変換処理ユニット52は、変換を残差ブロックに適用し、残差変換係数のブロックを生成する。変換は、ピクセル値領域からの残差情報を、周波数領域などの変換領域に変換し得る。
[0132]変換処理ユニット52は、得られた変換係数を量子化ユニット54へ送り得る。量子化ユニット54は、ビットレートをさらに低減するために変換係数を量子化する。量子化プロセスは、係数の一部またはすべてに関連付けられたビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって、修正され得る。いくつかの例では、量子化ユニット54は次いで、量子化された変換係数を含む行列の走査を実行し得る。代替的に、エントロピー符号化ユニット56が、走査を実行し得る。
[0133]量子化に続いて、エントロピー符号化ユニット56は、量子化された変換係数をエントロピーコーディングする。たとえば、エントロピー符号化ユニット56は、コンテキスト適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)、確率間隔区分エントロピー(PIPE)コーディングまたは別のエントロピーコーディング技法を実行し得る。コンテキストベースのエントロピーコーディングの場合、コンテキストは、隣接ブロックに基づき得る。エントロピー符号化ユニット56によるエントロピーコーディングに続いて、符号化ビットストリームは、別のデバイス(たとえば、ビデオデコーダ30)に送信されるか、または後で送信するかもしくは取り出すためにアーカイブされ得る。
[0134]逆量子化ユニット58および逆変換ユニット60は、たとえば、参照ブロックとして後で使用するために、ピクセル領域中で残差ブロックを再構築するために、それぞれ逆量子化および逆変換を適用する。動き補償ユニット44は、残差ブロックを参照ピクチャメモリ64のフレームのうちの1つの予測ブロックに加算することによって参照ブロックを計算し得る。動き補償ユニット44はまた、動き推定において使用するためのサブ整数ピクセル値を計算するために、再構築された残差ブロックに1つまたは複数の補間フィルタを適用し得る。加算器62は、参照ピクチャメモリ64に記憶するための再構築されたビデオブロックを生成するために、動き補償ユニット44によって生成された動き補償予測ブロックに再構築された残差ブロックを加算する。再構築されたビデオブロックは、動き推定ユニット42および動き補償ユニット44によって、後続のビデオフレーム中のブロックをインターコーディングするために参照ブロックとして使用され得る。
[0135]このようにして、図2のビデオエンコーダ20は、マルチレイヤビデオデータの第1のレイヤの第1のピクチャのピクチャ順序カウント(POC)値のためのPOCリセットを示すデータを符号化すること、その場合、第1のピクチャがアクセスユニット中に含まれる、を行うように構成されたビデオエンコーダの一例を表す。ビデオエンコーダ20はまた、第1のピクチャのPOC値のためのPOCリセットを示すデータに基づいて、および、第1のピクチャを復号するより前に、マルチレイヤビデオデータの第2のレイヤの少なくとも1つのピクチャを含む、コーディング順序において第1のピクチャに先行する、復号ピクチャバッファ(DPB)に記憶されたすべてのピクチャのPOC値をデクリメントすることを行うようにも構成される。
[0136]図3は、本開示の技法による、POC値を管理するための技法を実装し得る、ビデオデコーダ30の一例を示すブロック図である。上述されたように、ビデオデコーダ30は、マルチビューおよび/またはスケーラブルビデオコーディングを実行するように適応され得る。たとえば、ビデオデコーダ30は、SHVC、MV−HEVC、または3D−HEVCなどの1つまたは複数のビデオコーディング規格の拡張に適合するビットストリームを復号するように構成され得る。ただし、特定のコーディング規格が参照されるが、本技法は、任意の1つのコーディング規格に固有のものではなく、将来のおよび/またはまだ開発されていない規格とともに実装され得ることを理解されたい。
[0137]図3の例では、ビデオデコーダ30は、ビデオデータメモリ68と、エントロピー復号ユニット70と、動き補償ユニット72と、イントラ予測ユニット74と、逆量子化ユニット76と、逆変換ユニット78と、参照ピクチャメモリ82と、加算器80とを含む。ビデオデコーダ30は、いくつかの例では、ビデオエンコーダ20(図2)に関して説明された符号化パスに対して概ね相反の復号パスを実行し得る。動き補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルに基づいて、予測データを生成し得、一方、イントラ予測ユニット74は、エントロピー復号ユニット70から受信されたイントラ予測モードインジケータに基づいて、予測データを生成し得る。
[0138]ビデオデータメモリ68は、ビデオデコーダ30の構成要素によって復号されるべき、符号化ビデオビットストリームなどのビデオデータを記憶し得る。ビデオデータメモリ68内に記憶されるビデオデータは、たとえば、コンピュータ可読媒体から、たとえば、カメラなどのローカルビデオソースから、ビデオデータのワイヤードもしくはワイヤレスネットワーク通信を介して、または物理データ記憶媒体にアクセスすることによって取得され得る。ビデオデータメモリ68は、符号化ビデオビットストリームからの符号化ビデオデータを記憶するコード化ピクチャバッファ(CPB)を形成し得る。参照ピクチャメモリ82は、たとえば、イントラコーディングモードまたはインターコーディングモードで、ビデオデコーダ30によってビデオデータを復号する際に使用するための参照ビデオデータを記憶する、DPBと呼ばれることがある。ビデオデータメモリ68および参照ピクチャメモリ82は、同期DRAM(SDRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM)、または他のタイプのメモリデバイスを含む、ダイナミックランダムアクセスメモリ(DRAM)など、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ68および参照ピクチャメモリ82は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ68は、ビデオデコーダ30の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
[0139]復号プロセス中に、ビデオデコーダ30は、ビデオエンコーダ20から、符号化ビデオスライスのビデオブロックと、関連付けられるシンタックス要素とを表す、符号化ビデオビットストリームを受信する。ビデオデコーダ30のエントロピー復号ユニット70は、量子化された係数と、動きベクトルまたはイントラ予測モードインジケータと、他のシンタックス要素とを生成するために、ビットストリームをエントロピー復号する。エントロピー復号ユニット70は、動きベクトルと他のシンタックス要素とを動き補償ユニット72へ転送する。ビデオデコーダ30は、ビデオスライスレベルおよび/またはビデオブロックレベルでシンタックス要素を受信し得る。
[0140]ビデオスライスが、イントラコード化(I)スライスとしてコーディングされるとき、イントラ予測ユニット74は、現在フレームまたはピクチャの以前に復号されたブロックから、シグナリングされたイントラ予測モードおよびデータに基づいて、現在ビデオスライスのビデオブロックのための予測データを生成し得る。ビデオフレームが、インターコード化(すなわち、B、P、またはGPB)スライスとしてコーディングされるとき、動き補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルと他のシンタックス要素とに基づいて、現在ビデオスライスのビデオブロックのための予測ブロックを生成する。予測ブロックは、参照ピクチャリストのうちの1つの中の参照ピクチャのうちの1つから生成され得る。ビデオデコーダ30は、参照ピクチャメモリ82のDPB内に記憶された参照ピクチャに基づいて、デフォルトの構築技法を使用して、参照フレームリストのリスト0とリスト1とを構築し得る。
[0141]より詳細には、ビデオデコーダ30は、PPSに対応するピクチャのスライスがピクチャ順序カウント(POC)リセット情報を含むか否かを示すPPSを復号し得る。スライスがPOCリセット情報を含むと仮定すると、ビデオデコーダ30は、POCリセット情報を含むピクチャのスライスのスライスセグメントヘッダを復号し得る。POCリセット情報は、POCリセット期間識別子とPOCリセットタイプとを含み得る。
[0142]POCリセット期間識別子は、スライスが対応するPOCリセット期間を示し得る。POCリセットタイプは、スライスを含むピクチャのPOC値が完全にリセットされるか否か、または、POC値のMSBのみがリセットされることを示し得る。さらに、POCリセットタイプは、POCリセットが実行されるべきではないこと、または追加の情報がシグナリングされることを示し得る。POCリセットタイプが、追加の情報がシグナリングされることを示す場合、ビデオデコーダ30は、POC LSB値と、POC値が完全にリセットされるか、MSBのみがリセットされるかとを示し得る、追加の情報を復号し得る。
[0143]本開示の態様によれば、アクセスユニットの初期ピクチャのビデオデータのスライスのためのPOCリセットを示す情報を復号した後であるが、アクセスユニットのビデオデータを復号するより前に、ビデオデコーダ30は、参照ピクチャメモリ82に記憶されたピクチャのPOC値をデクリメントし得る。本開示の態様によれば、いくつかの例では、ビデオデコーダ30は、POCリセットが実行されるとともにのために、アクセスユニットの初期ピクチャのビデオデータを復号するより前に、参照ピクチャメモリ82に記憶された(すべてのレイヤの)すべてのピクチャのPOC値をデクリメントするように構成され得る。ビデオデコーダ30は、そのためにPOCリセットが実行されているアクセスユニットを復号するときに1回のみ、参照ピクチャメモリ82のすべてのサブDPB(その場合、ビデオデータの各レイヤがそれぞれのサブDPBに関連付けられる)中のより早いピクチャに、POCデクリメントプロセスを適用し得る。
[0144]POCリセットを実行した後、ビデオデコーダ30は、参照ピクチャリスト中に含まれるべき参照ピクチャのPOC値を復号し得る。ビデオデコーダ30は、スライスセグメントヘッダ中で、および/または、PPSもしくはSPSなどのパラメータセットから、これらのPOC値を復号し得る。次いで、ビデオデコーダ30は、復号されたPOC値によって識別された参照ピクチャを含む参照ピクチャリストを構築し得る。
[0145]スライスのための参照ピクチャリストを構築した後、ビデオデコーダ30は、スライスのブロックを復号し得る。動き補償ユニット72は、動きベクトルと他のシンタックス要素とをパースすることによって現在ビデオスライスのビデオブロックに関する予測情報を決定し、復号されている現在ビデオブロックの予測ブロックを生成するために、その予測情報を使用する。たとえば、動き補償ユニット72は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード(たとえば、イントラ予測またはインター予測)と、インター予測スライスタイプ(たとえば、Bスライス、Pスライス、またはGPBスライス)と、スライスの各インター符号化ビデオブロックのための動きベクトルと、スライスの各インターコード化ビデオブロックのためのインター予測ステータスと、現在ビデオスライス中のビデオブロックを復号するための他の情報とを決定するために、受信されたシンタックス要素のいくつかを使用する。インター予測ブロックのための動き情報は、ブロックを予測するために使用すべき参照ピクチャリスト中の参照ピクチャを識別するために、参照ピクチャリスト識別子と参照インデックスとを含み得る。
[0146]動き補償ユニット72は、補間フィルタに基づいて補間を実行することもできる。動き補償ユニット72は、参照ブロックのサブ整数ピクセルのための補間値を計算するために、ビデオブロックの符号化中にビデオエンコーダ20によって使用された補間フィルタを使用し得る。この場合、動き補償ユニット72は、受信されたシンタックス要素からビデオエンコーダ20によって使用された補間フィルタを決定し、予測ブロックを生成するために、その補間フィルタを使用し得る。
[0147]逆量子化ユニット76は、ビットストリーム中で与えられ、エントロピー復号ユニット70によって復号された、量子化された変換係数を逆量子化(inverse quantize)、すなわち、逆量子化(de-quantize)する。逆量子化プロセスは、量子化の程度を決定し、同様に、適用されるべき逆量子化の程度を決定するための、ビデオスライス中の各ビデオブロックに関してビデオデコーダ30によって計算される量子化パラメータQPYの使用を含み得る。
[0148]逆変換ユニット78は、ピクセル領域において残差ブロックを生成するために、逆変換、たとえば、逆DCT、逆整数変換、または概念的に同様の逆変換プロセスを変換係数に適用する。
[0149]動き補償ユニット72が、動きベクトルおよび他のシンタックス要素に基づいて現在ビデオブロックのための予測ブロックを生成した後、ビデオデコーダ30は、逆変換ユニット78からの残差ブロックを動き補償ユニット72によって生成された対応する予測ブロックと加算することによって、復号ビデオブロックを形成する。加算器80は、この加算演算を実行する1つまたは複数の構成要素を表す。所望される場合、ブロッキネスアーティファクトを除去するために、復号されたブロックをフィルタリングするためのデブロッキングフィルタも適用され得る。(コーディングループ中の、またはコーディングループ後のいずれかにおける)他のループフィルタも、ピクセルの遷移を平滑化し、または場合によっては、ビデオ品質を改善するために使用され得る。所与のフレームまたはピクチャ中の復号ビデオブロックは、次いで、参照ピクチャメモリ82に記憶され、この参照ピクチャメモリ82は、後続の動き補償のために使用される参照ピクチャを記憶する。参照ピクチャメモリ82はまた、復号ビデオを、図1のディスプレイデバイス32などのディスプレイデバイス上に後で提示するために記憶する。
[0150]このようにして、図3のビデオデコーダ30は、マルチレイヤビデオデータの第1のレイヤの第1のピクチャのピクチャ順序カウント(POC)値のためのPOCリセットを示すデータを復号すること、その場合、第1のピクチャがアクセスユニット中に含まれる、を行うように構成されたビデオデコーダの一例を表す。ビデオデコーダ30はまた、第1のピクチャのPOC値のためのPOCリセットを示すデータに基づいて、および、第1のピクチャを復号するより前に、マルチレイヤビデオデータの第2のレイヤの少なくとも1つのピクチャを含む、コーディング順序において第1のピクチャに先行する、復号ピクチャバッファ(DPB)に記憶されたすべてのピクチャのPOC値をデクリメントすることのためにも構成される。
[0151]図4は、本開示の技法による、スライスのためのPOCリセット期間を示すデータを符号化するための例示的な方法を示すフローチャートである。加えて、図4の方法は、現在ブロックを符号化することを含む。現在ブロックは、現在CU、または現在CUの一部分を備え得る。ビデオエンコーダ20(図1および図2)に関して説明されるが、他のデバイスが図4の方法と同様の方法を実行するように構成され得ることを理解されたい。
[0152]この例では、ビデオエンコーダ20は、現在スライスをPOCリセット期間に割り当て得る(148)。たとえば、現在スライスがアンカーピクチャの一部を形成する場合、ビデオエンコーダ20は、現在スライスが前のPOCリセット期間識別子とは異なるPOCリセット期間識別子を有する新しいPOCリセット期間の開始を形成することをシグナリングし得る。代替的に、現在スライスがアンカーピクチャの一部を形成しない場合、ビデオエンコーダ20は、現在スライスが既存のPOCリセット期間の一部を形成することをシグナリングし得る。
[0153]次いで、ビデオエンコーダ20は、DPB内に現在あるすべてのピクチャの参照ピクチャのPOC値をデクリメントする(150)。すなわち、本開示の態様によれば、ビデオエンコーダ20は、DPBのすべてのサブDPB内のピクチャのPOC値をデクリメントし得る。ビデオエンコーダ20は、現在スライスをPOCリセット期間に割り当てた(たとえば、スライスヘッダを符号化した)後であるが、最初のスライスのビデオデータを符号化するより前に、POC値をデクリメントし得る。ビデオエンコーダ20は、DPB内のピクチャのPOC値を、同じデクリメント値だけデクリメントし得る。
[0154]次いで、ビデオエンコーダ20は、参照ピクチャのうちの少なくともいくつかを含む参照ピクチャリストを形成する(152)。ビデオエンコーダ20は、参照ピクチャリスト中に含まれた参照ピクチャのPOC値をさらにシグナリングする(154)。たとえば、ビデオエンコーダ20は、SPSもしくはPPSなどのパラメータセット中、および/またはスライスのためのスライスヘッダ中で、参照ピクチャのためのPOC値(または、POC値の部分、たとえば、POC LSB値)を符号化し得る。いくつかの参照ピクチャ(たとえば、長期参照ピクチャ)は、パラメータセット中でシグナリングされ得るのに対して、他の参照ピクチャ(たとえば、短期参照ピクチャ)は、スライスヘッダ中でシグナリングされ得る。
[0155]たとえば、現在スライスのブロックのための、最良のレートひずみ特性を生じる参照ピクチャのセットを決定するために、参照ピクチャリストを形成するステップと、どのピクチャが参照ピクチャリスト中に含まれるかをシグナリングするステップとが、いくつかの異なる符号化パスを介して複数回実行され得ることを理解されたい。すなわち、ビデオエンコーダ20は、単一のブロックの個々の特性のみに基づくのではなく、現在スライス中のすべてのブロックの特性に基づいて、参照ピクチャリスト中に含まれた参照ピクチャのセットを選択し得る。
[0156]次いで、ビデオエンコーダ20は、現在スライスの現在ブロックを予測し得る(156)。たとえば、ビデオエンコーダ20は、現在ブロックの1つまたは複数の予測ユニット(PU)を計算し得る。より詳細には、動き推定ユニット42は、たとえば、SAD、SSD、MAD、MSD、または他の誤差計算メトリクスに基づいて、参照ブロックとして使用される一致するブロックを識別するために、参照ピクチャリストの参照ピクチャの中で現在ブロックの動き探索を実行し得る。動き推定ユニット42は、動き探索に基づいて、現在ブロックのための動きベクトルを生成し得る。次いで、ビデオエンコーダ20は、ブロックのための動き情報を符号化し得(158)、ブロックのための動き情報は、参照ブロックを一緒に識別する、動きベクトルのための動きベクトル差分値と、参照ピクチャリスト識別子と、参照インデックスとを含み得る。
[0157]次いで、ビデオエンコーダ20は、たとえば、変換ユニット(TU)を生成するために、現在ブロックのための残差ブロックを計算し得る(160)。残差ブロックを計算するために、ビデオエンコーダ20は、元のコーディングされていないブロックと現在ブロックのための予測ブロックとの間の差分を計算し得る。次いで、ビデオエンコーダ20は、残差ブロックの係数を変換および量子化し得る(162)。次に、ビデオエンコーダ20は、残差ブロックの量子化された変換係数を走査し得る(164)。走査中に、または走査に続いて、ビデオエンコーダ20は、係数をエントロピー符号化し得る(166)。たとえば、ビデオエンコーダ20は、CAVLCまたはCABACを使用して係数を符号化し得る。次いで、ビデオエンコーダ20は、ブロックのエントロピーコード化データを出力し得る(168)。
[0158]このようにして、図4の方法は、ビデオエンコーダによって、マルチレイヤビデオデータの第1のレイヤの第1のピクチャのピクチャ順序カウント(POC)値のためのPOCリセットを示すデータを符号化すること、その場合、第1のピクチャがアクセスユニット中に含まれる、を含む方法の一例を表す。図4の例示的な方法はまた、第1のピクチャのPOC値のためのPOCリセットを示すデータに基づいて、および、第1のピクチャを復号するより前に、マルチレイヤビデオデータの第2のレイヤの少なくとも1つのピクチャを含む、コーディング順序において第1のピクチャに先行する、復号ピクチャバッファ(DPB)に記憶されたすべてのピクチャのPOC値をデクリメントすることを含む。
[0159]図5は、本開示の技法による、スライスのためのPOCリセット期間を示すデータを復号するための例示的な方法を示すフローチャートである。加えて、図4の方法は、現在ブロックを符号化することを含む。現在ブロックは、現在CU、または現在CUの一部分を備え得る。ビデオデコーダ30(図1および図3)に関して説明されるが、他のデバイスが図5の方法と同様の方法を実行するように構成され得ることを理解されたい。
[0160]最初に、ビデオデコーダ30は、POCリセットを示すデータを復号する(200)。いくつかの例では、本明細書で説明されるように、POCリセットを示すデータは、現在スライスのスライスセグメントヘッダ中に含まれるPOCリセット識別子であり得る。このような例では、ビデオデコーダ30は、POCリセットタイプ識別子をさらに復号し得る。図5の方法は、POCリセット期間識別子が、現在スライスが新しいPOCリセット期間の一部であることを示すという仮定に基づいている。ビデオデコーダ30は、現在ピクチャが特定のアクセスユニット中の第1のピクチャ(たとえば、特定のアクセスユニットのすべてのピクチャの中の最下位レイヤ識別子を有するピクチャ)であることをさらに決定し得る。
[0161]ビデオデコーダ30はまた、DPBに記憶されたすべてのピクチャのPOC値をデクリメントし得る(202)。たとえば、本開示の態様によれば、ビデオデコーダ30は、DPBのすべてのサブDPB内のピクチャのPOC値をデクリメントし得る。いくつかの例では、ビデオデコーダ30は、(たとえば、ステップ200で実行されたように)現在スライスのためのスライスヘッダを復号した後であるが、以下で説明されるように最初のスライスのビデオデータを復号するより前に、POC値をデクリメントし得る。ビデオデコーダ30は、DPB内のピクチャのPOC値を、同じデクリメント値だけデクリメントし得る。
[0162]次いで、ビデオデコーダ30は、たとえば、スライスセグメントヘッダ、および/または、PPSもしくはSPSなどのパラメータセットから、参照ピクチャリスト中に含まれるべき参照ピクチャのPOC値を復号する(204)。次いで、ビデオデコーダ30は、参照ピクチャリストを形成する(206)。
[0163]次に、ビデオデコーダ30は、現在ブロックのための動き情報を復号する(208)。動き情報は、たとえば、参照ピクチャリスト識別子と、参照ピクチャリストへの参照インデックスとを含み得る。次いで、ビデオデコーダ30は、たとえば、現在ブロックのための予測ブロックを計算するために、イントラ予測モードを使用して、現在ブロックを予測する(200)。より詳細には、ビデオデコーダ30は、どの参照ピクチャリストを使用するべきかを識別するために参照ピクチャリスト識別子と、参照ピクチャリスト中の参照インデックスを識別するために参照インデックスとを使用する。次いで、ビデオデコーダ30は、現在ブロックのための動きベクトルを復号し、識別された参照ピクチャ中の参照ブロックを識別する。
[0164]ビデオデコーダ30はまた、現在ブロックに対応する残差ブロックの係数のためのエントロピーコード化データなど、現在ブロックのためのエントロピーコード化データを受信し得る(212)。ビデオデコーダ30は、残差ブロックの係数を再生するために、エントロピーコード化データをエントロピー復号し得る(214)。次いで、ビデオデコーダ30は、量子化された変換係数のブロックを作成するために、再生された係数を逆走査し得る(216)。すなわち、逆走査を使用して、ビデオデコーダ30は、1次元ベクトルを2次元行列に変換する。次いで、ビデオデコーダ30は、残差ブロックを生成するために、係数を逆量子化および逆変換し得る(218)。最終的に、ビデオデコーダ30は、予測ブロックと残差ブロックとを組み合わせることによって現在ブロックを復号し得る(220)。
[0165]このようにして、図5の方法は、マルチレイヤビデオデータの第1のレイヤの第1のピクチャのピクチャ順序カウント(POC)値のためのPOCリセットを示すデータを復号すること、その場合、第1のピクチャがアクセスユニット中に含まれる、を含む方法の一例を表す。図5の例示的な方法はまた、第1のピクチャのPOC値のためのPOCリセットを示すデータに基づいて、および、第1のピクチャを復号するより前に、マルチレイヤビデオデータの第2のレイヤの少なくとも1つのピクチャを含む、コーディング順序において第1のピクチャに先行する、復号ピクチャバッファ(DPB)に記憶されたすべてのピクチャのPOC値をデクリメントすることを含む。
[0166]例によっては、本明細書で説明された技法のうちのいずれかの、いくつかの動作またはイベントは、異なる順序で実行され得、追加、統合、または完全に除外され得る(たとえば、すべての説明された動作またはイベントが、本技法の実施のために必要であるとは限らない)ことを認識されたい。その上、いくつかの例では、動作またはイベントは、たとえば、マルチスレッドの処理、割込み処理、または多数のプロセッサを用いて、連続的ではなく同時に実行され得る。
[0167]1つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、コンピュータ可読媒体上の1つもしくは複数の命令もしくはコード上に記憶され、またはこれを介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形の媒体に対応するコンピュータ可読記憶媒体、または、たとえば、通信プロトコルに従う、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、一般に、(1)非一時的である有形のコンピュータ可読記憶媒体、または(2)信号もしくは搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明された技法の実装のために命令、コード、および/またはデータ構造を取り出すために、1つもしくは複数のコンピュータまたは1つもしくは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
[0168]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMもしくは他の光ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、フラッシュメモリ、または命令もしくはデータ構造の形態で所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る任意の他の媒体を備え得る。また、任意の接続が、コンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、ウェブサイト、サーバ、または他の遠隔ソースから、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含むのではなく、代わりに、非一時的な有形の記憶媒体を対象とすることを理解されたい。本明細書で使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)、およびBlu−rayディスク(disc)を含み、ここで、ディスク(disk)は、通常、データを磁気的に再生し、一方、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せも、コンピュータ可読媒体の範囲の中に含まれるべきである。
[0169]命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または他の同等の集積された論理回路もしくは離散論理回路などの、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用される「プロセッサ」という用語は、前述の構造のいずれか、または本明細書で説明された技法を実装するために好適な任意の他の構造を指し得る。加えて、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成されるか、または複合コーデックに組み込まれる、専用のハードウェアモジュールおよび/またはソフトウェアモジュール内で提供され得る。また、本技法は、1つまたは複数の回路または論理素子において完全に実装され得る。
[0170]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置で実装され得る。本開示では、開示される技法を実行するように構成されたデバイスの機能的態様を強調するために様々な構成要素、モジュール、またはユニットが説明されたが、それらの構成要素、モジュール、またはユニットを、必ずしも異なるハードウェアユニットによって実現する必要があるとは限らない。むしろ、上記で説明されたように、様々なユニットが、好適なソフトウェアおよび/またはファームウェアとともに、上記で説明されたような1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わされるか、または相互動作ハードウェアユニットの集合によって提供され得る。
[0171]様々な例が、説明された。これらおよび他の例は、次の特許請求の範囲内に入る。