[0019]本開示の態様は、マルチレイヤ・ビットストリームのための独立非ベースレイヤをコーディングする様々な技法に関し得る。いくつかの事例では、本技法は、以下で述べるように、高効率ビデオコーディング(HEVC)のマルチビュー・ビデオコーディング拡張(MV−HEVC:a Multi-view Video Coding extension to HEVC)、またはHEVCのスケーラブルビデオコーディング(SVC)拡張(SHVC:a Scalable Video Coding (SVC) extension to HEVC)など、HEVC規格のマルチレイヤ拡張とともに実行され得る。ただし、本開示の技法は、いかなる特定のビデオコーディング規格にも限定されず、同じくまたは代替的に、HEVCの他の拡張、他のマルチビュー・コーディング規格および/または他のマルチレイヤ・ビデオ規格とともに使用され得る。さらに、本開示の技法は、以下で説明するように、独立して、または組合せで適用され得る。
[0020]ビデオデータの「レイヤ」は、概して、ビュー、フレームレート、空間フォーマットまたは解像度、信号対雑音比などの少なくとも1つの共通の特性を有するピクチャのシーケンスを指すことがある。たとえば、レイヤは、マルチビュー・ビデオデータの特定のビュー(たとえば、パースペクティブ(perspective))に関連付けられたビデオデータを含み得る。別の例として、レイヤは、スケーラブルビデオデータの特定のレイヤに関連付けられたビデオデータを含み得る。したがって、本開示は、ビデオデータのレイヤおよびビューを互換的に指すことがある。すなわち、ビデオデータのビューはビデオデータのレイヤと呼ばれることがあり、その逆も同様である。さらに、(マルチレイヤ・ビデオコーダまたはマルチレイヤエンコーダ−デコーダとも呼ばれる)マルチレイヤコーデックは、マルチビュー・コーデックまたはスケーラブルコーデック(たとえば、MV−HEVC、SHVC、または別のマルチレイヤコーディング技法を使用してビデオデータを符号化および/または復号するように構成されたコーデック)を指すことがある。
[0021]マルチレイヤ・ビットストリームはベースレイヤと1つまたは複数の非ベースレイヤとを含み得る。ベースレイヤは、一般に、0に等しいレイヤ識別子を有し得る。非ベースレイヤは、0よりも大きいレイヤ識別子を有し得、ベースレイヤ中に含まれない追加のビデオデータを与え得る。たとえば、マルチビュー・ビデオデータの非ベースレイヤは、ビデオデータの追加のビューを含み得る。スケーラブルビデオデータの非ベースレイヤは、ベースレイヤに対して増加または減少した解像度を有するスケーラブルビデオデータの追加のレイヤを含み得る。非ベースレイヤは、互換的にエンハンスメントレイヤと呼ばれることがある。
[0022]レイヤが直接参照レイヤを有しないとき、そのレイヤは「独立」であると呼ばれることがある。すなわち、独立レイヤは、別のレイヤのビデオデータを参照することなしにコーディング(符号化または復号)され得る。独立非ベースレイヤは、独立レイヤが属するマルチレイヤ・ビットストリームの他のレイヤと同じである必要がない、特定の規格の特定のコーディングプロファイルに準拠し得る。説明のための非限定的な例では、マルチレイヤ・ビットストリームは、MV−HEVCまたはSHVCに準拠し得る。マルチレイヤ・ビットストリームの独立非ベースレイヤは、(たとえば、インターレイヤ予測技法を使用せずに)独立してコーディングされ得、HEVC規格に準拠し得る。したがって、以下でより詳細に説明するように、独立非ベースレイヤは、HEVC規格を使用して、およびマルチレイヤ・ビットストリームの他のレイヤを復号することなしに、抽出および復号され得る。いくつかの事例では、メディアアウェアネットワーク要素(MANE:media aware network element)、スプライシングユニット(splicing unit)、または他のデバイスは、マルチレイヤ・ビットストリームから独立レイヤを抽出し得る。そのような事例では、MANEは、復号のために、抽出された独立レイヤのみをビデオデコーダに送信し得る。他の事例では、別のコンピューティングデバイスは、サブビットストリームの抽出を担当し得る。
[0023]本開示の技法は、ビデオコーディングのためのピクチャ順序カウント(POC)値の設定に適用可能であり、マルチレイヤ・ビットストリームからの独立非ベースレイヤの抽出を容易にするために使用され得る。たとえば、ビデオエンコーダは、特定のマルチレイヤ・ビデオコーディング規格、たとえば、SHVCまたはMV−HEVCに従ってマルチレイヤ・ビットストリームを符号化し得る。ビデオデコーダ、メディアアウェアネットワーク要素(MANE)、スプライシングユニット(splicing unit)、または他のデバイスは、そのようなマルチレイヤ・ビットストリームから独立非ベースレイヤを抽出し得る。以下でより詳細に説明するように、本開示の技法は、いくつかの例では、レイヤが、SHVCまたはMV−HEVCに準拠するビットストリームなどのマルチレイヤ・ビットストリームから抽出されること、および、独立非ベースレイヤのスライスヘッダまたは他のシンタックスを変更することなしにHEVC規格を使用して復号するように構成されたビデオデコーダによって適切に復号されること、を可能にし得る。
[0024]POC値はピクチャの表示順序を示し得、概して、ピクチャを識別するために使用され得る。たとえば、0のPOC値を有するピクチャは、1のPOC値を有するピクチャより前に表示される。現在ピクチャのブロックが参照ピクチャに対してインター予測されるとき、参照ピクチャは、参照ピクチャのためのPOC値を使用して識別され得る。より詳細には、参照ピクチャリスト中に含まれるべき参照ピクチャのためのPOC値が、シーケンスパラメータセット(SPS:sequence parameter set)、ピクチャパラメータセット(PPS:picture parameter set)などのパラメータセット、および/またはブロックに対応するスライスヘッダ中でシグナリングされ得る。このようにして、ビデオエンコーダは、参照ピクチャリスト中の参照ピクチャの位置に対応する、参照ピクチャリストへのインデックスをシグナリングすることによって、参照ピクチャを識別し得、ビデオデコーダは、(POC値に基づいて)参照ピクチャリストを構築することと、参照ピクチャリスト中の参照ピクチャの位置を識別するために参照インデックスを使用することとによって、参照ピクチャを識別し得る。
[0025]POC値は、最下位ビット(LSB)と最上位ビット(MSB:most significant bit)とから構成され得る。概して、POC LSB値はビットストリーム中でシグナリングされ得る。たとえば、POC LSB値はピクチャのスライスのスライスヘッダ中に含まれ得る。ビデオコーダ(ビデオエンコーダまたはビデオデコーダ)は、ビットストリームの、前にコーディングされたピクチャのPOC値に基づいて、ピクチャのためのPOC MSB値を決定し得る。
[0026]POC値は、マルチレイヤ・ビデオコーディングでは、複数のレイヤからのビデオデータが適宜に出力されることを保証するために使用され得る。たとえば、マルチレイヤ・ビデオコーディング(たとえば、マルチビュー・ビデオコーディング、スケーラブルビデオコーディングなど)では、ビューコンポーネントは、(表示順序、または出力順序に関して)特定の時間における特定のレイヤまたはビューのための符号化ピクチャを備え得る。アクセスユニットは、概して、共通の時間インスタンスのためのすべてのビューコンポーネント(たとえば、すべてのネットワーク・アブストラクション・レイヤ(NAL:network abstraction layer)ユニット)を含むデータのユニットである。アクセスユニットのビューコンポーネントは、一般に、一緒に出力される(すなわち、実質的に同時に出力される)ものであり、ここで、ピクチャを出力することは、概して、ピクチャをDPBから転送すること(たとえば、ピクチャをDBPから外部メモリに記憶すること、ピクチャをDPBからディスプレイに送ること、ピクチャをDPBから削除することなど)を伴う。
[0027]ビデオコーダは周期的にPOC値をリセットし得る。たとえば、ビデオコーダは、一般に、瞬間デコーダリフレッシュ(IDR:Instantaneous Decoder Refresh)ピクチャ(たとえば、イントラ予測されたスライスのみを含んでいるピクチャ)のためのPOC値をリセットし得る。POC値をリセットすることに加えて、ビデオコーダは、POCリセットに関連付けられた現在ピクチャより前に処理され、DPBに記憶されているピクチャのPOC値を減分し(decrement)得る。減分された参照ピクチャのPOC値は、そのようなピクチャの適切な出力順序を維持するために負値を有し得る。
[0028]いくつかの事例では、マルチレイヤ・ビットストリームのアクセスユニットの他のピクチャとのクロスレイヤ整合(cross-layer alignment)を維持するために、ビデオコーダは、アクセスユニット中のピクチャのPOC値をリセットし得る。シングルレイヤ・ビットストリーム(たとえば、HEVC)では、各アクセスユニットは、指定された分類ルールに従って互いに関連付けられ、復号順序で連続するNALユニットのセットを含み、各アクセスユニットは、(コード化ピクチャとも呼ばれる)ちょうど1つのピクチャを含んでいる。マルチレイヤ・ビットストリーム(たとえば、2つ以上のレイヤをもつSHVCまたはMV−HEVCビットストリーム)では、(マルチレイヤアクセスユニットとしても知られる)アクセスユニットは、1つまたは複数のコード化ピクチャを含み得る。1つまたは複数のコード化ピクチャがマルチレイヤアクセスユニット中に含まれる場合、各コード化ピクチャはサブビットストリーム内に配置される。例として、マルチレイヤアクセスユニットは、ベースレイヤ中に1つのコード化ピクチャを有し、エンハンスメントレイヤ中に1つのコード化ピクチャを有し得る。したがって、マルチレイヤアクセスユニットは、すべての関連するビデオコーディングレイヤ(VCL:video coding layer)および非VCL NALユニットを含む、同じ出力時間をもつレイヤにわたるすべてのコード化ピクチャを備える。アクセスユニット中のコード化ピクチャは、識別のために、およびアクセスユニットのピクチャが同じまたは実質的に同じ時間において出力されることを保証するために、POCの同じ値に関連付けられ得る。
[0029]クロスレイヤ整合を維持するためのPOC値リセッティングに関して、説明のための例では、アクセスユニットは、POC値リセッティングを実行させるベースレイヤIDRピクチャと、IDRピクチャでない非ベースレイヤピクチャとを含み得る。アクセスユニットの非ベースレイヤピクチャのPOC値がベースレイヤピクチャのPOC値に一致することを保証するために、ビデオコーダは、非ベースレイヤピクチャのPOC値をリセットし得る。
[0030]上述のように、独立非ベースレイヤは、非ベースレイヤがマルチレイヤ・ビットストリームから抽出されることを可能にするために特定の規格に関連付けられた特定のコーディングプロファイルに準拠し得る。しかしながら、独立してコーディングされるべきマルチレイヤ・ビットストリームの非ベースレイヤを与えることは、いくつかの課題を提示し得る。たとえば、図4に関して以下でより詳細に説明するように、独立非ベースレイヤのピクチャのPOC LSB値をリセットすることは、参照ピクチャセット(RPS:reference picture set)の長期参照ピクチャ(LTRP:long-term reference picture)を適宜に識別することに関する問題を引き起こし得る。別の例として、独立非ベースレイヤのピクチャのPOC LSB値をリセットすることは、アクセスユニットがクロスレイヤ整合されないピクチャを含んでいることを引き起こし得る。
[0031]本開示の技法は、いくつかの事例では、上記で言及された課題に対処し得る。たとえば、本開示の技法は、マルチレイヤ・ビットストリームの非ベースレイヤが、非ベースレイヤへの最小変更で(たとえば、非ベースレイヤのスライスヘッダまたは他のシンタックスを変更することなしに)抽出および復号されることを可能にするために使用され得る。本開示の技法は、独立非ベースレイヤ中のイントラランダムアクセスポイント(IRAP:intra random access point)ピクチャのロケーションを決定するために使用され得る。このようにして、本開示の技法は、独立非ベースレイヤのピクチャのためのPOC値リセッティングを制御するために使用され得る。
[0032]本開示の態様によれば、ビデオコーダ(ビデオエンコーダまたはビデオデコーダ)は、マルチレイヤ・ビットストリームの独立して復号可能なレイヤのピクチャをコーディングし得る。ビデオコーダはまた、ピクチャのためのPOC LSB値が0に等しいときのみ、ピクチャのPOC LSB値のためのPOC値リセットを示すデータをコーディングし得る。いくつかの例では、ビデオコーダは、コーディングされている独立非ベースレイヤ中のピクチャがIDRピクチャであるとき、またはコーディングされているピクチャが、POC値リセットを実行することより前に0に等しいPOC LSB値を有するとき、エンハンスメントレイヤのためのPOC値リセットを示すデータのみをコーディングし得る。以下でより詳細に説明するように、POC値リセッティングが行われるロケーションを制御することは、ビデオコーダがDPB中の長期参照ピクチャを適宜に識別し、たとえば、本明細書で識別される規格など、特定のビデオコーディング規格とのビットストリーム準拠を維持し得ることを保証するのを助け得る。
[0033]説明のための非限定的な例では、本開示の技法は、独立非ベースレイヤがマルチレイヤ・スケーラブルビットストリームから抽出されることを可能にし得る。たとえば、SHVCビットストリームは、540pの解像度を有するベースレイヤと1080pのエンハンスメントレイヤとを含み得る。規約によって、ベースレイヤでは、IDRピクチャは、最高32個のピクチャごとに含まれ得る。エンハンスメントレイヤでは、IDRは、異なる間隔で、たとえば、96個のピクチャごとに含まれ得る。
[0034]本開示の技法は、エンハンスメントレイヤがベースのHEVC規格(base HEVC standard)との適合性を維持するように、そのようなスケーラブルビットストリームが形成される様式を制約するために使用され得る。たとえば、本明細書で説明するように、本開示の技法は、エンハンスメントレイヤがSHVCビットストリームから抽出され、ベースのHEVC規格に準拠するデコーダによって復号され得るように、POC値リセッティングがSHVCビットストリームのために実行される様式を制御するために使用され得る。したがって、(HEVCビットストリームではなく)HEVCビットストリームを復号する能力を有するモバイルコンピューティングデバイスは、エンハンスメントレイヤの(本明細書で説明するように、POC値情報を含んでいる)スライスヘッダを変更することなしにエンハンスメントレイヤを受信および復号し得る。
[0035]図1は、本開示の技法による、POC値を管理するための技法を利用し得る例示的なビデオ符号化および復号システム10を示すブロック図である。図1に示されているように、システム10は、宛先デバイス14によって後で復号されるべき符号化ビデオデータを与えるソースデバイス12を含む。特に、ソースデバイス12は、コンピュータ可読媒体16を介してビデオデータを宛先デバイス14に与える。
[0036]ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、いわゆる「スマート」パッド、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスのいずれかを備え得る。場合によっては、ソースデバイス12および宛先デバイス14はワイヤレス通信のために装備され得る。
[0037]コンピュータ可読媒体16は、ソースデバイス12から宛先デバイス14に符号化ビデオデータを移動させることが可能な任意のタイプの媒体またはデバイスを備え得る。一例では、コンピュータ可読媒体16は、ソースデバイス12が、符号化ビデオデータを宛先デバイス14にリアルタイムで直接送信することを可能にするための通信媒体を備え得る。符号化ビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先デバイス14に送信され得る。通信媒体は、無線周波数(RF)スペクトルあるいは1つまたは複数の物理伝送ラインなど、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースネットワークの一部を形成し得る。通信媒体は、ソースデバイス12から宛先デバイス14への通信を容易にするために有用であり得るルータ、スイッチ、基地局、または任意の他の機器を含み得る。
[0038]いくつかの例では、コンピュータ可読媒体16はストレージデバイスを含み得る。たとえば、ストレージデバイスは、ハードドライブ、Blu−ray(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、揮発性または不揮発性メモリ、あるいは符号化ビデオデータを記憶するための任意の他の好適なデジタル記憶媒体など、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。さらなる一例では、ストレージデバイスは、ソースデバイス12によって生成された符号化ビデオを記憶し得、宛先デバイスによってアクセスされ得るファイルサーバまたは別の中間ストレージデバイスに対応し得る。例示的なファイルサーバとしては、(たとえば、ウェブサイト用の)ウェブサーバ、FTPサーバ、ネットワークアタッチドストレージ(NAS)デバイス、またはローカルディスクドライブがある。
[0039]図1の例では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、出力インターフェース22とを含む。宛先デバイス14は、入力インターフェース28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。他の例では、ソースデバイスおよび宛先デバイスは他のコンポーネントまたは構成を含み得る。たとえば、ソースデバイス12は、外部カメラなど、外部ビデオソースからビデオデータを受信し得る。同様に、宛先デバイス14は、統合ディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。したがって、図1の図示されたシステム10は、一例にすぎない。本開示の技法による、POC値を管理するための技法は、任意のデジタルビデオ符号化および/または復号デバイスによって実行され得る。
[0040]概して、本開示の技法はビデオ符号化デバイスによって実行されるが、本技法は、一般に「コーデック」と呼ばれるビデオエンコーダ/デコーダによっても実行され得る。その上、本開示の技法はまた、ビデオプリプロセッサによって実行され得る。ソースデバイス12および宛先デバイス14は、ソースデバイス12が宛先デバイス14への送信のためのコーディングされたビデオデータを生成するような、コーディングデバイスの例にすぎない。いくつかの例では、デバイス12、14は、デバイス12、14の各々がビデオ符号化構成要素とビデオ復号構成要素とを含むように、実質的に対称的に動作し得る。したがって、システム10は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、またはビデオテレフォニーのための、ビデオデバイス12とビデオデバイス14との間の一方向または双方向のビデオ送信をサポートし得る。
[0041]ソースデバイス12のビデオソース18は、ビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされたビデオを含んでいるビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースを含み得る。さらなる代替として、ビデオソース18は、ソースビデオとしてのコンピュータグラフィックスベースのデータ、またはライブビデオとアーカイブビデオとコンピュータ生成ビデオとの組合せを生成し得る。場合によっては、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、いわゆるカメラフォンまたはビデオフォンを形成し得る。ただし、上述のように、本開示で説明する技法は、概してビデオコーディングに適用可能であり得、ワイヤレスおよび/またはワイヤード適用例に適用され得る。各場合において、キャプチャされたビデオ、前にキャプチャされたビデオ、またはコンピュータ生成ビデオは、ビデオエンコーダ20によって符号化され得る。符号化ビデオ情報は、次いで、出力インターフェース22によってコンピュータ可読媒体16上に出力され得る。
[0042]上述のように、コンピュータ可読媒体16は、ワイヤレスブロードキャストまたはワイヤードネットワーク送信などの一時媒体、あるいはハードディスク、フラッシュドライブ、コンパクトディスク、デジタルビデオディスク、Blu−rayディスク、または他のコンピュータ可読媒体などの記憶媒体(すなわち、非一時的記憶媒体)を含み得る。いくつかの例では、ネットワークサーバ(図示せず)は、ソースデバイス12から符号化ビデオデータを受信し、たとえば、ネットワーク送信を介して、その符号化ビデオデータを宛先デバイス14に与え得る。同様に、ディスクスタンピング設備(a disc stamping facility)など、媒体製造設備(a medium production facility)のコンピューティングデバイスは、ソースデバイス12から符号化ビデオデータを受信し、その符号化ビデオデータを含んでいるディスクを生成し得る。したがって、コンピュータ可読媒体16は、様々な例において、様々な形態の1つまたは複数のコンピュータ可読媒体を含むことが理解されよう。
[0043]宛先デバイス14の入力インターフェース28は、コンピュータ可読媒体16から情報を受信するか、またはコンピュータ可読媒体16からの情報にアクセスし得る。コンピュータ可読媒体16の情報は、ブロックおよび他のコーディングされたユニット、たとえば、ピクチャのグループ(GOP:group of picture)の特性および/または処理を記述するシンタックス要素を含む、ビデオエンコーダ20によって定義され、またビデオデコーダ30によって使用されるシンタックス情報を含み得る。ディスプレイデバイス32は、ユーザに復号されたビデオデータを表示し、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを備え得る。
[0044]宛先デバイス14は、インターネット接続を含む、任意の標準のデータ接続を通して符号化ビデオデータにアクセスし得る。これは、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに好適であるワイヤレスチャネル(たとえば、Wi−Fi(登録商標)接続)、ワイヤード接続(たとえば、DSL、ケーブルモデムなど)、またはその両方の組合せを含み得る。ストレージデバイスからの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはそれらの組合せであり得る。本開示の技法は、必ずしもワイヤレス適用例または設定に限定されるとは限らない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、動的適応ストリーミングオーバーHTTP(DASH:dynamic adaptive streaming over HTTP)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されたデジタルビデオ、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例など、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオテレフォニーなどの適用例をサポートするために、一方向または双方向のビデオ送信をサポートするように構成され得る。
[0045]ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せなど、様々な好適なエンコーダ回路のいずれかとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、デバイスは、好適な非一時的コンピュータ可読媒体にソフトウェアの命令を記憶し、本開示の技法を実行するために1つまたは複数のプロセッサを使用してその命令をハードウェアで実行し得る。ビデオエンコーダ20およびビデオデコーダ30の各々は1つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも、それぞれのデバイスにおいて複合コーデックの一部として統合され得る。ビデオエンコーダ20および/またはビデオデコーダ30を含むデバイスは、集積回路、マイクロプロセッサ、および/またはセルラー電話などのワイヤレス通信デバイスを備え得る。
[0046]図1には示されていないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30は、それぞれ、オーディオエンコーダおよびデコーダと統合され得、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理するために、適切なMUX−DEMUXユニット、または他のハードウェアおよびソフトウェアを含み得る。適用可能な場合、MUX−DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
[0047]本開示では、概して、ある情報をビデオデコーダ30などの別のデバイスに「シグナリング」するビデオエンコーダ20に言及することがある。ただし、ビデオエンコーダ20は、いくつかのシンタックス要素をビデオデータの様々な符号化部分に関連付けることによって情報をシグナリングし得ることを理解されたい。すなわち、ビデオエンコーダ20は、いくつかのシンタックス要素をビデオデータの様々な符号化部分のヘッダに記憶することによってデータを「シグナリング」し得る。場合によっては、そのようなシンタックス要素は、ビデオデコーダ30によって受信され、復号されるより前に、符号化され、記憶され得る。したがって、「シグナリング」という用語は、概して、通信がリアルタイムまたはほぼリアルタイムで行われるかどうか、あるいは、符号化時にシンタックス要素を媒体に記憶し、次いで、この媒体に記憶された後の任意の時間にそのシンタックス要素が復号デバイスによって取り出され得るときなどに行われ得る、ある時間期間にわたって行われるかどうかにかかわらず、圧縮されたビデオデータを復号するためのシンタックスまたは他のデータの通信を指し得る。
[0048]ビデオエンコーダ20およびビデオデコーダ30は、ビデオコーディング規格に従って動作し得る。最近では、新しいビデオコーディング規格、すなわち、高効率ビデオコーディング(HEVC)の設計が、ITU−Tビデオコーディングエキスパートグループ(VCEG:Video Coding Experts Group)とISO/IECモーションピクチャエキスパートグループ(MPEG:Motion Picture Experts Group)とのジョイントコラボレーションチームオンビデオコーディング(JCT−VC:Joint Collaboration Team on Video Coding)によって確定された。また、HEVCのマルチビュー拡張、すなわちMV−HEVCがJCT−3Vによって開発されている。MV−HEVC WD7と呼ばれるMV−HEVCの最近のワーキングドラフト(WD:Working Draft)。SHVCと称するHEVCのスケーラブル拡張も、JCT−VCによって開発されている。SHVCの最近のワーキングドラフト(WD)は、およびSHVC WD5と呼ばれる。ただし、本開示の技法は、いかなる特定のコーディング規格にも限定されない。
[0049]HEVCおよび他のビデオコーディング規格では、ビデオシーケンスは一般に一連のピクチャを含む。ピクチャは「フレーム」と呼ばれることもある。ピクチャは、SL、SCbおよびSCrと示される3つのサンプルアレイを含み得る。SLはルーマサンプルの2次元アレイ(すなわち、ブロック)である。SCbはCbクロミナンスサンプルの2次元アレイである。SCrはCrクロミナンスサンプルの2次元アレイである。クロミナンスサンプルは、本明細書では「クロマ」サンプルと呼ばれることもある。他の事例では、ピクチャはモノクロームであり得、ルーマサンプルのアレイのみを含み得る。
[0050]ピクチャの符号化表現を生成するために、ビデオエンコーダ20はコーディングツリーユニット(CTU:coding tree unit)のセットを生成し得る。CTUの各々は、ルーマサンプルのコーディングツリーブロック、クロマサンプルの2つの対応するコーディングツリーブロック、およびコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造であり得る。コーディングツリーブロックは、サンプルのN×Nブロックであり得る。CTUは「ツリーブロック」または「最大コーディングユニット」(LCU:largest coding unit)と呼ばれることもある。HEVCのCTUは、H.264/AVCなど、他の規格のマクロブロックに広い意味で類似し得る。しかしながら、CTUは、必ずしも特定のサイズに限定されるとは限らず、1つまたは複数のコーディングユニット(CU)を含み得る。
[0051]スライスは、ラスタ走査(raster scan)において連続的に順序付けられた整数個のCTUを含み得る。スライスはスライスヘッダとスライスデータとを備え得る。スライスのスライスヘッダは、スライスについての情報を提供するシンタックス要素を含むシンタックス構造であり得る。スライスデータはスライスのコード化CTUを含み得る。
[0052]本開示では、1つまたは複数のサンプルブロックと、サンプルの1つまたは複数のブロックのサンプルをコーディングするために使用されるシンタックス構造とを指すために、「ビデオユニット」、または「ビデオブロック」、または「ブロック」という用語を使用し得る。例示的なタイプのビデオユニットまたはブロックは、CTU、CU、PU、変換ユニット(TU)、マクロブロック、マクロブロックパーティション(macroblock partitions)などを含み得る。いくつかのコンテキストでは、PUの説明は、マクロブロックパーティションのマクロブロックの説明と置き換えられ得る。
[0053]コード化CTUを生成するために、ビデオエンコーダ20は、コーディングツリーブロックをコーディングブロックに分割するためにCTUのコーディングツリーブロックに対して4分木区分(quad-tree partitioning)を再帰的に実行し得、したがって「コーディングツリーユニット」という名称がある。コーディングブロックはサンプルのN×Nブロックである。CUは、ルーマサンプルアレイ、CbサンプルアレイおよびCrサンプルアレイ、ならびにコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造を有する、ピクチャのルーマサンプルの1つのコーディングブロックおよびクロマサンプルの2つの対応するコーディングブロックであり得る。ビデオエンコーダ20は、CUのコーディングブロックを1つまたは複数の予測ブロックに区分し得る。予測ブロックは、同じ予測が適用されるサンプルの矩形(すなわち、正方形または非正方形)ブロックであり得る。CUの予測ユニット(PU)は、ピクチャのルーマサンプルの予測ブロックと、クロマサンプルの2つの対応する予測ブロックと、予測ブロックサンプルを予測するために使用されるシンタックス構造とであり得る。ビデオエンコーダ20は、CUの各PUのルーマ予測ブロックとCb予測ブロックとCr予測ブロックとのための予測ルーマブロックと予測Cbブロックと予測Crブロックとを生成し得る。
[0054]ビデオエンコーダ20は、PUのための予測ブロックを生成するためにイントラ予測またはインター予測を使用し得る。ビデオエンコーダ20がPUの予測ブロックを生成するためにイントラ予測を使用する場合、ビデオエンコーダ20は、PUに関連付けられたピクチャの復号サンプルに基づいてPUの予測ブロックを生成し得る。
[0055]ビデオエンコーダ20が、PUの予測ブロックを生成するためにインター予測を使用する場合、ビデオエンコーダ20は、PUに関連付けられたピクチャ以外の1つまたは複数のピクチャの復号サンプルに基づいて、PUの予測ブロックを生成し得る。ビデオエンコーダ20は、PUの予測ブロックを生成するために単予測または双予測(uni-prediction or bi-prediction)を使用し得る。ビデオエンコーダ20が、PUのための予測ブロックを生成するために単予測を使用するとき、PUは単一の動きベクトル(MV:motion vector)を有し得る。ビデオエンコーダ20が、PUのための予測ブロックを生成するために双予測を使用するとき、PUは2つの動きベクトル(MV)を有し得る。
[0056]ビデオエンコーダ20がCUの1つまたは複数のPUのための予測ルーマブロック、予測Cbブロック、および予測Crブロックを生成した後、ビデオエンコーダ20は、CUのためのルーマ残差ブロックを生成し得る。CUのルーマ残差ブロック中の各サンプルは、CUの予測ルーマブロックのうちの1つ中のルーマサンプルとCUの元のルーマコーディングブロック中の対応するサンプルとの間の差を示す。さらに、ビデオエンコーダ20はCUのためのCb残差ブロックを生成し得る。CUのCb残差ブロック中の各サンプルは、CUの予測Cbブロックのうちの1つ中のCbサンプルとCUの元のCbコーディングブロック中の対応するサンプルとの間の差を示し得る。ビデオエンコーダ20はまた、CUのためのCr残差ブロックを生成し得る。CUのCr残差ブロック中の各サンプルは、CUの予測Crブロックのうちの1つ中のCrサンプルとCUの元のCrコーディングブロック中の対応するサンプルとの間の差を示し得る。
[0057]さらに、ビデオエンコーダ20は、CUのルーマ残差ブロックとCb残差ブロックとCr残差ブロックとを1つまたは複数のルーマ変換ブロックとCb変換ブロックとCr変換ブロックとに分解するために4分木区分を使用し得る。変換ブロックは、同じ変換が適用されるサンプルの矩形ブロックであり得る。CUの変換ユニット(TU)は、ルーマサンプルの変換ブロックと、クロマサンプルの2つの対応する変換ブロックと、変換ブロックサンプルを変換するために使用されるシンタックス構造とであり得る。したがって、CUの各TUは、ルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロックに関連付けられ得る。TUに関連付けられたルーマ変換ブロックはCUのルーマ残差ブロックのサブブロックであり得る。Cb変換ブロックはCUのCb残差ブロックのサブブロックであり得る。Cr変換ブロックはCUのCr残差ブロックのサブブロックであり得る。
[0058]ビデオエンコーダ20は、TUのためのルーマ係数ブロックを生成するために、TUのルーマ変換ブロックに1つまたは複数の変換を適用し得る。係数ブロックは変換係数の2次元アレイであり得る。変換係数はスカラー量であり得る。ビデオエンコーダ20は、TUのためのCb係数ブロックを生成するために、TUのCb変換ブロックに1つまたは複数の変換を適用し得る。ビデオエンコーダ20は、TUのためのCr係数ブロックを生成するために、TUのCr変換ブロックに1つまたは複数の変換を適用し得る。
[0059]係数ブロック(たとえば、ルーマ係数ブロック、Cb係数ブロックまたはCr係数ブロック)を生成した後に、ビデオエンコーダ20は、係数ブロックを量子化し得る。量子化は、一般に、変換係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を実現する処理を指す。ビデオエンコーダ20が係数ブロックを量子化した後に、ビデオエンコーダ20は、量子化された変換係数を示すシンタックス要素をエントロピー符号化し得る。たとえば、ビデオエンコーダ20は、量子化された変換係数を示すシンタックス要素に対してコンテキスト適応型バイナリ算術コーディング(CABAC:Context-Adaptive Binary Arithmetic Coding)を実行し得る。ビデオエンコーダ20は、エントロピー符号化されたシンタックス要素をビットストリーム中に出力し得る。
[0060]ビデオエンコーダ20は、シングルレイヤ・ビットストリームまたはマルチレイヤ・ビットストリームを出力し得る。各レイヤは、エントロピー符号化されたシンタックス要素を含む関連するビットストリームを有する。ビットストリームは、コード化ピクチャと関連データとの表現を形成するビットのシーケンスを含み得る。ビットストリームは、ネットワーク・アブストラクション・レイヤ(NAL:network abstraction layer)ユニットのシーケンスを備え得る。NALユニットの各々はNALユニットヘッダを含み、ローバイトシーケンスペイロード(RBSP:raw byte sequence payload)をカプセル化する。NALユニットヘッダは、NALユニットタイプコードを示すシンタックス要素を含み得る。NALユニットのNALユニットヘッダによって指定されるNALユニットタイプコードは、NALユニットのタイプを示す。RBSPは、NALユニット内にカプセル化された整数個のバイトを含んでいるシンタックス構造であり得る。いくつかの事例では、RBSPは0ビットを含む。
[0061]異なるタイプのNALユニットは、異なるタイプのRBSPをカプセル化し得る。たとえば、第1のタイプのNALユニットはピクチャパラメータセット(PPS:picture parameter set)のためのRBSPをカプセル化し得、第2のタイプのNALユニットはコード化スライスのためのRBSPをカプセル化し得、第3のタイプのNALユニットは補足エンハンスメント情報(SEI:supplemental enhancement information)のためのRBSPをカプセル化し得、以下同様である。(パラメータセットおよびSEIメッセージのためのRBSPとは対照的に)ビデオコーディングデータのためのRBSPをカプセル化するNALユニットは、VCL NALユニットと呼ばれることがある。
[0062]ビデオデコーダ30は、ビデオエンコーダ20によって生成されたビットストリームを受信し得る。さらに、ビデオデコーダ30は、ビットストリームからシンタックス要素を復号するために、ビットストリームをパーズし(parse)得る。ビデオデコーダ30は、ビットストリームから復号されたシンタックス要素に少なくとも部分的に基づいてビデオデータのピクチャを再構成し得る。ビデオデータを再構成するためのプロセスは、概して、ビデオエンコーダ20によって実行されるプロセスの逆であり得る。
[0063]たとえば、ビデオデコーダ30は、現在CUのPUのための予測サンプルブロックを決定するためにPUの動きベクトル(MV)を使用し得る。加えて、ビデオデコーダ30は、現在CUのTUに関連付けられた変換係数ブロックを逆量子化し得る。ビデオデコーダ30は、現在CUのTUに関連付けられた変換ブロックを再構成するために変換係数ブロックに対して逆変換を実行し得る。ビデオデコーダ30は、現在CUのPUのための予測サンプルブロックのサンプルを現在CUのTUの変換ブロックの対応するサンプルに加算することによって、現在CUのコーディングブロックを再構成し得る。ピクチャの各CUのためのコーディングブロックを再構成することによって、ビデオデコーダ30はピクチャを再構成し得る。
[0064]ビデオエンコーダ20およびビデオデコーダ30は、ビデオシーケンスの各ピクチャに、ピクチャの識別のためのPOC値を割り当て得る。ビデオエンコーダ20は、たとえば、スライスヘッダ中で、および/あるいはPPSまたはSPSなどのパラメータセット中で、参照ピクチャのためのPOC値を表すデータをシグナリングすることによって、参照ピクチャリスト中に含まれるべき参照ピクチャを表すデータを符号化し得る(およびビデオデコーダ30は復号し得る)。特定のコード化ピクチャのための、シンタックス要素PicOrderCntValによって表されるPOC値は、同じコード化ビデオシーケンス中の他のピクチャに対する、ピクチャ出力プロセスにおけるピクチャの相対的順序を示す。減分された参照ピクチャのPOC値は、そのようなピクチャの適切な出力順序を維持するために負値を有し得る。
[0065]POC値はPOC LSB値とPOC MSB値とを含む。POC LSB値は、各ピクチャについて増加し、初期値0から最大値(たとえば、4〜16ビットを使用して指定された最大値)まで出力順序を指定し得る。8ビットPOC LSB値の例では、説明の目的で、255のPOC LSB値の後に、POC LSB値は255から0にロールオーバし得、POC LSB値は0から増加し続け得る。POC LSB値はスライスヘッダ中でシグナリングされ得るが、POC MSB値は、現在ピクチャのNALユニットタイプと、POCアンカーピクチャ(POC-anchor pictures)と呼ばれる復号順序で前のピクチャのMSBおよびLSBとに基づいて、ビデオデコーダ30によって計算され得る。SHVCおよび/またはMV−HEVCの場合、POC MSBの計算を支援するために、追加情報がシグナリングされ得る。そのような例では、追加情報が存在するとき、POC MSBの計算は復号順序で前のピクチャに依存しない。
[0066]アクセスユニット、マルチレイヤ・ビットストリームは、IRAPピクチャ、ならびにIRAPピクチャでない1つまたは複数の他のピクチャ(すなわち、非IRAPピクチャ)を含み得る。IRAPピクチャは、イントラコード化(I)スライスのみを含んでおり、切断リンクアクセス(BLA:broken link access)ピクチャ、クリーンランダムアクセス(CRA:clean random access)ピクチャまたはIDRピクチャであり得る。各レイヤについて、コード化ビデオシーケンスのためのビットストリーム中の第1のピクチャはIRAPピクチャである。IRAPピクチャはまた、マルチレイヤ・ビットストリームの各レイヤ中の様々なポイントにおいて与えられる。マルチレイヤアクセスユニットは、IRAPピクチャが各レイヤ内で同じ間隔で離間されないことがあるので、IRAPピクチャと非IRAPピクチャとを含み得る。IRAPピクチャが、一般に、インターコード化非IRAPピクチャよりも大きいビットペイロードを必要とするので、ビデオエンコーダ20は、ベースレイヤと比較してエンハンスメントレイヤ中でより大きい間隔でIRAPピクチャを離間させ得る。
[0067]たとえば、8のGOPの場合、ビデオエンコーダ20は、ベースレイヤでは32個のピクチャごとにIRAPピクチャを離間させ、エンハンスメントレイヤでは96個のピクチャごとにIRAPピクチャを離間させ得る。マルチレイヤ・ビットストリーム中のあるポイントにおいて、(ベースレイヤなどの)1つのレイヤがIRAPピクチャを有し、別のレイヤがIRAPピクチャを有しないとき、マルチレイヤアクセスユニットは、非整合アクセスユニット(a non-aligned access unit)と呼ばれることがある。後続のマルチレイヤアクセスユニットは、POCがリセットされるまで非整合であり続ける。以下でさらに詳細に記載されるように、マルチレイヤアクセスユニットのすべてのレイヤにわたるIRAPピクチャのプロビジョン(provision)は整合をリセットし得る。
[0068]いくつかの事例では、マルチレイヤアクセスユニット中のピクチャのPOC整合を維持するために、マルチレイヤアクセスユニットのピクチャのためのPOC値はリセットされ得る。例として、規格準拠HEVCデコーダは、抽出されたレイヤ中のピクチャのスライスヘッダ中の参照ピクチャセット(RPS)情報を更新することなしにマルチレイヤ・ビットストリームの(エンハンスメントレイヤとしても知られる)非ベースレイヤを抽出および復号するように構成され得る。エンハンスメントレイヤは、たとえば、MV−HEVCビットストリーム中の代替ビュー、またはSHVCビットストリーム中のスケーリングされたビデオであり得る。スライスセグメントヘッダ中でシグナリングされるPOCリセッティング期間識別子(a POC resetting period identifier)に基づいて、レイヤ固有POCリセッティング期間(a layer-specific POC resetting period)が指定され得る。すなわち、ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、スライスセグメントヘッダ中でPOCリセッティング期間識別子を表すデータをコーディングし得る。
[0069]少なくとも1つのIRAPピクチャを含んでいるアクセスユニットに属する(IDRピクチャタイプのピクチャを含む)各非IRAPピクチャは、非IRAPピクチャを含んでいるレイヤ中で開始され得るPOCリセッティング期間の開始であり得る。すなわち、ビデオエンコーダ20は、非IRAPピクチャが新しいPOCリセッティング期間の開始であることを示すために、少なくとも1つのIRAPピクチャを含んでいるアクセスユニットの非IRAPピクチャのためのPOCリセッティングタイプを設定し得る。そのようなアクセスユニットでは、各ピクチャは、その場合、レイヤの各々におけるPOCリセッティング期間の開始になる。
[0070]ビデオエンコーダ20は、ビデオデコーダ30がスライスセグメントヘッダを有するスライスを含むレイヤ中のピクチャのPOC値を導出するために使用し得るPOC LSB値をスライスセグメントヘッダ中でシグナリングし得る。スライスセグメントヘッダ中でシグナリングされたPOC LSB値は、DPB中の同じレイヤのピクチャのPOC値を更新するために使用され得るデルタPOC値の導出のために使用され、また、現在ピクチャのPOC値のPOC MSBの導出のために使用され得る。
[0071]POCリセッティング期間の間にPOCリセッティングを実行するときに、ビデオエンコーダ20は、スライスセグメントヘッダ中でPOCリセッティングタイプをシグナリングし得る。POCリセッティングタイプは、POC値が完全にまたは部分的にリセットされるべきであるかどうかを示し得るPOC値リセットインデックス(poc_reset_idc)を使用して示され得る。たとえば、MV−HEVCまたはSHVCでは、POCリセッティングタイプは、poc_reset_idcシンタックス要素を使用して示され得る。そのような例では、0に等しいpoc_reset_idcシンタックスは、現在ピクチャのためのPOC値のMSBもLSBもリセットされないことを指定する。1に等しいpoc_reset_idcシンタックス要素は、現在ピクチャのためのPOC値のMSBのみがリセットされ得ることを指定する。2に等しいpoc_reset_idcシンタックス要素は、現在ピクチャのためのPOC値のMSBとLSBの両方がリセットされ得ることを指定する。3に等しいpoc_reset_idcシンタックス要素は、現在ピクチャのためのPOC値のMSBのみまたはMSBとLSBの両方いずれかがリセットされ得、追加のPOC情報がシグナリングされることを指定する。
[0072] 独立非ベースレイヤが独立して復号可能であるために、ビデオエンコーダ20およびビデオデコーダ30は、ビットストリームを形成および復号するときにいくつかの制約を適用し得る。説明のための非限定的な例では、ビデオエンコーダ20およびビデオデコーダ30は、MV−HEVCまたはSHVCを使用してマルチレイヤ・ビットストリームをコーディングし得る。ビデオエンコーダ20およびビデオデコーダ30は、独立非ベースレイヤがHEVC準拠デコーダを使用して抽出および復号されることを可能にするようにその非ベースレイヤをコーディングするときに、1つまたは複数の制約を適用し得る。たとえば、独立非ベースレイヤが、HEVC準拠デコーダによって正常に復号されるために、ビデオエンコーダ20およびビデオデコーダ30は、HEVCに準拠する独立非ベースレイヤのためのシンタックスを使用し得る。たとえば、ビデオエンコーダ20およびビデオデコーダ30は、HEVC規格に準拠するために、独立非ベースレイヤのスライスヘッダおよび他のシンタックスをコーディングし得る。このようにして、HEVC準拠ビデオデコーダは、スライスヘッダのデータを変更すること、または他のトランスコーディング動作(transcoding operations)を実行することなしに、独立非ベースレイヤを復号し得る。
[0073]いくつかの事例では、独立非ベースレイヤのピクチャのPOC LSB値をリセットすることは、RPS中の長期参照ピクチャ(LTRP)を識別することを試みるときに問題を引き起こし得る。たとえば、上述のように、ビデオエンコーダ20は、たとえば、スライスヘッダ中で、および/あるいはPPSまたはSPSなどのパラメータセット中で、参照ピクチャのためのPOC値を表すデータをシグナリングすることによって、参照ピクチャリスト中に含まれるべき参照ピクチャを表すデータを符号化し得る(およびビデオデコーダ30はそのデータを復号し得る)。さらに、参照ピクチャリスト中に含まれるべき参照ピクチャを表すデータを含めるより前に、ビデオエンコーダ20およびビデオデコーダ30は、POCリセットに関連付けられた現在ピクチャの前に処理され、DPBに記憶されたピクチャのPOC値を減分し得る。
[0074]LTRPは、それぞれのLTRPのPOC LSB値に基づいて識別され得る。上述のように、ビデオエンコーダ20は、一般に、POC値リセットを考慮するためにPOC値リセッティングを実行するときにLTRPのPOC LSB値を調整(たとえば、減分)し得る。したがって、ビデオエンコーダ20は、一般に、スライスヘッダ中に(および/あるいはPPSまたはSPS中に)LTRPの減分されたPOC LSB値を含め得る。(たとえば、POC値リセットの後に)値が負であるLTRPの場合、ビデオエンコーダ20またはビデオデコーダ30は、変換アルゴリズムを使用して負のPOC LSB値を正のPOC LSB値に変換し得る。
[0075]しかしながら、いくつかのビデオデコーダは、POC値リセッティングに関連付けられたシンタックスを復号するように構成されないことがある。説明のための非限定的な例では、HEVC準拠ビデオデコーダは、マルチレイヤ・ビットストリームから抽出された独立非ベースレイヤを受信し得る。HEVC準拠ビデオデコーダは、POC値リセッティングシンタックスを適切に解釈しないことがある。そのような事例では、HEVC準拠ビデオデコーダはPOC値リセッティングを実行しないことがある。たとえば、HEVC準拠ビデオデコーダはPOC値リセッティング情報を廃棄し得、HEVC準拠ビデオデコーダのDPBに記憶されたピクチャのPOC値を減分しないことがある。
[0076]上記で説明した例では、HEVC準拠ビデオデコーダは、POC値リセッティングを実行するか、またはDPBに記憶されたピクチャのPOC値を減分するように構成されないことがあるので、HEVC準拠ビデオデコーダは、スライスヘッダ中でシグナリングされるLTRPのPOC LSB値に基づいてLTRPを適切に識別しないことがある。すなわち、HEVC準拠ビデオデコーダは、(POC値リセットにより)ピクチャのスライスヘッダ中でビデオエンコーダ20によって減分されたLTRPのPOC値を受信し得る。しかしながら、スライスヘッダ中でシグナリングされるLTRPのPOC値は、HEVC準拠ビデオデコーダがDPBのピクチャのPOC値を減分しなかったので、DPB中の参照ピクチャと適切に整合しないことがある。したがって、HEVC準拠ビデオデコーダは、受信されたPOC値に基づいてDPB中のLTRPを正しく識別しないことがある。
[0077]説明のための例では、ビデオエンコーダ20は、10および20のPOC LSB値を有するLTRPを使用してマルチレイヤ・ビットストリームの独立非ベースレイヤのピクチャを符号化し得る。ビデオエンコーダ20は、60のPOC LSB値を有するピクチャのPOC値リセッティングを実行し得る。したがって、ビデオエンコーダ20は、DPBに記憶されたピクチャのPOC値を60だけ減分し、減分されたPOC LSB値(たとえば、−50および−40)を使用してLTRPをシグナリングし得る。
[0078]しかしながら、ビデオデコーダが、POC値リセッティングを実行することなしにビットストリームを復号するように構成された事例では(上述したHEVC準拠ビデオデコーダなど)、ビデオデコーダは、DPBに記憶されたピクチャのPOC LSB値を減分しないことがある。たとえば、マルチレイヤ・ビットストリームから独立非ベースレイヤを抽出すると、ビデオデコーダは、スライスヘッダから−50および−40のLTRP POC LSB値の指示(indications)を復号し得る。しかしながら、ビデオデコーダ30がPOC値リセッティングを実行していなかったので、DPBに記憶された対応するピクチャは依然として10および20の値を有し得る。したがって、ビデオデコーダは、シグナリングされたPOC LSB値に基づいてDPB中のLTRPを適切に識別しないことがある。
[0079]本開示の態様によれば、ビデオエンコーダ20およびビデオデコーダ30は、POC値リセッティングが実行される様式を制御し得る。本技法は、いくつかの事例では、独立非ベースレイヤを復号するときに、スライスヘッダ中でシグナリングされるLTRPのPOC値が、ビデオデコーダのDPBに記憶された参照ピクチャのPOC値との一貫性を維持することを可能にし得る。
[0080]一例では、ビデオエンコーダ20およびビデオデコーダ30は、マルチレイヤ・ビットストリームの独立して復号可能なレイヤのピクチャをコーディング(符号化または復号)し得る。ビデオエンコーダ20およびビデオデコーダ30はまた、ピクチャが、0に等しいピクチャのためのPOC LSB値を有するときのみ、ピクチャのPOC LSB値のためのPOC値リセットを示すデータをコーディングし得る。そのような事例では、POC値リセットを実行することは、POC LSB値がすでに0に等しいので、ビデオエンコーダ20またはビデオデコーダ30に、DPBに記憶されたピクチャのPOC値を減分するように要求しない。
[0081]説明のために上記で説明した例に戻ると、ビデオエンコーダ20およびビデオデコーダ30が、(たとえば、上述した60のPOC LSB値ではなく)0のPOC LSB値を有するピクチャにおいてPOC値リセッティングを実行する場合、ビデオエンコーダ20およびビデオデコーダ30は、POC LSB値と0との間の差が0であるので、DPBに記憶されたピクチャのPOC LSB値を減分しない。したがって、スライスヘッダ中でシグナリングされたLTRPのPOC LSB値は、ビデオデコーダ30においてDPBに記憶されたピクチャのPOC LSB値に一致する。
[0082]いくつかの例では、本開示の態様によれば、ビデオエンコーダ20およびビデオデコーダ30は、0に等しいPOC LSB値を有するピクチャのためにのみPOC値リセッティングが実行されるように制約を適用し得る。一例では、独立非ベースレイヤ(レイヤA)が、抽出され、レイヤA中のピクチャのVCL NALユニットのスライスヘッダを変更することなしに、特定の規格との適合性を維持する(たとえば、HEVCのプロファイルとの適合性を維持する)ことが可能であるために、ビデオエンコーダ20およびビデオデコーダ30は、以下の制約、すなわち、(1)レイヤA中のIDRピクチャのあらゆるスライスセグメントヘッダについて、slice_pic_order_cnt_lsbシンタックス要素が存在するとは限らないものとし、(2)レイヤ中の各ピクチャが、POC値のMSB値とLSB値の両方をリセットするPOCリセッティングピクチャに先行する長期参照ピクチャを有しないものとする、を適用し得る。
[0083]別の例では、ビデオエンコーダ20およびビデオデコーダ30は、以下の制約、すなわち、(1)レイヤA中のIDRピクチャのあらゆるスライスセグメントヘッダについて、slice_pic_order_cnt_lsbシンタックス要素が存在するとは限らないものとし、(2)レイヤA中のPOC値のMSB値とLSB値の両方をリセットするPOCリセッティングピクチャが、(リセットの前に)0に等しいPOC LSBを有しない限り、そのようなPOCリセッティングピクチャはないものとする、を適用し得る。
[0084]別の例では、ビデオエンコーダ20およびビデオデコーダ30は、以下の制約、すなわち、(1)レイヤA中のIDRピクチャのあらゆるスライスセグメントヘッダについて、slice_pic_order_cnt_lsbシンタックス要素が存在するとは限らないものとし、(2)レイヤA中のPOC値のMSB値とLSB値の両方をリセットするPOCリセッティングピクチャもIDRピクチャでない限り、そのようなPOCリセッティングピクチャはないものとし、(3)リセッティングピクチャもIDRピクチャでない限り、レイヤA中のPOC値のMSB値とLSB値とをリセットすることを示す、3に等しいpoc_reset_idcシンタックス要素をもつPOCリセッティングピクチャはないものとする、を適用し得る。
[0085]さらに別の例では、以下でより詳細に説明するように、ビデオエンコーダ20およびビデオデコーダ30は、poc_lsb_not_present_flag[i]の値をbase_layer_parameter_set_compatibility_flag[i]の存在の条件とし得る。さらに別の例では、ビデオエンコーダ20は、レイヤが抽出の後に特定の規格(たとえば、HEVC)との互換性を維持するかどうかを示すために、各独立非ベースレイヤのためのフラグをシグナリングし得る(およびビデオデコーダ30はそのフラグを復号し得る)。
[0086]本開示の技法はまた、マルチレイヤアクセスユニットのピクチャのPOC値整合を維持すること(たとえば、アクセスユニットのすべてのピクチャが同じPOC値を有することを維持すること)に関する。たとえば、POC値リセッティングは、一般に、IDRピクチャのために実行されるが、マルチレイヤコーディングにおけるいくつかの事例では、ビデオエンコーダ20およびビデオデコーダ30は、IDRピクチャのPOC値をリセットしないことがある。説明のための例では、アクセスユニットは、IDRピクチャでないベースレイヤピクチャ、IDRピクチャである非ベースレイヤピクチャを含み得る。ビデオエンコーダ20およびビデオデコーダ30は、一般に、非ベースレイヤのIDRピクチャのためのPOC値リセッティングを実行し得るが、アクセスユニット中のPOC値整合を維持するために、ビデオエンコーダ20は、代わりに、非ベースレイヤピクチャのためのベースレイヤのPOC LSB値をシグナリングし得る(およびビデオデコーダ30がそのPOC LSB値を復号し得る)。たとえば、ビデオエンコーダ20は、非ベースレイヤピクチャのスライスヘッダ中に(0に等しくない)ベースレイヤのPOC LSB値の指示を含め得る。
[0087]しかしながら、上記で説明した例は、独立非ベースレイヤをコーディングするときに課題を提示し得る。説明のための非限定的な例では、HEVC準拠ビデオデコーダが、IDRピクチャのPOC LSB値を0に等しくなるようにリセットし得る。そのような例では、HEVC準拠ビデオデコーダは、POC LSB値が0であるので、IDRピクチャのスライスのスライスヘッダからPOC LSB値の指示を復号するように構成されないことがある。したがって、HEVC準拠ビデオデコーダが、IDRピクチャのスライスヘッダからPOC LSB値を復号するように構成されないことがあるので、HEVC準拠ビデオデコーダは、POC LSB値がIDRピクチャのスライスヘッダ中でシグナリングされるとき、誤動作し(malfunction)得る。次いで、デコーダは、順次、次のIRAPピクチャにスキップし得、それにより、ユーザエクスペリエンス(a user experience)の連続性を劣化させ得る。
[0088]上述のMV−HEVC規格およびSHVC規格は、poc_lsb_not_present_flagを含む1つまたは複数のシンタックス要素を使用して、サブビットストリームが独立して復号可能であるかどうかを示し得る。いくつかの事例では、1に等しいpoc_lsb_not_present_flagは、たとえば、HEVC準拠ビデオデコーダによって、poc_lsb_not_present_flagに関連付けられたレイヤが独立して復号可能であることを示し得る。逆に、0に等しいpoc_lsb_not_present_flagは、スライスヘッダ中に含まれるシンタックスなどのいくつかのシンタックスが、そのレイヤが独立して復号されるように変更される必要があり得ることを示し得る。
[0089]概して、poc_lsb_not_present_flagは、POC LSB値がIDRピクチャのスライスヘッダ中に含まれるかどうかを示し得る。SHVCとMV−HEVCとに従って、1に等しいpoc_lsb_not_present_flagは、POC LSB値がIDRピクチャのスライスヘッダ中に存在しないことを指定する。0に等しいpoc_lsb_not_present_flagは、POC LSB値がIDRピクチャのスライスヘッダ中に存在することも存在しないこともあることを指定する。poc_lsb_not_present_flagは、POC LSB値がスライスヘッダ中に含まれ得るという指示をそれが与えるので、非ベースレイヤの比較的より容易な抽出および復号を可能にし得る。
[0090]上述のMV−HEVC規格およびSHVC規格に関して、poc_lsb_not_present_flagを(たとえば、POC LSB値がスライスヘッダ中に含まれないことを示す)1に等しく設定すること対する唯一の明示的制約は、コーディングされているレイヤが独立レイヤであることである。しかしながら、POC LSB値がスライスヘッダ中に含まれないことを示すことは、図5の例に関して以下でより詳細に説明するように、0のPOC LSB値を有しない独立レイヤのピクチャについて問題を生じ得る。
[0091]本開示の態様によれば、ビデオエンコーダ20およびビデオデコーダ30は、ピクチャが、0に等しいピクチャのためのPOC LSB値を有するときのみ、ピクチャのPOC LSB値のためのPOC値リセットを示すデータをコーディングし得る。たとえば、ビデオエンコーダ20およびビデオデコーダ30は、レイヤ中のIDRピクチャのPOC LSB値が0に等しいと推論されないことがある限り、poc_lsb_not_present_flag[i]の値が(たとえば、POC LSB値がスライスヘッダ中に含まれないことを示す)1に等しくならないものとするような制約を適用する。独立非ベースレイヤピクチャのPOC LSB値は、同じアクセスユニット中のベースレイヤピクチャのPOC LSB値がIDRピクチャであるとき、または非ベースレイヤピクチャのPOC LSB値が(たとえば、0から最大POC LSB値までのPOC LSB値の通常漸進(a normal progression)に従って)0値化され(zero valued)たとき、0に等しいと推論され得る。
[0092]図2は、本開示の技法による、POC値を管理するための技法を実装し得るビデオエンコーダ20の一例を示すブロック図である。特に、ビデオエンコーダ20は、本開示の技法に従って、マルチレイヤ・ビットストリームのピクチャのPOC値を管理するように構成され得る。上述のように、ビデオエンコーダ20は、マルチビューおよび/またはスケーラブルビデオコーディングを実行するように適応され得る。たとえば、ビデオエンコーダ20は、SHVCまたはMV−HEVCなどの1つまたは複数のビデオコーディング規格拡張に準拠するビットストリームを符号化するように構成され得る。ただし、特定のコーディング規格が参照されるが、本技法は、いずれか1つのコーディング規格に固有でなく、将来のおよび/またはまだ開発されていない規格とともに実装され得ることを理解されたい。
[0093]ビデオエンコーダ20は、ビデオスライス内のビデオブロックのイントラコーディングおよびインターコーディングを実行し得る。イントラコーディングは、所与のビデオフレームまたはピクチャ内のビデオの空間的冗長性を低減または除去するために空間的予測に依拠する。インターコーディングは、ビデオシーケンスの隣接フレームまたはピクチャ内のビデオの時間的冗長性を低減または除去するために時間的予測に依拠する。イントラモード(Iモード)は、いくつかの空間ベースコーディングモードのいずれかを指すことがある。単方向予測(Pモード)または双方向予測(Bモード)などのインターモードは、いくつかの時間ベースのコーディングモードのいずれかを指すことがある。
[0094]図2に示されているように、ビデオエンコーダ20は、符号化されるべきビデオフレーム内の現在ビデオブロックを受信する。図2の例では、ビデオエンコーダ20は、ビデオデータメモリ38と、モード選択ユニット40と、参照ピクチャメモリ64と、加算器50と、変換処理ユニット52と、量子化ユニット54と、エントロピーエンコーディングユニット56とを含む。モード選択ユニット40は、順々に、動き補償ユニット44と、動き推定ユニット42と、イントラ予測ユニット46と、パーティションユニット48とを含む。ビデオブロック再構成のために、ビデオエンコーダ20はまた、逆量子化ユニット58と、逆変換ユニット60と、加算器62とを含む。再構成されたビデオからブロッキネスアーティファクト(blockiness artifacts)を除去するためにブロック境界をフィルタ処理する(図2に示されていない)デブロッキングフィルタも含まれ得る。所望される場合、デブロッキングフィルタは、一般に、加算器62の出力をフィルタ処理することになる。(ループ中またはループ後の)追加のフィルタもデブロッキングフィルタに加えて使用され得る。そのようなフィルタは、簡潔のために示されていないが、所望される場合、(ループ内フィルタとして)加算器50の出力をフィルタ処理し得る。
[0095]符号化プロセス中に、ビデオエンコーダ20は、コーディングされるべきビデオフレームまたはスライスを受信する。フレームまたはスライスは、複数のビデオブロックに分割され得る。ビデオデータメモリ38は、ビデオエンコーダ20の構成要素によって符号化されるべきビデオデータを記憶し得る。ビデオデータメモリ38に記憶されるビデオデータは、たとえば、ビデオソース18から取得され得る。参照ピクチャメモリ64は、たとえば、イントラコーディングモードまたはインターコーディングモードでビデオエンコーダ20によってビデオデータを符号化する際に使用する参照ビデオデータを記憶するDPBと呼ばれることがある。ビデオデータメモリ38および参照ピクチャメモリ64は、同期DRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗性RAM(RRAM(登録商標))、または他のタイプのメモリデバイスなど、様々なメモリデバイスのうちのいずれかによって形成され得る。ビデオデータメモリ38および参照ピクチャメモリ64は、同じメモリデバイスまたは別個のメモリデバイスによって与えられ得る。様々な例では、ビデオデータメモリ38は、ビデオエンコーダ20の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
[0096]動き推定ユニット42および動き補償ユニット44は、時間的予測を行うために、1つまたは複数の参照フレーム中の1つまたは複数のブロックに対する受信されたビデオブロックのインター予測コーディングを実行する。イントラ予測ユニット46は、代替的に、空間的予測を行うために、コーディングされるべきブロックと同じフレームまたはスライス中の1つまたは複数の近隣ブロックに対する受信されたビデオブロックのイントラ予測コーディングを実行し得る。ビデオエンコーダ20は、たとえば、ビデオデータのブロックごとに適切なコーディングモードを選択するために、複数のコーディングパスを実行し得る。
[0097]その上、パーティションユニット48は、前のコーディングパスにおける前の区分方式の評価に基づいて、ビデオデータのブロックをサブブロックに区分し得る。たとえば、パーティションユニット48は、初めにフレームまたはスライスをLCUに区分し、レートひずみ分析(rate-distortion analysis)(たとえば、レートひずみ最適化)に基づいてLCUの各々をサブCUに区分し得る。モード選択ユニット40は、さらに、サブCUへのLCUの区分を示す4分木データ構造を生成し得る。4分木のリーフノードCUは、1つまたは複数のPUと1つまたは複数のTUとを含み得る。
[0098]モード選択ユニット40は、たとえば、誤差結果に基づいてコーディングモード、すなわち、イントラまたはインターのうちの1つを選択し得、残差ブロックデータを生成するために、得られたイントラコード化ブロックまたはインターコード化ブロックを加算器50に与え、参照フレームとして使用するための符号化ブロックを再構成するために、得られたイントラコード化ブロックまたはインターコード化ブロックを加算器62に与える。モード選択ユニット40はまた、動きベクトル、イントラモードインジケータ、パーティション情報、および他のそのようなシンタックス情報など、シンタックス要素をエントロピー符号化ユニット56に与える。
[0099]動き推定ユニット42および動き補償ユニット44は、高度に統合され得るが、概念的な目的のために別々に示されている。動き推定ユニット42によって実行される動き推定は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、現在スライス(または他のコード化ユニット)内で符号化されている現在ブロックに対する参照ピクチャ(または他のコード化ユニット)内の予測ブロックに対する現在ビデオフレームまたはピクチャ内のビデオブロックのPUの変位(displacement)を示し得る。予測ブロックは、絶対差分和(SAD:sum of absolute difference)、2乗差分和(SSD:sum of square difference)、または他の差分メトリックによって決定され得るピクセル差分に関して、符号化されるべきブロックにぴったり一致することがわかるブロックである。
[0100]動き推定ユニット42は、PUの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコード化スライス中のビデオブロックのPUのための動きベクトルを計算する。参照ピクチャは、第1の参照ピクチャリスト(リスト0)または第2の参照ピクチャリスト(リスト1)から選択され得、それらの各々が、参照ピクチャメモリ64に記憶された1つまたは複数の参照ピクチャを識別する。動き推定ユニット42は、計算された動きベクトルをエントロピー符号化ユニット56と動き補償ユニット44とに送る。
[0101]動き補償ユニット44によって実行される動き補償は、動き推定ユニット42によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成することを伴い得る。同じく、動き推定ユニット42および動き補償ユニット44は、いくつかの例では、機能的に統合され得る。現在ビデオブロックのPUのための動きベクトルを受信すると、動き補償ユニット44は、動きベクトルが参照ピクチャリストのうちの1つにおいて指す予測ブロックの位置を特定し得る。加算器50は、以下で説明するように、符号化されている現在ビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成することによって、残差ビデオブロックを形成する。概して、動き推定ユニット42はルーマ成分に対して動き推定を実行し、動き補償ユニット44は、クロマ成分とルーマ成分の両方のための、ルーマ成分に基づいて計算された動きベクトルを使用する。モード選択ユニット40はまた、ビデオスライスのビデオブロックを復号する際にビデオデコーダ30が使用するビデオブロックとビデオスライスとに関連するシンタックス要素を生成し得る。
[0102]動き推定ユニット42は、参照ピクチャメモリ64のDPBに記憶された参照ピクチャを探索する。モード選択ユニット40は、ピクチャ、ピクチャのスライス、および/またはピクチャのシーケンスを符号化するためにどの参照ピクチャが使用されるべきであるかを決定し得る。ビデオエンコーダ20は、ピクチャ、スライス、またはシーケンスを符号化するために使用される参照ピクチャのためのピクチャ順序カウント(POC)値を符号化し得る。ビデオエンコーダ20は、スライスヘッダ中で、ならびに/あるいはPPSおよび/またはSPSなどのパラメータセット中で、参照ピクチャリスト中に含まれるべき参照ピクチャを示すPOC値を符号化し得る。
[0103]このようにして、ビデオデコーダ30などのビデオデコーダは、スライスヘッダおよび/または(1つまたは複数の)パラメータセット中で示された参照ピクチャを含めることによって参照ピクチャリストを再生し得る。さらに、動き推定ユニット42によって生成された動きベクトルを使用してブロックを符号化した後、ビデオエンコーダ20は、ブロックについての動き情報を符号化し得、ここで、動き情報は、動きベクトルを表すデータと、参照ピクチャリストのための識別子と、参照ピクチャリスト中の参照ピクチャを識別する参照インデックスとを含み得る。
[0104]いくつかの例では、ビデオエンコーダ20は、参照ピクチャメモリ64に記憶された参照ピクチャのサブ整数ピクセル位置(sub-integer pixel positions)の値を計算し得る。たとえば、ビデオエンコーダ20は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置、または他の分数ピクセル位置(fractional pixel positions)の値を補間し得る。したがって、動き推定ユニット42は、フルピクセル位置(full pixel positions)と分数ピクセル位置とに対する動き探索を実行し、分数ピクセル精度で動きベクトルを出力し得る。
[0105]ビデオエンコーダ20はまた、POCリセッティング期間を形成し、それぞれのPOCリセッティング期間にスライスを割り当てるために、ピクチャのスライスのためのPOCリセッティング期間識別子のための値を符号化し得る。ビデオエンコーダ20は、ビデオデータの各レイヤ内で個々にPOCリセッティング期間にスライスを割り当て得る。その上、ビデオエンコーダ20は、スライスのためのPOCリセッティングタイプを決定し、スライスのためのPOCリセッティングタイプの指示のための値(たとえば、2ビット値)を符号化し得る。
[0106]図1に関して説明したように、ビデオエンコーダ20は、適用可能なビデオコーディング規格によって確立された制限に従って構成され得る。たとえば、ビデオエンコーダ20は、各POCリセッティング期間における第1のピクチャが、POC値が完全または部分的にリセットされるべきであることを示すPOCリセッティングタイプ(たとえば、poc_reset_idc)を有することを保証し得る。概して、上記で説明したように、ビデオエンコーダ20は、コーディング順序で現在ピクチャより前にコーディングされたピクチャのPOC MSB値に基づいて、またはスライスヘッダ中でシグナリングされる追加情報(たとえば、POC MSBサイクル)に基づいて、現在ピクチャのためのPOC MSB値を決定し得る。
[0107]本開示の態様によれば、ビデオエンコーダ20は、0に等しいピクチャのためのPOC LSB値をピクチャが有するときのみ、独立非ベースレイヤのピクチャのPOC LSB値のためのPOC値リセットを示すデータを符号化し得る。たとえば、ビデオエンコーダ20はpoc_reset_idcシンタックス要素を符号化し得る。ビデオエンコーダ20は、現在ピクチャのためのPOC値のMSBもLSBもリセットされないことを指定するためにpoc_reset_idcシンタックス要素を0に等しく設定し得る。ビデオエンコーダ20は、現在ピクチャのためのPOC値のMSBのみがリセットされ得ることを指定するためにpoc_reset_idcシンタックス要素を1に等しく設定し得る。ビデオエンコーダ20は、現在ピクチャのためのPOC値のMSBとLSBの両方がリセットされ得ることを指定するためにpoc_reset_idcシンタックス要素を2に等しく設定し得る。ビデオエンコーダ20は、現在ピクチャのためのPOC値のMSBのみまたはMSBとLSBの両方のいずれかがリセットされ得ることと、追加のピクチャ順序カウント情報がシグナリングされ得ることとを指定するためにpoc_reset_idcシンタックス要素を3に等しく設定し得る。
[0108]ビデオエンコーダ20は、poc_reset_idc値が1つまたは複数の制約に基づいて設定される様式を制御し得る。たとえば、ビデオエンコーダ20は、得られたビットストリームが特定の規格に準拠することを保証するために、poc_reset_idcシンタックス要素が設定される様式を制御し得る。本開示の態様によれば、ビデオエンコーダ20は、たとえば、マルチレイヤ・ビットストリームの独立非ベースレイヤのコード化スライスのスライスヘッダ中に含まれている情報を変更/更新することなしに、独立非ベースレイヤが独立して復号されることを可能にするように独立非ベースレイヤ中のピクチャのためのpoc_reset_idcシンタックス要素を設定し得る。
[0109]たとえば、本開示の態様によれば、ビデオエンコーダ20は、コーディングされているピクチャが0に等しいPOC LSB値を有するときのみ、2に等しくなるようにpoc_reset_idcシンタックス要素を符号化し得る。すなわち、コーディングされている特定のレイヤのためのpoc_lsb_not_present_flagが(たとえば、レイヤが独立非ベースレイヤであることを示す)1に等しく、ピクチャのPOC LSB値を示すslice_pic_order_cnt_lsbシンタックス要素が0よりも大きいとき、ビデオエンコーダ20は、poc_reset_idcの値を2に等しく設定しないことがある。
[0110]ビデオエンコーダ20がpoc_reset_idcシンタックス要素を3に等しくなるように符号化するとき、ビデオエンコーダ20はfull_poc_reset_flagシンタックス要素とpoc_lsb_valシンタックス要素とをさらに符号化し得る。MV−HEVCおよびSHVCでは、1に等しいfull_poc_reset_flagは、同じレイヤ中の復号順序で前のピクチャが同じPOCリセッティング期間に属しないとき、現在ピクチャのためのPOC値のMSBとLSBの両方がリセットされることを指定する。0に等しいfull_poc_reset_flagは、同じレイヤ中の復号順序で前のピクチャが同じPOCリセッティング期間に属しないとき、現在ピクチャのためのPOC値のMSBのみがリセットされることを指定する。さらに、poc_lsb_valシンタックス要素は、現在ピクチャのピクチャ順序カウントを導出するために使用され得る値を指定する。
[0111]本開示の態様によれば、ビデオエンコーダ20は、符号化されているレイヤが独立非ベースレイヤであるかどうかに基づいてpoc_lsb_valが符号化される様式を制御し得る。たとえば、符号化されているレイヤのためのpoc_lsb_not_present_flagが1に等しく、full_poc_reset_flagが1に等しいとき、ビデオエンコーダ20は、poc_lsb_valの値を0に等しく設定し得る。このようにして、ビデオエンコーダ20は、POC値リセッティングが、0に等しいPOC LSB値を有するピクチャのためにのみ実行されることを保証し得、それにより、図4に関して以下でより詳細に説明するように、参照ピクチャが参照ピクチャセット中で適切に識別されることを可能にし得る。
[0112]イントラ予測ユニット46は、上記で説明したように、動き推定ユニット42と動き補償ユニット44とによって実行されるインター予測の代替として、現在ブロックをイントラ予測し得る。特に、イントラ予測ユニット46は、現在ブロックを符号化するために使用すべきイントラ予測モードを決定し得る。いくつかの例では、イントラ予測ユニット46は、たとえば、別個の符号化パス中に、様々なイントラ予測モードを使用して現在ブロックを符号化し得、イントラ予測ユニット46(または、いくつかの例では、モード選択ユニット40)は、テストされたモードから使用するのに適切なイントラ予測モードを選択し得る。
[0113]たとえば、イントラ予測ユニット46は、様々なテストされたイントラ予測モードのためのレートひずみ分析を使用してレートひずみ値を計算し、テストされたモードの中で最良のレートひずみ特性を有するイントラ予測モードを選択し得る。レートひずみ分析は、概して、符号化ブロックと、符号化ブロックを生成するために符号化された元の符号化されていないブロックとの間のひずみ(または誤差)の量、ならびに符号化ブロックを生成するために使用されるビットレート(すなわち、ビット数)を決定する。イントラ予測ユニット46は、どのイントラ予測モードがブロックについて最良のレートひずみ値を呈するかを決定するために、様々な符号化ブロックのひずみおよびレートから比率を計算し得る。
[0114]ブロックのためのイントラ予測モードを選択した後に、イントラ予測ユニット46は、ブロックのための選択されたイントラ予測モードを示す情報をエントロピー符号化ユニット56に与え得る。エントロピー符号化ユニット56は、選択されたイントラ予測モードを示す情報を符号化し得る。ビデオエンコーダ20は、複数のイントラ予測モードインデックステーブルおよび複数の変更されたイントラ予測モードインデックステーブル(コードワードマッピングテーブルとも呼ばれる)と、様々なブロックの符号化コンテキストの定義と、コンテキストの各々について使用すべき、最確イントラ予測モード(a most probable intra-prediction mode)、イントラ予測モードインデックステーブル、および変更されたイントラ予測モードインデックステーブルの指示と、を含み得る構成データを送信されるビットストリーム中に含め得る。
[0115]ビデオエンコーダ20は、コーディングされている元のビデオブロックから、モード選択ユニット40からの予測データを減算することによって残差ビデオブロックを形成する。加算器50は、この減算演算を実行する1つまたは複数の構成要素を表す。変換処理ユニット52は、離散コサイン変換(DCT)または概念的に同様の変換などの変換を残差ブロックに適用し、残差変換係数値(residual transform coefficient values)を備えるビデオブロックを生成する。変換処理ユニット52は、DCTと概念的に同様である他の変換を実行し得る。ウェーブレット変換、整数変換、サブバンド変換または他のタイプの変換も使用され得る。いずれの場合も、変換処理ユニット52は、変換を残差ブロックに適用し、残差変換係数のブロックを生成する。変換は、残差情報をピクセル値領域から周波数領域などの変換領域に変換し得る。
[0116]変換処理ユニット52は、得られた変換係数を量子化ユニット54に送り得る。量子化ユニット54は、ビットレートをさらに低減するために変換係数を量子化する。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって変更され得る。いくつかの例では、量子化ユニット54は、次いで、量子化された変換係数を含む行列の走査を実行し得る。代替的に、エントロピー符号化ユニット56が走査を実行し得る。
[0117]量子化の後に、エントロピー符号化ユニット56は量子化された変換係数をエントロピーコーディングする。たとえば、エントロピー符号化ユニット56は、コンテキスト適応型可変長コーディング(CAVLC:context adaptive variable length coding)、コンテキスト適応型バイナリ算術コーディング(CABAC)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC:syntax-based context-adaptive binary arithmetic coding)、確率間隔区分エントロピー(PIPE:probability interval partitioning entropy)コーディングまたは別のエントロピーコーディング技法を実行し得る。コンテキストベースのエントロピーコーディングの場合、コンテキストは隣接ブロックに基づき得る。エントロピー符号化ユニット56によるエントロピーコーディングの後に、符号化ビットストリームは、別のデバイス(たとえば、ビデオデコーダ30)に送信されるか、あるいは後で送信するかまたは取り出すためにアーカイブされ得る。
[0118]逆量子化ユニット58および逆変換ユニット60は、たとえば、参照ブロックとして後で使用するために、ピクセル領域において残差ブロックを再構成するために、それぞれ逆量子化および逆変換を適用する。動き補償ユニット44は、残差ブロックを参照ピクチャメモリ64の複数のフレームのうちの1つのうちの予測ブロックに加算することによって参照ブロックを計算し得る。動き補償ユニット44はまた、動き推定において使用するためのサブ整数ピクセル値を計算するために、再構成された残差ブロックに1つまたは複数の補間フィルタを適用し得る。加算器62は、参照ピクチャメモリ64に記憶するための再構成されたビデオブロックを生成するために、動き補償ユニット44によって生成された動き補償予測ブロックに再構成された残差ブロックを加算する。再構成されたビデオブロックは、後続のビデオフレーム中のブロックをインターコーディングするために動き推定ユニット42および動き補償ユニット44によって参照ブロックとして使用され得る。
[0119]このようにして、図2のビデオエンコーダ20は、マルチレイヤ・ビットストリームの独立して復号可能なレイヤのピクチャの少なくとも一部分を符号化することと、ピクチャが、0に等しいピクチャのためのPOC LSB値を有するときのみ、ピクチャのPOC LSB値のためのPOC値リセットを示すデータを符号化することと、を行うように構成されたビデオエンコーダの一例を表す。
[0120]図3は、本開示の技法による、POC値を管理するための技法を実装し得る、ビデオデコーダ30の一例を示すブロック図である。上述のように、ビデオデコーダ30は、マルチビューおよび/またはスケーラブルビデオコーディングを実行するように適応され得る。たとえば、ビデオデコーダ30は、SHVCまたはMV−HEVCなどの1つまたは複数のビデオコーディング規格の拡張に準拠するビットストリームを復号するように構成され得る。ただし、特定のコーディング規格が参照されるが、本技法は、いずれか1つのコーディング規格に固有でなく、将来のおよび/またはまだ開発されていない規格とともに実装され得ることを理解されたい。
[0121]図3の例では、ビデオデコーダ30は、ビデオデータメモリ68と、エントロピー復号ユニット70と、動き補償ユニット72と、イントラ予測ユニット74と、逆量子化ユニット76と、逆変換ユニット78と、参照ピクチャメモリ82と、加算器80とを含む。ビデオデコーダ30は、いくつかの例では、ビデオエンコーダ20(図2)に関して説明した符号化パスとは概して逆の復号パスを実行し得る。動き補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルに基づいて予測データを生成し得、イントラ予測ユニット74は、エントロピー復号ユニット70から受信されたイントラ予測モードインジケータに基づいて予測データを生成し得る。
[0122]ビデオデータメモリ68は、ビデオデコーダ30の構成要素によって復号されるべき、符号化ビデオビットストリームなどのビデオデータを記憶し得る。ビデオデータメモリ68に記憶されるビデオデータは、たとえば、コンピュータ可読媒体から、たとえば、カメラなどのローカルビデオソースから、ビデオデータのワイヤードもしくはワイヤレスネットワーク通信を介して、または物理データ記憶媒体にアクセスすることによって、取得され得る。ビデオデータメモリ68は、符号化ビデオビットストリームからの符号化ビデオデータを記憶するコード化ピクチャバッファ(CPB:a coded picture buffer)を形成し得る。参照ピクチャメモリ82は、たとえば、イントラコーディングモードまたはインターコーディングモードで、ビデオデコーダ30によってビデオデータを復号する際に使用するための参照ビデオデータを記憶するDPBと呼ばれることがある。ビデオデータメモリ68および参照ピクチャメモリ82は、同期DRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗性RAM(RRAM)、または他のタイプのメモリデバイスなど、様々なメモリデバイスのうちのいずれかによって形成され得る。ビデオデータメモリ68および参照ピクチャメモリ82は、同じメモリデバイスまたは別個のメモリデバイスによって与えられ得る。様々な例では、ビデオデータメモリ68は、ビデオデコーダ30の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
[0123]復号プロセス中に、ビデオデコーダ30は、ビデオエンコーダ20から、符号化ビデオスライスのビデオブロックと、関連するシンタックス要素とを表す符号化ビデオビットストリームを受信する。ビデオデコーダ30のエントロピー復号ユニット70は、量子化された係数と、動きベクトルまたはイントラ予測モードインジケータと、他のシンタックス要素とを生成するために、ビットストリームをエントロピー復号する。エントロピー復号ユニット70は、動きベクトルと他の予測シンタックス要素とを動き補償ユニット72に転送する。ビデオデコーダ30は、ビデオスライスレベルおよび/またはビデオブロックレベルでシンタックス要素を受信し得る。
[0124]ビデオスライスがイントラコード化(I)スライスとしてコーディングされるとき、イントラ予測ユニット74は、シグナリングされたイントラ予測モードと、現在フレームまたはピクチャの、前に復号されたブロックからのデータとに基づいて、現在ビデオスライスのビデオブロックのための予測データを生成し得る。ビデオフレームがインターコード化(すなわち、B、PまたはGPB)スライスとしてコーディングされるとき、動き補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルと他のシンタックス要素とに基づいて、現在ビデオスライスのビデオブロックのための予測ブロックを生成する。予測ブロックは、参照ピクチャリストのうちの1つ内の参照ピクチャのうちの1つから生成され得る。ビデオデコーダ30は、参照ピクチャメモリ82のDPBに記憶された参照ピクチャに基づくデフォルトの構成技法を使用して参照フレームリストのリスト0(L0)およびリスト1(L1)を構成し得る。
[0125]より詳細には、ビデオデコーダ30は、PPSに対応するピクチャのスライスがPOCリセッティング情報を含むかどうかを示すPPSを復号し得る。スライスがPOCリセッティング情報を含むと仮定すると、ビデオデコーダ30は、POCリセッティング情報を含むピクチャのスライスのスライスセグメントヘッダを復号し得る。POCリセッティング情報は、POCリセッティング期間識別子とPOCリセッティングタイプとを含み得る。
[0126]POCリセッティング期間識別子は、スライスが対応するPOCリセッティング期間を示し得る。POCリセッティングタイプは、スライスを含むピクチャのPOC値が完全にリセットされるかどうかを、またはPOC値のMSBのみがリセットされることを、示し得る。さらに、POCリセッティングタイプは、POCリセットが実行されるべきでないことを、または追加の情報がシグナリングされることを、示し得る。POCリセッティングタイプが、追加の情報がシグナリングされることを示す場合、ビデオデコーダ30は、POC値が完全にリセットされるのか、あるいは、MSBのみがリセットされるのかどうかと、POC LSB値と、を示し得る、追加の情報を復号し得る。
[0127]本開示の態様によれば、ビデオデコーダ30は、マルチレイヤ・ビットストリームの独立して復号可能な非ベースレイヤを復号するように構成され得る。たとえば、本開示の態様によれば、ビデオデコーダ30は、0に等しいピクチャのためのPOC LSB値をピクチャが有するときのみ、ピクチャのPOC LSB値のためのPOC値リセットを示すデータを復号し得る。
[0128]いくつかの例では、ビデオデコーダ30は、poc_reset_idcシンタックス要素を復号するように構成され得る。本開示の態様によれば、ビデオデコーダ30は、1つまたは複数の制約に基づいてpoc_reset_idcシンタックス要素を復号し得る。たとえば、ビデオデコーダ30は、特定の規格に準拠するpoc_reset_idcシンタックス要素を復号し得る。たとえば、本開示の態様によれば、ビデオデコーダ30は、コーディングされているピクチャが0に等しいPOC LSB値を有するときのみ、2に等しくなるようにpoc_reset_idcシンタックス要素を復号し得る。すなわち、コーディングされている特定のレイヤのためのpoc_lsb_not_present_flagが(たとえば、レイヤが独立非ベースレイヤであることを示す)1に等しく、ピクチャのPOC LSB値を示すslice_pic_order_cnt_lsbシンタックス要素が0よりも大きいとき、ビデオデコーダ30は、2に等しいpoc_reset_idcの値を復号しないことがある。
[0129]ビデオデコーダ30が、3に等しいpoc_reset_idcシンタックス要素を復号するとき、ビデオデコーダ30はfull_poc_reset_flagシンタックス要素とpoc_lsb_valシンタックス要素とをさらに復号し得る。本開示の態様によれば、復号されているレイヤのためのpoc_lsb_not_present_flagが1に等しく、full_poc_reset_flagが1に等しいとき、ビデオデコーダ30は、0に等しいpoc_lsb_valの値を復号し得る。このようにして、ビデオデコーダ30は、POC値リセッティングが0に等しいPOC LSB値を有するピクチャのためにのみ実行されることを保証し得、それにより、図4に関して以下でより詳細に説明するように、参照ピクチャが参照ピクチャセット中で適切に識別されることを可能にし得る。
[0130]ビデオデコーダ30はまた、参照ピクチャリスト中に含まれるべき参照ピクチャのPOC値を復号し得る。ビデオデコーダ30は、スライスセグメントヘッダ中で、および/あるいはPPSまたはSPSなどのパラメータセットから、これらのPOC値を復号し得る。次いで、ビデオデコーダ30は、復号されたPOC値によって識別される参照ピクチャを含む参照ピクチャリストを構成し得る。
[0131]スライスのための参照ピクチャリストを構成した後、ビデオデコーダ30はスライスのブロックを復号し得る。動き補償ユニット72は、動きベクトルと他のシンタックス要素とをパーズすることによって現在ビデオスライスのビデオブロックのための予測情報を決定し、復号されている現在ビデオブロックのための予測ブロックを生成するために、その予測情報を使用する。たとえば、動き補償ユニット72は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード(たとえば、イントラまたはインター予測)と、インター予測スライスタイプ(たとえば、Bスライス、Pスライス、またはGPBスライス)と、スライスの各インター符号化ビデオブロックのための動きベクトルと、スライスの各インターコード化ビデオブロックのためのインター予測ステータスと、現在ビデオスライス中のビデオブロックを復号するための他の情報とを決定するために、受信されたシンタックス要素のいくつかを使用する。インター予測ブロックのための動き情報は、ブロックを予測するために使用すべき参照ピクチャリスト中の参照ピクチャを識別するために、参照ピクチャリスト識別子と参照インデックスとを含み得る。
[0132]動き補償ユニット72はまた、補間フィルタに基づいて補間を実行し得る。動き補償ユニット72は、参照ブロックのサブ整数ピクセルの補間値を計算するために、ビデオブロックの符号化中にビデオエンコーダ20によって使用された補間フィルタを使用し得る。この場合、動き補償ユニット72は、受信されたシンタックス要素からビデオエンコーダ20によって使用された補間フィルタを決定し、予測ブロックを生成するためにそれらの補間フィルタを使用し得る。
[0133]逆量子化ユニット76は、ビットストリーム中で与えられ、エントロピー復号ユニット70によって復号された、量子化された変換係数を逆量子化(inverse quantize)、すなわち、逆量子化(de-quantize)する。逆量子化プロセスは、量子化の程度、および、同様に、適用されるべき逆量子化の程度、を決定するための、ビデオスライス中のビデオブロックごとにビデオエンコーダ30によって計算される量子化パラメータQPYの使用を含み得る。
[0134]逆変換ユニット78は、ピクセル領域において残差ブロックを生成するために、逆変換、たとえば、逆DCT、逆整数変換、または概念的に同様の逆変換プロセスを変換係数に適用する。
[0135]動き補償ユニット72が、動きベクトルと他のシンタックス要素とに基づいて現在ビデオブロックのための予測ブロックを生成した後、ビデオデコーダ30は、逆変換ユニット78からの残差ブロックを動き補償ユニット72によって生成された対応する予測ブロックと加算することによって、復号されたビデオブロックを形成する。加算器80は、この加算演算を実行する1つまたは複数の構成要素を表す。所望される場合、ブロッキネスアーティファクトを除去するために、復号ブロックをフィルタ処理するためにデブロッキングフィルタも適用され得る。(コーディングループ中またはコーディングループ後のいずれかの)他のループフィルタも、ピクセル遷移を平滑化するか、または場合によってはビデオ品質を改善するために使用され得る。所与のフレームまたはピクチャの復号されたビデオブロックは、次いで、その後の動き補償のために使用される参照ピクチャを記憶する参照ピクチャメモリ82に記憶される。参照ピクチャメモリ82はまた、図1のディスプレイデバイス32などのディスプレイデバイス上で後で提示するために復号されたビデオを記憶する。
[0136]このようにして、図3のビデオデコーダ30は、マルチレイヤ・ビットストリームの独立して復号可能なレイヤのピクチャの少なくとも一部分を復号することと、ピクチャが、0に等しいピクチャのためのPOC LSB値を有するときのみ、ピクチャのPOC LSB値のためのPOC値リセットを示すデータを復号することと、を行うように構成されたビデオデコーダの一例を表す。
[0137]図4は、マルチレイヤ・ビットストリームの独立非ベースレイヤのためのPOC値リセッティングを示す概念図である。図4の例では、マルチレイヤ・ビットストリームはベースレイヤ(レイヤ0)90と独立非ベースレイヤ(レイヤ1)92とを含む。概して、図4に記載されている例示的な図の上半分は、たとえば、ビデオエンコーダ20などのビデオエンコーダによって符号化されるような、(「レイヤ1の抽出の前」という句によって示されている)抽出より前のマルチレイヤ・ビットストリームを示す。図4に記載されている例示的な図の下半分は、たとえば、ビデオデコーダ30などのビデオデコーダによって復号するための、(「レイヤ1の抽出の後」という句によって示されている)マルチレイヤ・ビットストリームからの抽出の後の非ベースレイヤ92を含んでいるサブビットストリームを示す。
[0138]抽出の前に、ビデオエンコーダ20は、特定のビデオコーディング規格、たとえば、MV−HEVCまたはSHVCを使用してベースレイヤ90と非ベースレイヤ92とを符号化し得る。たとえば、ビデオエンコーダ20は、IDRピクチャ94のためのPOC値リセッティングを実行するように構成され得る。ビデオエンコーダは、2に等しいPOC値リセットインデックス(poc_reset_idc)をシグナリングし得る。POC値リセッティングの前に、ピクチャ94は、0のPOC MSB値と20のPOC LSB値とを有する。POC値リセッティングの後に、ピクチャ94は、0のPOC MSB値と0のPOC LSB値とを有する。さらに、POC値のクロスレイヤ整合を維持するために、ビデオエンコーダ20は、非ベースレイヤ92中に含まれるピクチャ96のPOC値リセッティングを実行し得る。したがって、POC値リセッティングの前に、ピクチャ96は、0のPOC MSB値と20のPOC LSB値とを有する。POC値リセッティングの後に、ピクチャ96は、0のPOC MSB値と0のPOC LSB値とを有する。
[0139]POC値リセッティングを実行するときに、ビデオエンコーダ20はまた、POC値リセッティングを考慮するために、DPBに記憶されたピクチャのPOC LSB値を減分し得る。たとえば、ビデオエンコーダ20は、DPBに記憶された各参照ピクチャのPOC LSB値を20(たとえば、元のPOC LSB値とリセットPOC LSB値との間の差)だけ減分し得る。したがって、POC値リセッティングの前に、参照ピクチャ98は、0のPOC MSB値と3のPOC LSB値とを有する。POC値リセッティングの後に、参照ピクチャ98は、0のPOC MSB値と−17のPOC LSB値とを有する。同様に、POC値リセッティングの前に、参照ピクチャ100は、0のPOC MSB値と3のPOC LSB値とを有する。POC値リセッティングの後に、参照ピクチャ100は、0のPOC MSB値と−17のPOC LSB値とを有する。
[0140]ビデオエンコーダ20はまた、インター予測を使用して非ベースレイヤ92のピクチャ102を符号化する。たとえば、ビデオエンコーダ20は、参照ピクチャ100をLTRPとして識別し、ピクチャ102(たとえば、長期参照ピクチャセット(LT−RPS))を符号化するためにRPS中に参照ピクチャ100を含める。ビデオエンコーダ20はまた、参照ピクチャ100をLTRPとして識別するために、ピクチャ102のスライスのスライスヘッダ中で、またはピクチャ102によって参照されるパラメータセット中で参照ピクチャ100のPOC LSB値をシグナリングし得る。すなわち、ビデオエンコーダ20は、(変換アルゴリズムを使用して正数への−17の変換の後に)シグナリングされる参照ピクチャ100のPOC LSB値が15になるようにPOC値リセッティングを実行した後にそのPOC LSB値をシグナリングし得る。
[0141]抽出の後に、上述のように、ビデオデコーダ30は、非ベースレイヤを符号化するために使用されるマルチレイヤ規格と必ずしも同じとは限らない特定のシングルレイヤ規格、たとえば、HEVCに準拠することによって非ベースレイヤ92を復号するように構成され得る。したがって、ビデオデコーダ30は、非ベースレイヤ92を復号し、他のシンタックスを廃棄するか、またはさもなければ無視するために、その規格に関連付けられたシンタックスを使用し得る。本明細書では、HEVC、および/またはHEVCのマルチレイヤ拡張に準拠するビデオデコーダ30が参照されるが、本開示の技法は、必ずしもこのように限定されるとは限らず、他の規格とともに使用され得ることを理解されたい。
[0142]ピクチャ102を復号するために、ビデオデコーダ30は、ビデオエンコーダ20によって実行される様式とは逆の様式でインター予測を実行するように構成され得る。したがって、ビデオデコーダ30は、LT−RPSから1つまたは複数のピクチャを含み得る参照ピクチャリストを構成し得る。たとえば、ビデオデコーダ30は、参照ピクチャ100を含む1つまたは複数の長期参照ピクチャを識別するために、ピクチャ102のスライスのスライスヘッダ、またはピクチャ102によって参照されるパラメータセットを復号し得る。
[0143]上述のように、参照ピクチャ100のPOC LSB値は、(たとえば、POC値リセッティングを実行した後の−17のPOC LSB値に対応する)15に等しいものとして、ピクチャ102のスライスヘッダ中でシグナリングされ得る。しかしながら、ビデオデコーダ30は、POC値リセッティングを実行するように構成されないことがある。たとえば、ピクチャ96を復号するときに、ビデオデコーダ30はpoc_reset_idcシンタックス要素を復号しないことがあり、DPBに記憶されたピクチャのPOC LSB値を減分しないことがある。したがって、参照ピクチャ100のPOC LSB値は3に等しい。しかしながら、参照ピクチャ100は15のPOC LSB値によってスライスヘッダ中で識別される。したがって、図4の例では、参照ピクチャ100のPOC LSB値が、スライスヘッダ中でシグナリングされたPOC LSB値に一致しないので、ビデオデコーダ30は、DPB中で参照ピクチャ100の位置を特定し得る。
[0144]図4の例によって示されるように、スライスヘッダ情報を変更することなしにHEVCデコーダによって復号されることが可能である(非ベースレイヤ92などの)独立エンハンスメントレイヤを抽出するために、ビデオデコーダ30は、レイヤ中のピクチャの予測のためにLTRPが使用されるかどうかと、POC LSBとPOC MSBの両方をリセットするピクチャがレイヤ中に存在するかどうかとを考慮し得る。これらの2つのパラメータは、レイヤ中のピクチャのスライスヘッダを変更する必要なしに、マルチレイヤ・ビットストリームから独立エンハンスメントレイヤを抽出することが可能であるかどうかを決定するために考慮され得る。
[0145]本開示の態様によれば、ビデオエンコーダ20およびビデオデコーダ30は、独立非ベースレイヤのためにPOC値リセッティングが実行される様式を制御し得る。本技法は、いくつかの事例では、スライスヘッダ中でシグナリングされるLTRPのPOC値が、ビデオデコーダのDPBに記憶された参照ピクチャのPOC値との一貫性を維持することを可能にし得る。一例では、ビデオエンコーダ20およびビデオデコーダ30は、マルチレイヤ・ビットストリームの独立して復号可能なレイヤのピクチャをコーディング(符号化または復号)し得る。ビデオエンコーダ20およびビデオデコーダ30はまた、ピクチャが、0に等しいピクチャのためのPOC LSB値を有するときのみ、ピクチャのPOC LSB値のためのPOC値リセットを示すデータをコーディングし得る。そのような事例では、POC値リセットを実行することは、POC LSB値がすでに0に等しいので、ビデオエンコーダ20またはビデオデコーダ30に、DPBに記憶されたピクチャのPOC値を減分するように要求しない。
[0146]本開示の様々な技法による、POC値リセッティングを管理するための例示的なシンタックスおよびセマンティクスを以下に記載する。説明するシンタックスおよびセマンティクスは、たとえば、上述のMV−HEVCおよびSHVCのシンタックスおよびセマンティクスに関係する。以下の例示的な説明、シンタックステーブルおよびセマンティクスでは、MV−HEVCおよびSHVCへの追加は、イタリック体を使用して表され、削除は、括弧でくくられた、「除去(removed)」が前に付いたテキスト(たとえば、[除去:「除去されたテキスト」]([removed: “removed text”]))を使用して表される。概して、「要件」に関する文は、規格または規格拡張のテキストの一部を形成するものであり、本開示の技法の目的のための要件を形成しないものと理解されたい。いくつかの事例では、そのような「要件」は、適用可能であると決定され得、その場合、たとえば、その決定に基づいてビデオコーダによって厳守され得る、ビットストリーム制約を含み得る)。
[0147]第1の例では、ビデオパラメータセット(VPS)ビデオユーザビリティ情報(VUI:video usability information)中のシンタックス要素base_layer_parameter_set_compatibility_flag[i]のセマンティクスに対して、以下の変更が行われ得る。
1に等しいbase_layer_parameter_set_compatibility_flag[i]は、以下の制約が、layer_id_in_nuh[i]に等しいnuh_layer_idをもつレイヤに適用されることを指定する。0に等しいbase_layer_parameter_set_compatibility_flag[i]は、以下の制約が、layer_id_in_nuh[i]に等しいnuh_layer_idをもつレイヤに適用されることもされないこともあることを指定する。存在しないとき、base_layer_parameter_set_compatibility_flag[i]の値は0に等しいと推論される。
−VPSを参照するlayer_id_in_nuh[i]に等しいnuh_layer_id値をもつ各コード化スライスセグメントNALユニットは、0に等しいnuh_layer_id値をもつPPSを参照するものとする。
−VPSを参照するlayer_id_in_nuh[i]に等しいnuh_layer_id値をもつ各コード化スライスセグメントNALユニットは、0に等しいnuh_layer_id値をもつSPSを参照するものとする。
−layer_id_in_nuh[i]に等しいnuh_layer_idをもつレイヤのためのアクティブSPSのそれぞれ、chroma_format_idc、separate_colour_plane_flag、pic_width_in_luma_samples、pic_height_in_luma_samples、bit_depth_luma_minus8、およびbit_depth_chroma_minus8の値は、アクティブVPS中のvps_rep_format_idx[i]番目のrep_format()シンタックス構造のそれぞれ、chroma_format_idc、separate_colour_plane_flag、pic_width_in_luma_samples、pic_height_in_luma_samples、bit_depth_luma_minus8、およびbit_depth_chroma_minus8の値と同じであるものとする。
−poc_lsb_not_present_flag[i]の値は、1に等しいものとする。
−VPSを参照するlayer_id_in_nuh_[i]に等しいnuh_layer_idをもつピクチャpicAを含んでいるアクセスユニットが、0に等しいnuh_layer_idと、0よりも大きいslice_pic_order_cnt_lsbとをもつピクチャをも含んでいるとき、ピクチャpicAは非IDRピクチャであるものとする。
VPSを参照するlayer_id_in_nuh[i]に等しいnuh_layer_id値をもつコード化スライスセグメントNALユニットがnum_long_term_spsまたはnum_long_term_picsのいずれか、あるいはその両方の非0値を有し、およびslice_pic−order_cnt_lsbが0に等しくないとき、poc_reset_idcは2に等しくないものとする。
[0148]第2の例では、base_layer_compatibility_flag[i]に対するシンタックス要素base_layer_parameter_set_compatibility_flag[i]の名前。さらに、(以下でbase_layer_compatibility_flag[i]として示されている)VPS VUI中のシンタックス要素base_layer_parameter_set_compatibility_flag[i]のセマンティクスに対して、以下の変更が行われ得る。
1に等しいbase_layer_compatibility_flag[i]は、以下の制約が、layer_id_in_nuh[i]に等しいnuh_layer_idをもつレイヤに適用されることを指定する。0に等しいbase_layer_compatibility_flag[i]は、以下の制約が、layer_id_in_nuh[i]に等しいnuh_layer_idをもつレイヤに適用されることもされないこともあることを指定する。存在しないとき、base_layer_compatibility_flag[i]の値は0に等しいと推論される。
−VPSを参照するlayer_id_in_nuh[i]に等しいnuh_layer_id値をもつ各コード化スライスセグメントNALユニットは、0に等しいnuh_layer_id値をもつPPSを参照するものとする。
−VPSを参照するlayer_id_in_nuh[i]に等しいnuh_layer_id値をもつ各コード化スライスセグメントNALユニットは、0に等しいnuh_layer_id値をもつSPSを参照するものとする。
−layer_id_in_nuh[i]に等しいnuh_layer_idをもつレイヤのためのアクティブSPSのそれぞれ、chroma_format_idc、separate_colour_plane_flag、pic_width_in_luma_samples、pic_height_in_luma_samples、bit_depth_luma_minus8、およびbit_depth_chroma_minus8の値は、アクティブVPS中のvps_rep_format_idx[i]番目のrep_format()シンタックス構造のそれぞれ、chroma_format_idc、separate_colour_plane_flag、pic_width_in_luma_samples、pic_height_in_luma_samples、bit_depth_luma_minus8、およびbit_depth_chroma_minus8の値と同じであるものとする。
−poc_lsb_not_present_flag[i]の値は、1に等しいものとする。
−layer_id_in_nuh[i]に等しいnuh_layer_idを有し、VPSを参照する任意のピクチャpicAについて、以下が適用される。
−slice_pic_order_cnt_lsbが0よりも大きいとき、poc_reset_idcは2に等しくないものとする。
−full_poc_reset_flagが1に等しいとき、poc_lsb_valは0に等しくないものとする。
[0149]本明細書に含まれるシンタックスは、例示のためにすぎないことを理解されたい。すなわち、上記の例について、そのbase_layer_compatibilityフラグに関して説明したが、ビデオエンコーダ20およびビデオデコーダ30は、別の異なるシンタックス要素に関して、または別の様式で本明細書で説明する制約を適用し得る。
[0150]第3の例では、0に等しいnuh_layer_idをもつ非IDRピクチャと、layer_id_in_nuh[i]に等しいnuh_layer_idをもつIDRピクチャとを含んでいる少なくとも1つのアクセスユニットがあるとき、poc_lsb_not_present_flag[i]が1に等しくないものとするような制約が、poc_lsb_not_present_flag[i]のセマンティクスに追加される。poc_lsb_not_present_flag[i]の値が1に等しいときのみ、シンタックス要素が存在するような条件が、シンタックス要素base_layer_parameter_set_compatibility_flag[i]のシグナリングに追加される。base_layer_parameter_set_compatibility_flag[i]のための値は、それが存在しないとき、0に等しいと推論される。
[0151]さらに、上述の変更を有するシンタックス要素base_layer_parameter_set_compatibility_flag[i]のシグナリングは、下記の表に記載されているように変更され得る。
[0152]上記の表では、1に等しいpoc_lsb_not_present_flag[i]は、slice_pic_order_cnt_lsbシンタックス要素が、CVS中のlayer_id_in_nuh[i]に等しいnuh_layer_idをもつIDRピクチャのスライスヘッダ中に存在しないことを指定する。さらに、0に等しいpoc_lsb_not_present_flag[i]は、slice_pic_order_cnt_lsbシンタックス要素が、CVS中のlayer_id_in_nuh[i]に等しいnuh_layer_idをもつIDRピクチャのスライスヘッダ中に存在することもしないこともあることを指定する。存在しないとき、poc_lsb_not_present_flag[i]の値は0に等しいと推論される。
[0153]さらに、1に等しいbase_layer_parameter_set_compatibility_flag[i]は、以下の制約が、layer_id_in_nuh[i]に等しいnuh_layer_idをもつレイヤに適用されることを指定する。0に等しいbase_layer_parameter_set_compatibility_flag[i]は、以下の制約が、layer_id_in_nuh[i]に等しいnuh_layer_idをもつレイヤに適用されることもされないこともあることを指定する。概して、base_layer_parameter_set_compatibility_flag[i]は、エンハンスメントレイヤがベースレイヤのパラメータセット(たとえば、PPSおよびSPS)を使用するかどうかを示し得る。
[0154]第4の例では、本開示の態様によれば、ビデオエンコーダ20およびビデオデコーダ30は、独立レイヤが、レイヤ中のピクチャのスライスヘッダ中の情報を更新する必要なしにHEVC準拠デコーダによって抽出および復号され得るかどうかを示す、各レイヤについての新しいフラグを実装するように構成され得る。そのようなフラグに関連付けられたシグナリングは、以下の表1に記載されているようであり得る。
[0155]上記の表1の例では、1に等しいslice_segment_header_update_not_required_for_extraction_flag[i]は、layer_id_in_nuh[i]に等しいnuh_layer_idをもつレイヤが、入力されたTargetDecLayerIdList中の最下位レイヤである場合にサブビットストリーム抽出プロセスが呼び出されたとき、VPSを参照する各CVS中のlayer_id_in_nuh[i]に等しいnuh_layer_idをもつピクチャのスライスセグメントヘッダが、更新される必要がないことを指定する。さらに、0に等しいslice_segment_header_update_not_required_for_extraction_flag[i]は、layer_id_in_nuh[i]に等しいnuh_layer_idをもつレイヤが、入力されたTargetDecLayerIdList中の最下位レイヤである場合にサブビットストリーム抽出プロセスが呼び出されたとき、CVS中のlayer_id_in_nuh[i]に等しいnuh_layer_idをもつピクチャのスライスヘッダが、更新される必要があることもないこともあることを指定する。存在しないとき、slice_segment_header_update_not_required_for_extraction_flag[i]は0に等しいと推論される。
[0156]図5は、マルチレイヤ・ビットストリームの独立非ベースレイヤのためのPOC値リセッティングを示す別の概念図である。図5の例では、マルチレイヤ・ビットストリームはベースレイヤ(レイヤ0)110と独立非ベースレイヤ(レイヤ1)112とを含む。ベースレイヤ110はIDRピクチャ114とピクチャ116とを含む。非ベースレイヤ112は、ベースレイヤ110のピクチャ114と同じアクセスユニット中にあるピクチャ118と、ベースレイヤ110のピクチャ116と同じアクセスユニット中にあるIDRピクチャ120とを含む。
[0157]ビデオデコーダ30などのビデオデコーダは、特定のビデオコーディング規格、たとえば、MV−HEVCまたはSHVCを使用してベースレイヤ110と非ベースレイヤ112とを復号するように構成され得る。ビデオデコーダ30は、ピクチャ114がIDRピクチャであるので、ベースレイヤ110のピクチャ114のためにPOC値リセッティングを実行するように構成され得る。ビデオデコーダは、ピクチャ114の場合、2に等しいPOC値リセットインデックス(poc_reset_idc)を復号し得る。さらに、POC値のクロスレイヤ整合を維持するために、ビデオデコーダ30はまた、非ベースレイヤ112中に含まれるピクチャ118のPOC値リセッティングを実行し得る。したがって、POC値リセッティングの後に、ベースレイヤ110のピクチャ114と非ベースレイヤ112のピクチャ118の両方は、0に等しいPOC LSB値を有する。
[0158]MV−HEVCおよびSHVCに含まれる、シンタックス要素poc_lsb_not_present_flag[i]は、POC LSB情報が、非ベースレイヤ112などの独立エンハンスメントレイヤのIDRピクチャに属するスライスのスライスセグメントヘッダ中に含まれないことを可能にする。シンタックス要素は、非ベースレイヤ112がマルチレイヤ・ビットストリームから抽出されること、および、レイヤ中のピクチャのスライスセグメントヘッダを変更することなしに、およびNALユニットヘッダ中のnuh_layer_idのみを変更することによって(たとえば、MV−HEVCまたはSHVCのために構成されたデコーダではなく)HEVCデコーダによって復号されること、を可能にすることを助け得る。たとえば、現在、MV−HEVCおよびSHVCのワーキングドラフトに記載されているように、1に等しいpoc_lsb_not_present_flagは、POC LSB値がIDRピクチャのスライスヘッダ中に存在しないことを指定する。0に等しいpoc_lsb_not_present_flagは、POC LSB値がIDRピクチャのスライスヘッダ中に存在することも存在しないこともあることを指定する。
[0159]上述のMV−HEVCおよびSHVC規格に含まれるpoc_lsb_not_present_flag[i]に対する唯一の明示的制限は、レイヤが独立であるときのみ、poc_lsb_not_present_flag[i]の値が非ベースレイヤのために1に設定され得る(たとえば、インターレイヤ予測は、レイヤのビデオデータを予測するために使用されない)ということである。しかしながら、POC LSB値が非ベースレイヤ112などの独立非ベースレイヤのスライスヘッダ中に含まれないことを示すことは、0のPOC LSB値を有しないピクチャについて問題を生じ得る。
[0160]たとえば、図5の例に示されているように、非ベースレイヤ112は、POC LSB値が、HEVCデコーダとの適合性を維持するためにIDRピクチャのスライスヘッダ中に含まれないことがあるように、1に等しく設定されたpoc_lsb_not_present_flag[i]に関連付けられ得る。ピクチャ120は、IDRピクチャのためのPOC値リセッティングが実行される(たとえば、poc_reset_idcが1に等しい)そのIDRピクチャである。したがって、ピクチャ120のスライスのスライスヘッダはPOC LSB値の指示を含まないことがある。ビデオデコーダ30は、ピクチャ120のPOC LSB値が0に等しいと推論(たとえば、自動的に決定)し得る。
[0161]しかしながら、ピクチャ120のPOC LSB値が0に等しいと推論することは、(非ベースレイヤ112のピクチャ120と同じアクセスユニット中にある)ベースレイヤ110のピクチャ116のPOC LSB値が0に等しくないので、マルチレイヤ・ビットストリームがHEVC規格に対して非適合になることを生じ得る。そうではなく、ベースレイヤ110のピクチャ116のPOC LSB値は4である。したがって、ピクチャ116および120を含んでいるアクセスユニットは、ビットストリーム適合性について許可されない、異なるPOC値を有するピクチャを含む。
[0162]本開示の態様によれば、ビデオエンコーダ20およびビデオデコーダ30は、ピクチャが、0に等しいピクチャのためのPOC LSB値を有するときのみ、ピクチャのPOC LSB値のためのPOC値リセットを示すデータをコーディングし得る。たとえば、ビデオエンコーダ20およびビデオデコーダ30は、レイヤ中のIDRピクチャのPOC LSB値が0に等しいと推論されないことがある限り、poc_lsb_not_present_flag[i]の値が(たとえば、POC LSB値がスライスヘッダ中に含まれないことを示す)1に等しくないような制約を適用する。独立非ベースレイヤピクチャのPOC LSB値は、同じアクセスユニットのベースレイヤピクチャのPOC LSB値がIDRピクチャであるとき、または非ベースレイヤピクチャのPOC LSB値が0値化された(たとえば、POC LSB値の通常漸進に従って0に等しくなるようにロールオーバする)とき、0に等しいと推論され得る。
[0163]図5の例では、本開示の態様によれば、ビデオエンコーダ20およびビデオデコーダ30は、IDRピクチャであるピクチャ120のPOC LSB値が0に等しいと推論され得ないので、非ベースレイヤ112のための1に等しいpoc_lsb_not_present_flag[i]をコーディングしないことがある。それとは反対に、ピクチャ120のPOC LSB値は4である。0に等しいpoc_lsb_not_present_flagは、ピクチャ120のスライスヘッダ中に含まれるシンタックス要素などの1つまたは複数のシンタックス要素を変更することなしに、非ベースレイヤ112が、たとえば、HEVC準拠ビデオデコーダを使用して独立して復号されることが可能でないことを示し得る。
[0164]このようにして、本開示の態様によれば、poc_lsb_not_present_flag[i]の値は、マルチレイヤ・ビットストリームが、非0のPOC LSB値をもつ非IDRピクチャであるベースレイヤピクチャと、IDRピクチャである(VPS中のi番目のレイヤに対応する)エンハンスメントレイヤピクチャとを有する1つまたは複数のアクセスユニットを含んでいるとき、poc_lsb_not_present_flag[i]の値が1に等しくないものとするように制約され得る。一例では、以下の制約は、MV−HEVCおよびSHVCのpoc_lsb_not_present_flag[i]のセマンティクスの一部として(たとえば、poc_lsb_not_present_flag[i]のセマンティックへの注釈として)追加され、ここで、追加は、イタリック体を使用して表される。
VPSを参照するすべてのCVS内で、0に等しいnuh_layer_idと0よりも大きいslice_pic_order_cnt_lsbとをもつ非IDRピクチャを含んでおり、および、layer_id_in_nuh[i]に等しいnuh_layer_idをもつIDRピクチャを含んでいる、少なくとも1つのアクセスユニットがあるとき、poc_lsb_not_present_flag[i]が1に等しくないものとするということは、ビットストリーム適合性の要件である。
[0165]別の例では、以下の制約は、MV−HEVCおよびSHVCのpoc_lsb_not_present_flag[i]のセマンティクスの一部として(たとえば、poc_lsb_not_present_flag[i]のセマンティックへの注釈として)追加され、ここで、追加は、イタリック体を使用して表される。
VPSを参照するすべてのCVS内で、0に等しいnuh_layer_idをもつ非IDRピクチャと、layer_id_in_nuh[i]に等しいnuh_layer_idをもつIDRピクチャとを含んでいる少なくとも1つのアクセスユニットがあるとき、poc_lsb_not_present_flag[i]が1に等しくないものとするということは、ビットストリーム適合性の要件である。
[0166]別の例では、以下の制約は、MV−HEVCおよびSHVCのpoc_lsb_not_present_flag[i]のセマンティクスの一部として(たとえば、poc_lsb_not_present_flag[i]のセマンティックへの注釈として)追加され、ここで、追加は、イタリック体を使用して表される。
poc_lsb_not_present_flag[i]が1に等しいとき、VPSを参照するすべてのCVS内で、アクセスユニットが、layer_id_in_nuh[i]に等しいnuh_layer_idをもつIDRピクチャを含んでいるとき、poc_reset_idcがアクセスユニット中のすべてのピクチャについて2に等しいとは限らない限り、slice_pic_order_cnt_lsbの値が、アクセスユニット中のすべてのピクチャについて0に等しくなければならないということは、ビットストリーム適合性の要件である。
[0167]図6は、本開示の技法による、マルチレイヤ・ビットストリームのビデオデータを符号化するための例示的な方法を示すフローチャートである。さらに、図6の方法は、現在ブロックを符号化することを含む。現在ブロックは、現在CU、または現在CUの一部分を備え得る。ビデオエンコーダ20(図1および図2)に関して説明するが、他のデバイスが図6の方法と同様の方法を実行するように構成され得ることを理解されたい。
[0168]この例では、ビデオエンコーダ20は、現在ブロックを含むピクチャのためのPOC値をリセットすべきかどうかを決定し得る(130)。POC値リセッティングが実行されるとき、ビデオエンコーダ20はPOCリセッティングタイプを決定し、ピクチャのPOC値をリセットし得る(132)。本開示の態様によれば、ビデオエンコーダ20は、ピクチャが、0に等しいピクチャのためのPOC LSB値を有するとき、ピクチャのPOC LSB値のためのPOC値リセットを示すデータのみを符号化し得る。
[0169]たとえば、図2に関して上記で説明したように、ビデオエンコーダ20は、poc_reset_idcシンタックス要素を符号化し得る。本開示の態様によれば、ビデオエンコーダ20は、poc_reset_idc値が1つまたは複数の制約に基づいて符号化される様式を制御し得る。たとえば、ビデオエンコーダ20は、コーディングされているピクチャが0に等しいPOC LSB値を有するときのみ、2に等しくなるようにpoc_reset_idcシンタックス要素を符号化し得る。すなわち、コーディングされている特定のレイヤのためのpoc_lsb_not_present_flagが(たとえば、レイヤが独立非ベースレイヤであることを示す)1に等しく、ピクチャのPOC LSB値を示すslice_pic_order_cnt_lsbシンタックス要素が0よりも大きいとき、ビデオエンコーダ20は、poc_reset_idcの値を2に等しく設定しないことがある。
[0170]ビデオエンコーダ20がpoc_reset_idcシンタックス要素を3に等しくなるように符号化するとき、ビデオエンコーダ20はfull_poc_reset_flagシンタックス要素とpoc_lsb_valシンタックス要素とをさらに符号化し得る。本開示の態様によれば、符号化されているレイヤのための(符号化されているレイヤが独立非ベースレイヤであることを示し得る)poc_lsb_not_present_flagが1に等しく、full_poc_reset_flagが1に等しいとき、ビデオエンコーダ20は、poc_lsb_valの値を0に等しく設定し得る。このようにして、ビデオエンコーダ20は、POC値リセッティングが、0に等しいPOC LSB値を有するピクチャのためにのみ実行されることを保証し得、それにより、本明細書で説明するように、参照ピクチャが適切に識別されることを可能にし得る。
[0171]ビデオエンコーダ20は、次いで、参照ピクチャリストを形成し得る(134)。ビデオエンコーダ20は、参照ピクチャリスト中に含まれる参照ピクチャのPOC値をさらにシグナリングする(136)。たとえば、ビデオエンコーダ20は、SPSまたはPPSなどのパラメータセット中で、および/あるいはスライスのためのスライスヘッダ中で、参照ピクチャのためのPOC値(または、POC値の部分、たとえば、POC LSB値)を符号化し得る。いくつかの参照ピクチャ(たとえば、長期参照ピクチャ)はパラメータセット中でシグナリングされ得るが、他の参照ピクチャ(たとえば、短期参照ピクチャ)はスライスヘッダ中でシグナリングされ得る。
[0172]たとえば、現在スライスのブロックのための最良のレートひずみ特性を生じる参照ピクチャのセットを決定するために、参照ピクチャリストを形成するステップと、どのピクチャが参照ピクチャリスト中に含まれるかをシグナリングするステップとが、いくつかの異なる符号化パスを介して複数回実行され得ることを理解されたい。すなわち、ビデオエンコーダ20は、単一のブロックの個々の特性のみに基づくのではなく、現在スライス中のすべてのブロックの特性に基づいて、参照ピクチャリスト中に含まれる参照ピクチャのセットを選択し得る。
[0173]ビデオエンコーダ20は、次いで、現在スライスの現在ブロックを予測し得る(138)。たとえば、ビデオエンコーダ20は、現在ブロックの1つまたは複数の予測ユニット(PU)を計算し得る。より詳細には、動き推定ユニット42は、たとえば、SAD、SSD、MAD、MSD、または他の誤差計算メトリクスに基づいて、参照ブロックとして使用される一致するブロックを識別するために、参照ピクチャリストの参照ピクチャの中で現在ブロックの動き探索を実行し得る。動き推定ユニット42は、動き探索に基づいて現在ブロックのための動きベクトルを生成し得る。ビデオエンコーダ20は、次いで、ブロックのための動き情報を符号化し得(140)、ブロックのための動き情報は、参照ブロックを一緒に識別する、動きベクトルのための動きベクトル差分値と、参照ピクチャリスト識別子と、参照インデックスとを含み得る。
[0174]ビデオエンコーダ20は、次いで、たとえば、変換ユニット(TU)を生成するために現在ブロックのための残差ブロックを計算し得る(142)。残差ブロックを計算するために、ビデオエンコーダ20は、元のコーディングされていないブロックと、現在ブロックのための予測ブロックとの間の差分を計算し得る。ビデオエンコーダ20は、次いで、残差ブロックの係数を変換および量子化し得る(144)。次に、ビデオエンコーダ20は、残差ブロックの量子化された変換係数を走査し得る(146)。走査中に、または走査に続いて、ビデオエンコーダ20はその係数をエントロピー符号化し得る(148)。たとえば、ビデオエンコーダ20は、CAVLCまたはCABACを使用してその係数を符号化し得る。ビデオエンコーダ20は、次いで、ブロックのエントロピーコード化データを出力し得る(150)。
[0175]このようにして、図6の方法は、ビデオエンコーダによって、マルチレイヤ・ビットストリームの独立して復号可能なレイヤのピクチャの少なくとも一部分を符号化することと、ビデオコーダによって、ピクチャが、0に等しいピクチャのためのピクチャ順序カウント(POC)最下位ビット(LSB)値を有するときのみ、ピクチャのPOC LSB値のためのPOC値リセットを示すデータを符号化することと、を含む方法の一例を表す。
[0176]図7は、本開示の技法による、マルチレイヤ・ビットストリームのビデオデータを復号するための例示的な方法を示すフローチャートである。さらに、図7の方法は、現在ブロックを復号することを含む。現在ブロックは、現在CU、または現在CUの一部分を備え得る。ビデオデコーダ30(図1および図3)に関して説明するが、他のデバイスが、図7の方法と同様の方法を実行するように構成され得ることを理解されたい。
[0177]この例では、ビデオデコーダ30は、現在ブロックを含むピクチャのためのPOC値をリセットすべきかどうかを決定し得る(160)。POC値リセッティングが実行されるとき、ビデオデコーダ30は、POCリセッティングを示すデータを復号し得る(162)。いくつかの事例では、ビデオデコーダ30は、POCリセッティングタイプを示すデータを復号し得る。本開示の態様によれば、ビデオデコーダ30は、ピクチャが、0に等しいピクチャのためのPOC LSB値を有するとき、ピクチャのPOC LSB値のためのPOC値リセットを示すデータのみを符号化し得る。
[0178]たとえば、図3に関して上記で説明したように、ビデオデコーダ30はpoc_reset_idcシンタックス要素を復号し得る。本開示の態様によれば、ビデオデコーダ30は、1つまたは複数の制約に基づいてpoc_reset_idcを受信および復号し得る。たとえば、ビデオデコーダ30は、コーディングされているピクチャが0に等しいPOC LSB値を有するときのみ、2の値を有するpoc_reset_idcシンタックス要素を復号し得る。すなわち、コーディングされている特定のレイヤのためのpoc_lsb_not_present_flagが(たとえば、レイヤが独立非ベースレイヤであることを示す)1に等しく、ピクチャのPOC LSB値を示すslice_pic_order_cnt_lsbシンタックス要素が0よりも大きいとき、ビデオデコーダ30は、2に等しいpoc_reset_idcの値を復号しないことがある。
[0179]ビデオデコーダ30が、3に等しいpoc_reset_idcシンタックス要素を復号するとき、ビデオデコーダ30はfull_poc_reset_flagシンタックス要素とpoc_lsb_valシンタックス要素とをさらに復号し得る。本開示の態様によれば、符号化されているレイヤのための(符号化されているレイヤが独立非ベースレイヤであることを示し得る)poc_lsb_not_present_flagが1に等しく、full_poc_reset_flagが1に等しいとき、ビデオデコーダ30は、0に等しいpoc_lsb_valの値を復号し得る。このようにして、ビデオデコーダ30は、POC値リセッティングが、0に等しいPOC LSB値を有するピクチャのためにのみ実行されることを保証し得、それにより、本明細書で説明するように、参照ピクチャが適切に識別されることを可能にし得る。
[0180]ビデオデコーダ30は、次いで、ピクチャのPOC値をリセットし、たとえば、スライスセグメントヘッダ、および/あるいはPPSまたはSPSなどのパラメータセットから参照ピクチャのPOC値を復号する(164)。ビデオデコーダ30は、次いで、参照ピクチャリストを形成する(166)。
[0181]次に、ビデオデコーダ30は現在ブロックのための動き情報を復号する(168)。動き情報は、たとえば、参照ピクチャリスト識別子と、参照ピクチャリストへの参照インデックスとを含み得る。ビデオデコーダ30は、次いで、たとえば、現在ブロックのための予測ブロックを計算するために、イントラ予測モードを使用して、現在ブロックを予測する(170)。より詳細には、ビデオデコーダ30は、どの参照ピクチャリストを使用すべきかを識別するために参照ピクチャリスト識別子を使用し、参照ピクチャリスト中の参照インデックスを識別するために参照インデックスを使用する。ビデオデコーダ30は、次いで、現在ブロックのための動きベクトルを復号し、識別された参照ピクチャ中の参照ブロックを識別する。
[0182]ビデオデコーダ30はまた、現在ブロックに対応する残差ブロックの係数のためのエントロピーコード化データなど、現在ブロックのためのエントロピーコード化データを受信し得る(172)。ビデオデコーダ30は、残差ブロックの係数を再生するために、エントロピーコード化データをエントロピー復号し得る(174)。ビデオデコーダ30は、次いで、量子化された変換係数のブロックを作成するために、再生された係数を逆走査し得る(176)。すなわち、逆走査を使用して、ビデオデコーダ30は1次元ベクトルを2次元行列に変換する。ビデオデコーダ30は、次いで、残差ブロックを生成するためにその係数を逆量子化および逆変換し得る(178)。ビデオデコーダ30は、最終的に、予測ブロックと残差ブロックとを組み合わせることによって現在ブロックを復号し得る(180)。
[0183]このようにして、図7の方法は、ビデオデコーダによって、マルチレイヤ・ビットストリームの独立して復号可能なレイヤのピクチャの少なくとも一部分を復号することと、ビデオデコーダによって、ピクチャが、0に等しいピクチャのためのピクチャ順序カウント(POC)最下位ビット(LSB)値を有するときのみ、ピクチャのPOC LSB値のためのPOC値リセットを示すデータを復号することと、を含む方法の一例を表す。
[0184]上記例に応じて、本明細書で説明した技法のうちのいずれかのいくつかの行為またはイベントが、異なるシーケンスで実行され得、追加、マージ、または完全に除外され得る(たとえば、すべての説明した行為またはイベントが本技法の実施のために必要であるとは限らない)ことを認識されたい。さらに、いくつかの例では、行為またはイベントは、連続的にではなく、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを通して同時に実行され得る。
[0185]1つまたは複数の例では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応する、コンピュータ可読記憶媒体を含み得るか、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、(1)非一時的である有形コンピュータ可読記憶媒体、あるいは(2)信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明した技法の実装のための命令、コードおよび/またはデータ構造を取り出すために1つまたは複数のコンピュータあるいは1つまたは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
[0186]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、あるいは命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびBlu−rayディスク(disc)を含み、ここで、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
[0187]命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、あるいは他の等価な集積回路またはディスクリート論理回路などの1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用する「プロセッサ」という用語は、上記の構造、または本明細書で説明した技法の実装に好適な他の構造のいずれかを指すことがある。さらに、いくつかの態様では、本明細書で説明した機能は、符号化および復号のために構成された専用のハードウェアおよび/またはソフトウェアモジュール内に与えられ得、あるいは複合コーデックに組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素で十分に実装され得る。
[0188]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置で実装され得る。本開示では、開示する技法を実行するように構成されたデバイスの機能的態様を強調するために様々な構成要素、モジュール、またはユニットについて説明したが、それらの構成要素、モジュール、またはユニットを、必ずしも異なるハードウェアユニットによって実現する必要があるとは限らない。むしろ、上記で説明したように、様々なユニットが、好適なソフトウェアおよび/またはファームウェアとともに、上記で説明した1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられるか、または相互動作ハードウェアユニットの集合によって与えられ得る。
[0189]様々な例について説明した。これらおよび他の例は以下の特許請求の範囲内に入る。