[0019]本開示で説明する技法は、概して、スケーラブルビデオコーディング(SHVC、SVC)およびマルチビュー/3Dビデオコーディング(たとえば、マルチビューコーディングプラス深度、MVC+D)に関係する。たとえば、本技法は、高効率ビデオコーディング(HEVC)のスケーラブルビデオコーディング(SHVCと呼ばれることがある、SVC)拡張に関係し、それとともにまたはそれの中で使用され得る。SHVC、SVC拡張では、ビデオ情報の複数のレイヤがあり得る。ビデオ情報の最下位レベルのレイヤは、ベースレイヤ(BL)または参照レイヤ(RL)の機能を果たすことができ、ビデオ情報の最上部のレイヤ(または、最上位レイヤ)は、エンハンスメントレイヤ(EL)の機能を果たすことができる。「エンハンストレイヤ」は「エンハンスメントレイヤ」と呼ばれることがあり、これらの用語は互換的に使用され得る。ベースレイヤは「参照レイヤ」と呼ばれることがあり、これらの用語は互換的に使用され得る。ベースレイヤとトップレイヤとの間のすべてのレイヤは、追加のELおよび/または参照レイヤの機能を果たすことができる。たとえば、所与のレイヤは、ベースレイヤまたは任意の介在エンハンスメントレイヤなどの、所与のレイヤの下の(たとえば、先行する)レイヤにとってELであり得る。さらに、所与のレイヤはまた、所与のレイヤの上の(たとえば、それに続く)1つまたは複数のエンハンスメントレイヤにとってRLの機能を果たすことができる。ベースレイヤ(たとえば、たとえばレイヤ識別子(ID)セットを有する、または「1」と等しい、最下位レイヤ)と、トップレイヤ(または、最上位レイヤ)との間の任意のレイヤは、所与のレイヤよりも上位のレイヤによるレイヤ間予測のための参照として使用することができ、また、所与のレイヤよりも下位のレイヤをレイヤ間予測のための参照として使用することができる。たとえば、所与のレイヤは、所与のレイヤよりも下位のレイヤをレイヤ間予測のための参照として使用して決定され得る。
[0020]簡単のために、BLおよびELのただ2つのレイヤに関して例を提示するが、以下で説明するアイデアおよび実施形態が複数のレイヤを用いる場合にも適用可能であることを十分理解されたい。さらに、説明を簡単にするために、「フレーム」または「ブロック」という用語をしばしば使用する。ただし、これらの用語は限定的なものではない。たとえば、以下で説明する技法は、限定はしないが、ピクセル、ブロック(たとえば、CU、PU、TU、マクロブロックなど)、スライス、フレーム、ピクチャなどを含む様々なビデオユニットのいずれかとともに使用され得る。
ビデオコーディング
[0021]ビデオコーディング規格は、ITU−T H.261、ISO/IEC MPEG−1 Visual、ITU−T H.262またはISO/IEC MPEG−2 Visual、ITU−T H.263、ISO/IEC MPEG−4 Visual、およびそれのスケーラブルビデオコーディング(SVC)拡張と、マルチビュービデオコーディング(MVC)拡張と、マルチビューコーディングプラス深度(MVC+D)と拡張とを含む、(ISO/IEC MPEG−4 AVCとしても知られる)ITU−T H.264を含む。以下、HEVC WD10と呼ばれる、最新のHEVCのドラフト仕様書が、http://phenix.int−evry.fr/jct/doc_end_user/documents/13_Incheon/wg11/JCTVC−M0432−v3.zipから入手可能である。HEVCへのマルチビュー拡張、すなわちMV−HEVCもまた、JCT−3Vによって開発されている。以下、MV−HEVC WD4の最新のワーキングドラフト(WD)が、http://phenix.it−sudparis.eu/jct2/doc_end_user/documents/4_Incheon/wg11/JCT3V−D1004−v4.zipから入手可能である。HEVCへのスケーラブル拡張、すなわちSHVCもまた、JCT−VCによって開発されている。SHVCの最近のワーキングドラフト(WD)であり、以下でワーキングドラフト2と呼ばれるものは、http://phenix.it−sudparis.eu/jct/doc_end_user/documents/13_Incheon/wg11/JCTVC−M1008−v3.zipから入手可能である。一態様によれば、JCT3V−D0196(http://phenix.it−sudparis.eu/jct2/doc_end_user/documents/4_Incheon/wg11/JCT3V−D0196−v1.zip)は、ビデオパラメータセット(VPS)内でビューIDをシグナリングするための方法を含む。一態様によれば、JCTVC−K0125(http://phenix.int−evry.fr/jct/doc_end_user/documents/11_Shanghai/wg11/JCTVC−K0125−v1.zip)は、VPS内でビットレートおよびピクチャレート情報をシグナリングするための方法を含む。
[0022]スケーラブルビデオコーディング(SVC)は、(信号対雑音比(SNR)とも呼ばれる)品質スケーラビリティ、空間スケーラビリティ、および/または時間スケーラビリティを実現するために使用され得る。たとえば、一実施形態では、参照レイヤ(たとえば、ベースレイヤ)は、第1の品質レベルでビデオを表示するのに十分なビデオ情報を含み、エンハンスメントレイヤは、参照レイヤと比べてさらなるビデオ情報を含み、その結果、参照レイヤおよびエンハンスメントレイヤは一緒に、第1の品質レベルよりも高い第2の品質レベル(たとえば、少ない雑音、大きい解像度、より良いフレームレートなど)でビデオを表示するのに十分なビデオ情報を含む。強調レイヤは、ベースレイヤとは異なる空間解像度を有し得る。たとえば、ELとBLとの間の空間アスペクト比は、垂直および水平方向に1.0、1.5、2.0、または他の異なる比率であり得る。言い換えれば、ELの空間アスペクトは、BLの空間アスペクトの1.0倍、1.5倍、または2.0倍に等しい場合がある。いくつかの例では、ELの倍率は、BLの倍率よりも大きい場合がある。たとえば、EL内のピクチャのサイズは、BL内のピクチャのサイズよりも大きい場合がある。このようにして、限定ではないが、ELの空間解像度がBLの空間解像度よりも大きいことは可能であり得る。
[0023]H.264のSVC拡張、またはH.265のSHVC拡張を参照するSVCでは(上述のように)、現在のブロックの予測は、SVCのために提供される異なるレイヤを使用して実行され得る。そのような予測は、レイヤ間予測と呼ばれる場合がある。レイヤ間予測方法は、レイヤ間冗長性を低減するためにSVCにおいて利用され得る。レイヤ間予測のいくつかの例としては、レイヤ間イントラ予測、レイヤ間動き予測、およびレイヤ間残差予測があり得る。レイヤ間イントラ予測は、ベースレイヤ中のコロケートブロックの再構成を使用してエンハンスメントレイヤ中の現在ブロックを予測する。レイヤ間動き予測は、エンハンスメントレイヤにおける動きを予測するために、ベースレイヤの動き情報(動きベクトルを含む)を使用する。レイヤ間残差予測は、ベースレイヤの残差を使用してエンハンスメントレイヤの残差を予測する。
概要
[0024]MV−HEVCおよびSHVCの初期バージョン(たとえば、ワーキングドラフト2)では、レイヤのビューIDは、固定された数のビットを使用してシグナリングされていた。たとえば、SHVCの初期バージョンは、1つのレイヤについていくつのビューが利用可能であるかに関わらず、ビューIDをシグナリングするために10ビットを使用した。しかしながら、ビューIDをシグナリングするために固定されたビット深度(たとえば、固定された数のビット)を使用することは、利用可能なビューの数が、10ビットを使用してシグナリングされ得るビューの数と比較して少ない(たとえば、1〜4ビュー)場合は特に、非効率性につながる場合がある。10ビットの固定されたビット深度を使用することにより、1つのレイヤについて最大1024(210)ビューのシグナリングを可能にすることができるが、多くの場合、1つのレイヤについての合計ビューの数は1024ビューよりもはるかに少ない。
[0025]さらに、MV−HEVCおよびSHVCの初期バージョンでは、レイヤセット、および各レイヤセットのサブレイヤごとに、ビットレート情報とピクチャレート情報とがシグナリングされる。レイヤセットごとに、ビットレート情報とピクチャレート情報(たとえば、bit_rate_pic_rate())とを含むシンタックス構造がシグナリングされる。レイヤセットのサブレイヤごとに、ビットレート情報が存在するかどうかを示すフラグがシグナリングされて、ピクチャレート情報が存在するかどうかを示すフラグがシグナリングされる。このプロセスは、たとえ任意のレイヤセットまたはサブレイヤについて、どのようなビットレート情報もピクチャレート情報もない可能性がある場合でも実行される。たとえば、すべてのレイヤセットおよびサブレイヤについてビットレート情報および/またはピクチャレート情報がないことを示すために、レイヤセットごとに、およびサブレイヤごとに、フラグの値として0がシグナリングされる。これは、たとえば、多くのレイヤセットと、レイヤセットの多くのサブレイヤとがあり得るので、非効率性、ならびに不要なシグナリングおよび/または処理につながる場合がある。
[0026]これらおよび他の問題に対処するために、本開示の技法は、ビューIDのビット深度をシグナリングして、ビット深度を介してシグナリングされるいくつかのビットを使用してビューIDの値をシグナリングすることができる。たとえば、2つのビューだけが使用される場合、ビューIDのビット深度は1ビットであり得、ビューIDの値は1ビットを使用してシグナリングされ得る。3つのビューが使用される場合、ビューIDのビット深度は2ビットでよく、ビューIDの値は2ビットを使用してシグナリングされ得る。ビューIDをシグナリングするために利用されるビット深度は可変であり得る(たとえば、1と16ビットとの間)。このように、ビューIDは、多くの場合、ビューIDの値をシグナリングする際に使用されるビットの数を減少させることによって、より効率的にシグナリングされ得る。シグナリングされるビューの数は、現在の固定された数のビット(たとえば、10ビット)を使用してシグナリングされ得る最大数未満である可能性が高い。
[0027]本技法は、VPS内でビットレート情報および/またはピクチャレート情報をシグナリングすることもできる。たとえば、本技法は、任意のレイヤセットおよび/またはレイヤセットの任意のサブレイヤが、ビットレート情報および/またはピクチャレート情報を有するかどうかを示すことができる。一実施形態では、本技法は、任意のレイヤセットおよび/またはサブレイヤについてのビットレート情報が存在するかどうかを示すグローバルフラグをVPS内でシグナリングして、任意のレイヤセットおよび/またはサブレイヤについてのピクチャレート情報が存在するかどうかを示すグローバルフラグをVPS内でシグナリングすることができる。VPS内にグローバルフラグを含めることによって、ビットレートピクチャレートシンタックス構造は、グローバルフラグが、少なくとも1つのレイヤセットまたはレイヤセットのサブレイヤについてビットレート情報および/またはピクチャレート情報が存在すると示す時だけ、シグナリングおよび/またはアクセスされ得る。グローバルフラグが、どのレイヤセットについてのビットレート情報および/またはピクチャレート情報も存在しないと示す場合、ビットレートピクチャレートシンタックス構造はシグナリングおよび/またはアクセスされる必要はなく、ビットレートピクチャレートシンタックス構造内の個々のレイヤセットの個々のサブレイヤについてのフラグは送信される(たとえば、シグナリングされる)必要はない。さらに、グローバルフラグは、効率的な方法でビットレート情報とピクチャレート情報との別々の処理を可能にすることができる。ビットレート情報についてのグローバルフラグが、少なくとも1つのレイヤセット内にビットレート情報がないと示す場合、任意のサブレイヤについてのビットレート情報についてのそれぞれのフラグはシグナリングおよび/または処理される必要はない。同様に、ピクチャレート情報についてのグローバルフラグが、少なくとも1つのレイヤセットについてのピクチャレート情報がないと示す場合、任意のサブレイヤについてのピクチャレート情報についてのそれぞれのフラグはシグナリングおよび/または処理される必要はない。以前は、ビットレート情報かピクチャレート情報のうちの1つだけをシグナリングすることも可能であったが、各レイヤセットのサブレイヤごとのビットレート情報についての1つのフラグ、および各レイヤセットのサブレイヤごとのピクチャレート情報についての1つのフラグの、複数の個々のフラグのシグナリングおよび処理が必要であった。
[0028]添付の図面を参照しながら新規のシステム、装置、および方法の様々な態様について以下でより十分に説明する。ただし、本開示は、多くの異なる形態で実施され得、本開示全体にわたって提示する任意の特定の構造または機能に限定されるものと解釈すべきではない。むしろ、これらの態様は、本開示が周到で完全になり、本開示の範囲を当業者に十分に伝えるように与えられる。本明細書の教示に基づいて、本開示の範囲は、本発明の他の態様とは無関係に実装されるにせよ、または本発明の他の態様と組み合わされるにせよ、本明細書で開示する新規のシステム、装置、および方法のいかなる態様をもカバーするものであることを、当業者なら諒解されたい。たとえば、本明細書に記載した態様をいくつ使用しても、装置は実装され得、または方法は実施され得る。さらに、本発明の範囲は、本明細書に記載の本発明の様々な態様に加えてまたはそれらの態様以外に、他の構造、機能、または構造および機能を使用して実施されるそのような装置または方法をカバーするものとする。本明細書で開示するどの態様も請求項の1つまたは複数の要素によって実施され得ることを理解されたい。
[0029]本明細書では特定の態様が記載されるが、これらの態様の多くの変形形態および置換は本開示の範囲内に入る。好ましい態様のいくつかの利益および利点が言及されるが、本開示の範囲は、特定の利益、使用、または目的に限定されるものではない。むしろ、本開示の態様は、様々なワイヤレス技術、システム構成、ネットワーク、および伝送プロトコルに広く適用可能であるものとし、それらのいくつかを例として、図および好適な態様についての以下の説明において示す。発明を実施するための形態および図面は、本開示を限定するものではなく説明するものにすぎず、本開示の範囲は添付の特許請求の範囲およびそれの均等物によって定義される。
ビデオコーディングシステム
[0030]図1は、本開示で説明する態様による技法を利用し得る例示的なビデオコーディングシステム10を示すブロック図である。本明細書で使用し説明する「ビデオコーダ」という用語は、総称的にビデオエンコーダとビデオデコーダの両方を指す。本開示では、「ビデオコーディング」または「コーディング」という用語は、ビデオ符号化とビデオ復号とを総称的に指すことがある。
[0031]図1に示すように、ビデオコーディングシステム10は、ソースデバイス12と宛先デバイス14とを含む。ソースデバイス12は符号化ビデオデータを生成する。宛先デバイス14は、ソースデバイス12によって生成された符号化ビデオデータを復号し得る。ソースデバイス12は、コンピュータ可読記憶媒体または他の通信チャネルを含み得る通信チャネル16を介して宛先デバイス14にビデオデータを提供することができる。ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、いわゆる「スマート」パッド、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、車内コンピュータ、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスを含み得る。ソースデバイス12および宛先デバイス14は、ワイヤレス通信のために装備され得る。
[0032]宛先デバイス14は、通信チャネル16を介して復号されるべき符号化ビデオデータを受信し得る。通信チャネル16は、ソースデバイス12から宛先デバイス14に符号化されたビデオデータを移動させることができるタイプの媒体またはデバイスを備え得る。たとえば、通信チャネル16は、ソースデバイス12が、符号化ビデオデータを宛先デバイス14にリアルタイムで直接送信することを可能にするための通信媒体を備え得る。符号化ビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先デバイス14に送信され得る。通信媒体は、無線周波数(RF)スペクトルまたは1つもしくは複数の物理伝送線路など、ワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースネットワークの一部を形成し得る。通信媒体は、ソースデバイス12から宛先デバイス14への通信を可能にするために有用であり得るルータ、スイッチ、基地局、または他の機器を含み得る。
[0033]いくつかの実施形態では、符号化データは、出力インターフェース22から記憶デバイスに出力され得る。そのような例では、チャネル16は、ソースデバイス12によって生成された符号化されたビデオデータを記憶する記憶デバイスまたはコンピュータ可読記憶媒体に対応し得る。たとえば、宛先デバイス14は、ディスクアクセスまたはカードアクセスを介してコンピュータ可読記憶媒体にアクセスし得る。同様に、符号化データは、入力インターフェース28によってコンピュータ可読記憶媒体からアクセスされ得る。コンピュータ可読記憶媒体は、ハードドライブ、ブルーレイ(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、揮発性もしくは不揮発性メモリ、またはビデオデータを記憶するための他のデジタル記憶媒体など、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。コンピュータ可読記憶媒体は、ソースデバイス12によって生成された符号化ビデオを記憶し得るファイルサーバまたは別の中間記憶デバイスに対応し得る。宛先デバイス14は、ストリーミングまたはダウンロードを介してコンピュータ可読記憶媒体から、記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化ビデオデータを記憶し、その符号化ビデオデータを宛先デバイス14に送信することが可能なタイプのサーバであり得る。例示的なファイルサーバは、(たとえば、ウェブサイトのための)ウェブサーバ、FTPサーバ、ネットワーク接続ストレージ(NAS)デバイス、またはローカルディスクドライブを含む。宛先デバイス14は、インターネット接続を含む、標準のデータ接続を介して符号化ビデオデータにアクセスし得る。これは、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに好適であるワイヤレスチャネル(たとえば、Wi−Fi(登録商標)接続)、ワイヤード接続(たとえば、DSL、ケーブルモデムなど)、または両方の組合せを含み得る。コンピュータ可読記憶媒体からの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであり得る。
[0034]本開示の技法は、ワイヤレス適用例または設定に加えて適用例または設定を適用することができる。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、動的適応ストリーミングオーバーHTTP(DASH:dynamic adaptive streaming over HTTP)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されたデジタルビデオ、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例など、様々なマルチメディア適用例をサポートするビデオコーディングに適用され得る。いくつかの実施形態では、システム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオテレフォニーなどの適用例をサポートするために、一方向または双方向のビデオ送信をサポートするように構成され得る。
[0035]図1では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、出力インターフェース22とを含む。宛先デバイス14は、入力インターフェース28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。ソースデバイス12のビデオエンコーダ20は、複数の規格または規格拡張に準拠するビデオデータを含むビットストリームをコーディングするための技法を適用するように構成され得る。他の実施形態では、ソースデバイスおよび宛先デバイスは他の構成要素または構成を含み得る。たとえば、ソースデバイス12は、外部カメラなど、外部ビデオソース18からビデオデータを受信し得る。同様に、宛先デバイス14は、内蔵ディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。
[0036]ソースデバイス12のビデオソース18は、ビデオカメラなどのビデオキャプチャデバイス、あらかじめキャプチャされたビデオを含んでいるビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースを含み得る。ビデオソース18は、ソースビデオとしてのコンピュータグラフィックスベースのデータ、またはライブビデオとアーカイブビデオとコンピュータ生成ビデオとの組合せを生成し得る。いくつかの実施形態では、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、いわゆるカメラフォンまたはビデオフォンを形成し得る。キャプチャされたビデオ、以前にキャプチャされたビデオ、またはコンピュータ生成ビデオは、ビデオエンコーダ20によって符号化され得る。符号化されたビデオ情報は、出力インターフェース22によって、上記で説明したコンピュータ可読記憶媒体を含み得る通信チャネル16に出力され得る。
[0037]コンピュータ可読記憶媒体は、ワイヤレスブロードキャストまたはワイヤードネットワーク送信などの一時媒体、またはハードディスク、フラッシュドライブ、コンパクトディスク、デジタルビデオディスク、ブルーレイディスク、または他のコンピュータ可読媒体などの記憶媒体(たとえば、非一時的記憶媒体)を含み得る。ネットワークサーバ(図示せず)は、(たとえば、ネットワーク送信を介して)ソースデバイス12から符号化されたビデオデータを受信し、宛先デバイス14に符号化されたビデオデータを与え得る。ディスクスタンピング設備など、媒体製造設備のコンピューティングデバイスは、ソースデバイス12から符号化ビデオデータを受信し、その符号化ビデオデータを含んでいるディスクを生成し得る。したがって、通信チャネル16は、様々な形態の1つまたは複数のコンピュータ可読記憶媒体を含むと理解され得る。
[0038]宛先デバイス14の入力インターフェース28は、通信チャネル16から情報を受信し得る。通信チャネル16の情報は、ビデオエンコーダ20によって定義され、ビデオデコーダ30によって使用され得る、ブロックおよび他のコード化ユニット、たとえば、GOPの特性および/または処理を記述するシンタックス要素を含む、シンタックス情報を含み得る。ディスプレイデバイス32は、復号されたビデオデータをユーザに対して表示し、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを含み得る。
[0039]ビデオエンコーダ20およびビデオデコーダ30は、現在開発中の高効率ビデオコーディング(HEVC)規格などのビデオコーディング規格に従って動作し得、HEVCテストモデル(HM)に準拠し得る。代替的に、ビデオエンコーダ20およびビデオデコーダ30は、代替的にMPEG−4,Part 10,Advanced Video Coding(AVC)と呼ばれるITU−T H.264規格など、他のプロプライエタリ規格もしくは業界規格、またはそのような規格の拡張に従って動作し得る。ただし、本開示の技法は、いかなる特定のコーディング規格にも限定されない。ビデオコーディング規格の他の例としては、MPEG−2およびITU−T H.263がある。図1には示されていないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30は、それぞれオーディオエンコーダおよびオーディオデコーダと統合され得、適切なMUX−DEMUXユニット、または他のハードウェアおよびソフトウェアを含んで、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理し得る。適用可能な場合、MUX−DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
[0040]図1は例にすぎず、本開示の技法は、符号化デバイスと復号デバイスとの間の任意のデータ通信を必ずしも含むとは限らないビデオコーディング設定(たとえば、ビデオ符号化、またはビデオ復号)に適用することができる。他の例では、データは、ローカルメモリから取り出されてもよく、ネットワークを介してストリーミングされてもよく、または同様の方法で取得されてもよい。符号化デバイスがデータを符号化してメモリに記憶してもよく、および/または復号デバイスがメモリからデータを取り出して復号してもよい。多くの例では、符号化および復号は、相互に通信しないデバイスによって実行されるが、単にデータをメモリに符号化して、および/またはメモリからデータを取り出して復号する。
[0041]ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアまたはそれらの任意の組合せなど、様々な好適なエンコーダ回路のいずれかとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、デバイスは、非一時的コンピュータ可読媒体にソフトウェアの命令を記憶し、1つまたは複数のプロセッサを使用してその命令をハードウェアで実行して、本開示の技法を実行し得る。ビデオエンコーダ20およびビデオデコーダ30の各々は1つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも、それぞれのデバイスにおいて複合エンコーダ/デコーダ(コーデック)の一部として統合され得る。ビデオエンコーダ20および/またはビデオデコーダ30を含むデバイスは、集積回路、マイクロプロセッサ、および/またはセルラー電話などのワイヤレス通信デバイスを備え得る。
[0042]JCT−VCは、HEVC規格の開発に取り組んでいる。HEVC規格化の取り組みは、HEVCテストモデル(HM)と呼ばれるビデオコーディングデバイスの発展的モデルに基づく。HMは、たとえば、ITU−T H.264/AVCに従う既存のデバイスに対してビデオコーディングデバイスのいくつかの追加の能力を仮定する。たとえば、H.264は9つのイントラ予測符号化モードを提供するが、HMは33個ものイントラ予測符号化モードを提供し得る。
[0043]概して、HMの作業モデルは、ビデオフレームまたはピクチャが、ルーマサンプルとクロマサンプルの両方を含む一連のツリーブロックまたは最大コーディングユニット(LCU:largest coding unit)に分割され得ることを記載している。ビットストリーム内のシンタックスデータが、ピクセルの数に関して最大コーディングユニットであるLCUのサイズを定義し得る。スライスは、コーディング順序でいくつかの連続するツリーブロックを含む。ビデオフレームまたはピクチャは、1つまたは複数のスライスに区分され得る。各ツリーブロックは、4分木に従ってコーディングユニット(CU)に分割され得る。概して、4分木データ構造はCUごとに1つのノードを含み、ルートノードはツリーブロックに対応する。CUが4つのサブCUに分割された場合、CUに対応するノードは4つのリーフノードを含み、リーフノードの各々はサブCUのうちの1つに対応する。
[0044]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とも呼ぶ。
[0045]CUは、CUがサイズの差異を有さないことを除いて、H.264規格のマクロブロックと同様の目的を有する。たとえば、ツリーブロックは、4つの子ノード(サブCUとも呼ばれる)に分割され得、各子ノードは、今度は親ノードとなり、別の4つの子ノードに分割され得る。4分木のリーフノードと呼ばれる、最後の分割されていない子ノードは、リーフCUとも呼ばれるコーディングノードを備える。コード化ビットストリームに関連するシンタックスデータは、最大CU深さと呼ばれる、ツリーブロックが分割され得る最大回数を定義し得、また、コーディングノードの最小サイズを定義し得る。それに応じて、ビットストリームは最小コーディングユニット(SCU:smallest coding unit)をも定義し得る。本開示では、HEVCのコンテキストにおけるCU、PU、もしくはTU、または他の規格のコンテキストにおける同様のデータ構造(たとえば、H.264/AVCにおけるマクロブロックおよびそれのサブブロック)のいずれかを指すために「ブロック」という用語を使用する。
[0046]CUは、コーディングノードと、コーディングノードに関連する予測ユニット(PU:prediction unit)および変換ユニット(TU:transform unit)とを含む。CUのサイズは、コーディングノードのサイズに対応し、ならびに形状が方形でなければならない。CUのサイズは、8×8ピクセルから最大64×64以上のピクセルを有するツリーブロックのサイズまでに及び得る。各CUは、1つまたは複数のPUと、1つまたは複数のTUとを含み得る。CUに関連するシンタックスデータは、たとえば、CUを1つまたは複数のPUに区分することを記述し得る。区分モードは、CUが、スキップモード符号化もしくはダイレクトモード符号化されるか、イントラ予測モード符号化されるか、またはインター予測モード符号化されるかによって異なり得る。PUは、形状が非方形になるように区分され得る。CUに関連するシンタックスデータは、たとえば、4分木に従って、CUを1つまたは複数のTUに区分することも記述し得る。TUは、形状が方形または非方形(たとえば、矩形)であり得る。
[0047]HEVC規格は、CUごとに異なり得るTUに従う変換を可能にする。TUは、一般に、区分されたLCUについて定義された所与のCU内のPUのサイズに基づいてサイズ決定されるが、常にそうであるとは限らない。TUは、一般にPUと同じサイズであるかまたはPUよりも小さい。いくつかの例では、CUに対応する残差サンプルは、「残差クワッドツリー」(RQT:residual quad tree)として知られるクワッドツリー構造を使用して、より小さいユニットに再分割され得る。RQTのリーフノードは変換ユニット(TU)と呼ばれることがある。TUに関連するピクセル差分値は、量子化され得る変換係数を生成するために変換され得る。
[0048]リーフCUは、1つまたは複数の予測ユニット(PU)を含み得る。概して、PUは、対応するCUの全部または一部分に対応する空間的エリアを表し、そのPUの参照サンプルを取り出すためのデータを含み得る。その上、PUは、予測に関係するデータを含む。たとえば、PUがイントラモード符号化されるとき、PUについてのデータは、PUに対応するTUについてのイントラ予測モードを記述するデータを含み得る残差4分木(RQT)中に含まれ得る。別の例として、PUがインターモード符号化されるとき、PUは、PUのための1つまたは複数の動きベクトルを定義するデータを含み得る。PUの動きベクトルを定義するデータは、たとえば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルの解像度(たとえば、1/4ピクセル精度または1/8ピクセル精度)、動きベクトルが指す参照ピクチャ、および/または動きベクトルの参照ピクチャリスト(たとえば、リスト0、リスト1、またはリストC)を記述し得る。
[0049]1つまたは複数のPUを有するリーフCUはまた、1つまたは複数の変換ユニット(TU)を含み得る。変換ユニットは、上記で説明したように、(TU4分木構造とも呼ばれる)RQTを使用して指定され得る。たとえば、分割フラグは、リーフCUが4つの変換ユニットに分割されるかどうかを示し得る。次いで、各変換ユニットは、さらに、さらなるサブTUに分割され得る。TUがさらに分割されないとき、そのTUはリーフTUと呼ばれることがある。概して、イントラコーディングの場合、リーフCUに属するすべてのリーフTUは同じイントラ予測モードを共有する。すなわち、概して、リーフCUのすべてのTUの予測値を計算するために同じイントラ予測モードが適用される。イントラコーディングの場合、ビデオエンコーダ20は、イントラ予測モードを使用して各リーフ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は、変換、たとえば、残差ビデオデータへの離散サイン変換(DST)、離散コサイン変換(DCT)、整数変換、ウェーブレット変換、または概念的に同様の変換の適用後に、変換領域において係数を備え得る。残差データは、符号化されていないピクチャのピクセルと、PUに対応する予測値との間のピクセル差分に対応し得る。ビデオエンコーダ20は、CUのための残差データを含むTUを形成し、次いで、TUを変換して、CUの変換係数を生成し得る。
[0055]変換係数を生成するための任意の変換の後に、ビデオエンコーダ20は、変換係数の量子化を実行し得る。量子化は、その最も広い通常の意味を有することが意図された広義の用語である。一実施形態では、量子化は、係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を行うプロセスを指す。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。たとえば、量子化中にnビット値がmビット値に切り捨てられ得、ただし、nはmよりも大きい。
[0056]量子化の後に、ビデオエンコーダは、変換係数を走査して、量子化変換係数を含む2次元行列から1次元ベクトルを生成し得る。走査は、より高いエネルギー(したがってより低い周波数)の係数をアレイの前方に配置し、より低いエネルギー(したがってより高い周波数)の係数をアレイの後方に配置するように設計され得る。いくつかの例では、ビデオエンコーダ20は、エントロピー符号化され得るシリアル化ベクトルを生成するために、量子化変換係数を走査するためにあらかじめ定義された走査順序を利用し得る。他の例では、ビデオエンコーダ20は適応型走査を実行し得る。量子化変換係数を走査して1次元ベクトルを形成した後に、ビデオエンコーダ20は、たとえば、コンテキスト適応型可変長コーディング(CAVLC:context-adaptive variable length coding)、コンテキスト適応型バイナリ算術コーディング(CABAC:context-adaptive binary arithmetic coding)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC:syntax-based context-adaptive binary arithmetic coding)、確率間隔区分エントロピー(PIPE:Probability Interval Partitioning Entropy)コーディング、または別のエントロピー符号化方法に従って1次元ベクトルをエントロピー符号化し得る。ビデオエンコーダ20はまた、ビデオデータを復号する際にビデオデコーダ30が使用するための符号化ビデオデータに関連するシンタックス要素をエントロピー符号化し得る。
[0057]CABACを実行するために、ビデオエンコーダ20は、送信されるべきシンボルに、コンテキストモデル内のコンテキストを割り当て得る。コンテキストは、たとえば、シンボルの隣接値が非0であるか否かに関係し得る。CAVLCを実行するために、ビデオエンコーダ20は、送信されるべきシンボルのための可変長コードを選択し得る。VLCにおけるコードワードは、比較的短いコードが優勢シンボルに対応し、より長いコードが劣勢シンボルに対応するように構成され得る。このようにして、VLCの使用は、たとえば、送信されるべき各シンボルのために等長コードワードを使用するよりも、ビット節約を達成し得る。確率決定は、シンボルに割り当てられたコンテキストに基づき得る。
[0058]ビデオエンコーダ20は、さらに、ブロックベースのシンタックスデータ、フレームベースのシンタックスデータ、およびGOPベースのシンタックスデータなどのシンタックスデータを、たとえば、フレームヘッダ、ブロックヘッダ、スライスヘッダ、またはGOPヘッダ中でビデオデコーダ30に送り得る。GOPシンタックスデータは、それぞれのGOP中のいくつかのフレームを記述し得、フレームシンタックスデータは、対応するフレームを符号化するために使用される符号化/予測モードを示し得る。
ビデオエンコーダ
[0059]図2Aは、本開示で説明する態様による技法を実装し得るビデオエンコーダの例を示すブロック図である。ビデオエンコーダ20は、HEVCのような、ビデオビットストリームの単一のレイヤを処理するように構成され得る。さらに、ビデオエンコーダ20は、これに限定されないが、VPS内のビューIDビット深度のシグナリング、ビットレート情報および/またはピクチャレート情報のシグナリングの方法、ならびに上記および以下で図4〜図6に関してより詳細に説明する関連プロセスを含む、本開示の技法のいずれかまたはすべてを実行するように構成され得る。一例として、レイヤ間予測ユニット66(与えられる場合)は、本開示で説明する技法のいずれかまたはすべてを実行するように構成され得る。ただし、本開示の態様はそのように限定されない。いくつかの例では、本開示で説明する技法は、ビデオエンコーダ20の様々な構成要素間で共有され得る。いくつかの例では、さらに、または代替で、プロセッサ(図示せず)は、本開示において説明する技法のいずれかまたはすべてを実行するように構成され得る。
[0060]説明のために、本開示は、HEVCコーディングの文脈でビデオエンコーダ20を説明する。しかしながら、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。図2Aのエンコーダ20は、コーデックの単一のレイヤを示している。しかしながら、図2Bを参照してさらに説明するように、ビデオエンコーダ20のうちのいくつかまたはすべては、マルチレイヤコーデックによる処理のために複製され得る。
[0061]ビデオエンコーダ20は、ビデオスライス内のビデオブロックの(イントラコーディング、レイヤコーディング、またはレイヤ間コーディングといつか呼ばれる)イントラ予測、インター予測、およびレイヤ間予測を実行し得る。イントラコーディングは、所与のビデオフレームまたはピクチャ内のビデオの空間的冗長性を低減または除去するために空間的予測に依拠する。インターコーディングは、ビデオシーケンスの隣接フレームまたはピクチャ内のビデオの時間的冗長性を低減または除去するために時間的予測に依拠する。レイヤ間コーディングは、同じビデオコーディングシーケンス内の異なるレイヤ内のビデオに基づく予測に依拠する。イントラモード(Iモード(登録商標))は、いくつかの空間ベースのコーディングモードのいずれかを指し得る。単方向予測(Pモード)または双方向予測(Bモード)などのインターモードは、いくつかの時間ベースのコーディングモードのいずれかを指し得る。
[0062]図2Aに示すように、ビデオエンコーダ20は、符号化されるべきビデオフレーム内の現在のビデオブロックを受信する。図2Aの例では、ビデオエンコーダ20は、モード選択ユニット40と、参照フレームメモリ64と、加算器50と、変換処理ユニット52と、量子化ユニット54と、エントロピー符号化ユニット56とを含む。モード選択ユニット40は、今度は、動き補償ユニット44と、動き推定ユニット42と、イントラ予測ユニット46と、レイヤ間予測ユニット66と、パーティションユニット48とを含む。参照フレームメモリ64は、復号されたピクチャバッファを含み得る。復号されたピクチャバッファは、その通常の意味を有する、およびいくつかの実施形態では、参照フレームのビデオコーデックが管理するデータ構造を指す、広義の用語である。
[0063]ビデオブロック再構成のために、ビデオエンコーダ20はまた、逆量子化ユニット58と、逆変換ユニット60と、加算器62とを含む。再構成されたビデオからブロッキネスアーティファクトを除去するためにブロック境界をフィルタ処理するデブロッキングフィルタ(図2Aに図示せず)も含まれ得る。所望される場合、デブロッキングフィルタは、一般に、加算器62の出力をフィルタ処理することになる。また、デブロッキングフィルタに加えて追加のフィルタ(ループ内またはループ後)が使用され得る。そのようなフィルタは、簡潔のために示されていないが、所望される場合、(ループ内フィルタとして)加算器50の出力をフィルタ処理し得る。
[0064]符号化プロセス中に、ビデオエンコーダ20は、コーディングされるべきビデオフレームまたはスライスを受信する。フレームまたはスライスは複数のビデオブロックに分割され得る。動き推定ユニット42および動き補償ユニット44は、時間的予測を行うために、1つまたは複数の参照フレーム中の1つまたは複数のブロックに対して、受信されたビデオブロックのインター予測コーディングを実行する。イントラ予測ユニット46は、代替的に、空間的予測を行うために、コーディングされるべきブロックと同じフレームまたはスライス中の1つまたは複数の隣接ブロックに対して受信されたビデオブロックのイントラ予測コーディングを実行し得る。ビデオエンコーダ20は、たとえば、ビデオデータのブロックごとに適切なコーディングモードを選択するために、複数のコーディングパスを実行し得る。
[0065]その上、パーティションユニット48は、前のコーディングパスにおける前の区分方式の評価に基づいて、ビデオデータのブロックをサブブロックに区分し得る。たとえば、パーティションユニット48は、初めにフレームまたはスライスをLCUに区分し、レートひずみ分析(たとえば、レートひずみ最適化など)に基づいてLCUの各々をサブCUに区分し得る。モード選択ユニット40は、LCUをサブCUに区分することを示す4分木データ構造をさらに生成し得る。4分木のリーフノードCUは、1つまたは複数のPUおよび1つまたは複数のTUを含み得る。
[0066]モード選択ユニット40は、たとえば、誤差結果に基づいてコーディングモード、すなわち、イントラ予測モード、インター予測モード、またはレイヤ間予測モードのうちの1つを選択し、残差ブロックデータを生成するために、得られたイントラコード化ブロック、インターコード化ブロック、またはレイヤ間コード化ブロックを加算器50に与え、参照フレームとして使用するための符号化ブロックを再構成するために、得られたイントラコード化ブロック、インターコード化ブロック、またはレイヤ間コード化ブロックを加算器62に与え得る。モード選択ユニット40はまた、動きベクトル、イントラモードインジケータ、パーティション情報、および他のそのようなシンタックス情報などのシンタックス要素をエントロピー符号化ユニット56に与える。
[0067]動き推定ユニット42および動き補償ユニット44は、高度に統合され得るが、概念的な目的のために別々に示してある。動き推定ユニット42によって実行される動き推定は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、現在のフレーム(または他のコード化ユニット)内でコーディングされている現在のブロックに対する参照フレーム(または他のコード化ユニット)内の予測ブロックに対する現在のビデオフレームまたはピクチャ内のビデオブロックのPUの変位を示し得る。予測ブロックは、絶対値差分和(SAD:sum of absolute difference)、2乗差分和(SSD:sum of square difference)、または他の差分メトリックによって決定され得るピクセル差分に関して、コーディングされるべきブロックにぴったり一致することがわかるブロックである。いくつかの例では、ビデオエンコーダ20は、参照フレームメモリ64に記憶された参照ピクチャのサブ整数ピクセル位置の値を計算し得る。たとえば、ビデオエンコーダ20は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置、または他の分数ピクセル位置の値を補間し得る。したがって、動き推定ユニット42は、フルピクセル位置と分数ピクセル位置とに対する動き探索を実行し、分数ピクセル精度で動きベクトルを出力し得る。
[0068]動き推定ユニット42は、PUの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコード化スライスにおけるビデオブロックのPUのための動きベクトルを計算する。参照ピクチャは、第1の参照ピクチャリスト(リスト0)または第2の参照ピクチャリスト(リスト1)から選択され得、それらの参照ピクチャリストの各々は、参照フレームメモリ64に記憶された1つまたは複数の参照ピクチャを識別する。動き推定ユニット42は、計算された動きベクトルをエントロピー符号化ユニット56と動き補償ユニット44とに送る。
[0069]動き補償ユニット44によって実行される動き補償は、動き推定ユニット42によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成することに関与し得る。いくつかの例では、動き推定ユニット42および動き補償ユニット44は機能的に統合され得る。現在のビデオブロックのPUについての動きベクトルを受信すると、動き補償ユニット44は、動きベクトルが参照ピクチャリストのうちの1つにおいて指す予測ブロックの位置を特定し得る。加算器50は、以下で説明するように、コーディングされている現在のビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成することによって、残差ビデオブロックを形成する。いくつかの実施形態では、動き推定ユニット42はルーマ成分に対して動き推定を実行し得、動き補償ユニット44は、クロマ成分とルーマ成分の両方のためにルーマ成分に基づいて計算された動きベクトルを使用し得る。モード選択ユニット40は、ビデオスライスのビデオブロックを復号する際にビデオデコーダ30が使用するためのビデオブロックとビデオスライスとに関連するシンタックス要素を生成し得る。
[0070]イントラ予測ユニット46は、上記で説明したように、動き推定ユニット42および動き補償ユニット44によって実行されるインター予測の代替として、現在ブロックをイントラ予測または計算し得る。特に、イントラ予測ユニット46は、現在のブロックを符号化するために使用すべきイントラ予測モードを決定し得る。いくつかの例では、イントラ予測ユニット46は、たとえば、別個の符号化パス中に、様々なイントラ予測モードを使用して現在のブロックを符号化し得、イントラ予測ユニット46(または、いくつかの例では、モード選択ユニット40)は、テストされたモードから使用するのに適切なイントラ予測モードを選択し得る。
[0071]たとえば、イントラ予測ユニット46は、様々なテストされたイントラ予測モードのためのレートひずみ分析を使用してレートひずみ値を計算し、テストされたモードの中で最良のレートひずみ特性を有するイントラ予測モードを選択し得る。レートひずみ分析は、概して、符号化ブロックと、符号化ブロックを生成するために符号化された元の符号化されていないブロックとの間のひずみ(または誤差)の量、ならびに符号化ブロックを生成するために使用されるビットレート(すなわち、ビット数)を決定する。イントラ予測ユニット46は、どのイントラ予測モードがブロックについて最良のレートひずみ値を呈するかを決定するために、様々な符号化ブロックのひずみおよびレートから比率を計算し得る。
[0072]ブロックのためのイントラ予測モードを選択した後に、イントラ予測ユニット46は、ブロックのための選択されたイントラ予測モードを示す情報をエントロピー符号化ユニット56に提供し得る。エントロピー符号化ユニット56は、選択されたイントラ予測モードを示す情報を符号化し得る。ビデオエンコーダ20は、送信ビットストリーム中に、複数のイントラ予測モードインデックステーブルおよび複数の変更されたイントラ予測モードインデックステーブル(コードワードマッピングテーブルとも呼ばれる)と、様々なブロックの符号化コンテキストの定義と、コンテキストの各々について使用すべき、最確イントラ予測モード、イントラ予測モードインデックステーブル、および変更されたイントラ予測モードインデックステーブルの指示とを含み得る構成データを含み得る。
[0073]ビデオエンコーダ20はレイヤ間予測ユニット66を含み得る。レイヤ間予測ユニット66は、SVCにおいて利用可能である1つまたは複数の異なるレイヤ(たとえば、ベースレイヤまたは参照レイヤ)を使用して現在ブロック(たとえば、EL中の現在ブロック)を予測するように構成される。そのような予測はレイヤ間予測と呼ばれることがある。レイヤ間予測ユニット66は、レイヤ間冗長性を低減するために予測方法を利用し、それによって、コーディング効率を改善し、計算リソース要件を低減する。レイヤ間予測のいくつかの例としては、レイヤ間イントラ予測、レイヤ間動き予測、およびレイヤ間残差予測がある。レイヤ間イントラ予測は、ベースレイヤ中のコロケートブロックの再構成を使用してエンハンスメントレイヤ中の現在ブロックを予測する。レイヤ間動き予測は、ベースレイヤの動き情報を使用してエンハンスメントレイヤ中の動作を予測する。レイヤ間残差予測は、ベースレイヤの残差を使用してエンハンスメントレイヤの残差を予測する。ベースレイヤとエンハンスメントレイヤとが異なる空間解像度を有する場合、空間動きベクトルスケーリングおよび/または時間的スケーリング機能を使用するレイヤ間位置マッピングは、以下でより詳細に説明するように、レイヤ間予測ユニット66によって実行され得る。
[0074]ビデオエンコーダ20は、コーディングされている元のビデオブロックから、モード選択ユニット40からの予測データを減算することによって残差ビデオブロックを形成する。加算器50は、この減算演算を実行する1つまたは複数の構成要素を表す。変換処理ユニット52は、離散コサイン変換(DCT)または概念的に同様の変換などの変換を残差ブロックに適用し、残差変換係数値を備えるビデオブロックを生成する。変換処理ユニット52は、DCTと概念的に同様である他の変換を実行し得る。たとえば、離散サイン変換(DST)、ウェーブレット変換、整数変換、サブバンド変換または他のタイプの変換も使用され得る。
[0075]変換処理ユニット52は、変換を残差ブロックに適用し、残差変換係数のブロックを生成し得る。変換は、残差情報をピクセル値領域から周波数領域などの変換領域に変換し得る。変換処理ユニット52は、得られた変換係数を量子化ユニット54に送り得る。量子化ユニット54は、ビットレートをさらに低減するために変換係数を量子化する。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって変更され得る。いくつかの例では、量子化ユニット54は、次いで、量子化変換係数を含む行列の走査を実行し得る。代替的に、エントロピー符号化ユニット56が走査を実行し得る。
[0076]量子化の後、エントロピー符号化ユニット56は、量子化変換係数をエントロピー符号化する。たとえば、エントロピー符号化ユニット56は、コンテキスト適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)、確率間隔区分エントロピー(PIPE)コーディングまたは別のエントロピーコーディング技法を実行し得る。コンテキストベースのエントロピーコーディングの場合、コンテキストは、隣接するブロックに基づき得る。エントロピーコーディングユニット56によるエントロピーコーディングの後、符号化されたビットストリームは、別のデバイス(たとえば、ビデオデコーダ30)に送信されるか、または後で送信するかまたは取り出すためにアーカイブされ得る。
[0077]逆量子化ユニット58および逆変換ユニット60は、それぞれ逆量子化および逆変換を適用して、たとえば参照ブロックとして後で使用するために、ピクセル領域中で残差ブロックを再構成する。動き補償ユニット44は、残差ブロックを参照フレームメモリ64のフレームのうちの1つの予測ブロックに加算することによって参照ブロックを計算し得る。動き補償ユニット44はまた、再構成された残差ブロックに1つまたは複数の補間フィルタを適用して、動き推定において使用するサブ整数ピクセル値を計算し得る。加算器62は、再構成された残差ブロックを、動き補償ユニット44によって生成された動き補償予測ブロックに加算して、参照フレームメモリ64に記憶するための再構成されたビデオブロックを生成する。再構成されたビデオブロックは、後続のビデオフレーム中のブロックをインターコーディングするために動き推定ユニット42および動き補償ユニット44によって参照ブロックとして使用され得る。
マルチレイヤビデオエンコーダ
[0078]図2Bは、本開示で説明する態様に従って技法を実装し得るマルチレイヤビデオエンコーダ21の例を示すブロック図である。ビデオエンコーダ21は、SHVCおよびマルチビューコーディングのような、マルチレイヤビデオフレームを処理するように構成され得る。さらに、ビデオエンコーダ21は、本開示の技法のいずれかまたはすべてを実行するように構成され得る。
[0079]ビデオエンコーダ21は、ビデオエンコーダ20Aとビデオエンコーダ20Bとを含み、それらの各々は、図2Aのビデオエンコーダ20として構成され得、ビデオエンコーダ20に関して上記で説明した機能を実行し得る。さらに、参照番号の再利用によって示されるように、ビデオエンコーダ20Aと20Bとは、ビデオエンコーダ20としてシステムとサブシステムとのうちの少なくともいくつかを含み得る。ビデオエンコーダ21は、2つのビデオエンコーダ20Aと20Bとを含むものとして示されているが、ビデオエンコーダ21はそのように限定されず、任意の数のビデオエンコーダ20レイヤを含み得る。いくつかの実施形態では、ビデオエンコーダ21は、アクセスユニット内のピクチャまたはフレームごとにビデオエンコーダ20を含み得る。たとえば、5個のピクチャを含むアクセスユニットは、5個のエンコーダレイヤを含むビデオエンコーダによって処理されてもよく、符号化されてもよい。いくつかの実施形態では、ビデオエンコーダ21は、アクセスユニット内のフレームよりも多くのエンコーダレイヤを含み得る。いくつかのそのようなケースでは、ビデオエンコーダレイヤのうちのいくつかは、いくつかのアクセスユニットを処理する際に非アクティブであり得る。
[0080]ビデオエンコーダ20Aと20Bとに加えて、ビデオエンコーダ21はリサンプリングユニット90を含み得る。リサンプリングユニット90は、たとえばエンハンスメントレイヤを作成するために、場合によっては受信されたビデオフレームのベースレイヤをアップサンプリングし得る。リサンプリングユニット90は、受信されたフレームのベースレイヤに関連付けられる特定の情報をアップサンプリングし得るが、他の情報はアップサンプリングできない。たとえば、リサンプリングユニット90は、ベースレイヤの空間サイズまたはピクセル数をアップサンプリングし得るが、スライスの数またはピクチャオーダーカウントは一定のままでよい。場合によっては、リサンプリングユニット90は、受信されたビデオを処理しない場合があり、および/または任意であり得る。たとえば、場合によっては、モード選択ユニット40がアップサンプリングを実行し得る。いくつかの実施形態では、リサンプリングユニット90は、スライス境界ルールのセットおよび/またはラスタ走査ルールを順守するために、レイヤをアップサンプリングして、1つまたは複数のスライスを再編成、再定義、修正、または調整するように構成される。主に、ベースレイヤ、またはアクセスユニット内の下位層のアップサンプリングとして説明したが、場合によっては、リサンプリングユニット90はレイヤをダウンサンプリングし得る。たとえば、ビデオのストリーミング中に帯域幅が低減されている場合、フレームはアップサンプリングではなくダウンサンプリングされ得る。リサンプリングユニット90は、トリミングおよび/またはパディング操作も実行するようにさらに構成され得る。
[0081]リサンプリングユニット90は、下位層エンコーダ(たとえば、ビデオエンコーダ20A)の復号されたピクチャバッファ114からピクチャまたはフレーム(あるいは、ピクチャに関連付けられるピクチャ情報)を受信して、ピクチャ(または、受信されたピクチャ情報)をアップサンプリングするように構成され得る。次いで、このアップサンプリングされたピクチャは、下位層エンコーダと同じアクセスユニット内のピクチャを符号化するように構成された上位層エンコーダ(たとえば、ビデオエンコーダ20B)のモード選択ユニット40に提供され得る。場合によっては、上位層エンコーダは、下位層エンコーダから除去された1つのレイヤである。他の場合では、図2Bのレイヤ0ビデオエンコーダとレイヤ1エンコーダとの間に、1つまたは複数の上位層エンコーダがあり得る。
[0082]場合によっては、リサンプリングユニット90は、省略または迂回され得る。そのような場合、ビデオエンコーダ20Aの復号されたピクチャバッファ64からのピクチャは、直接、または少なくともリサンプリングユニット90、ビデオエンコーダ20Bのモード選択ユニット40に提供されることなしに提供され得る。たとえば、ビデオエンコーダ20Bに提供されたビデオデータ、およびビデオエンコーダ20Aの復号されたピクチャバッファ64からの参照ピクチャが、同じサイズまたは解像度である場合、参照ピクチャは、任意のリサンプリングなしにビデオエンコーダ20Bに提供され得る。
[0083]いくつかの実施形態では、ビデオエンコーダ21は、ビデオデータがビデオエンコーダ20Aに提供される前に、ダウンサンプリングユニット94を用いて下位層エンコーダに提供されるべきビデオデータをダウンサンプリングする。あるいは、ダウンサンプリングユニット94は、ビデオデータのアップサンプリングまたはダウンサンプリングが可能なリサンプリングユニット90であり得る。他の実施形態では、ダウンサンプリングユニット94は省略され得る。
[0084]図2Bに示されるように、ビデオエンコーダ21は、マルチプレクサ98、すなわちmuxをさらに含み得る。mux98は、組み合わされたビットストリームをビデオエンコーダ21から出力することができる。組み合わされたビットストリームは、ビデオエンコーダ20Aと20Bとの各々からビットストリームを取って、所与の時間にどのビットストリームが出力されるかをオルタネート(alternate)することによって作成され得る。場合によっては、2つ(または、2つ以上のビデオエンコーダレイヤの場合は、より多数)のビットストリームからのビットは、一度に1ビットが交互にオルタネートされるが、多くの場合、ビットストリームは異なるように組み合わせられる。たとえば、出力ビットストリームは、選択されたビットストリームを一度に1ブロックをオルタネートすることによって作成され得る。別の例では、出力ビットストリームは、ビデオエンコーダ20Aと20Bとの各々から非1:1比のブロックを出力することによって作成され得る。たとえば、2つのブロックは、ビデオエンコーダ20Aから出力されたブロックごとにビデオエンコーダ20Bから出力され得る。いくつかの実施形態では、mux98からの出力ストリームは事前にプログラムされ得る。他の実施形態では、mux98は、ソースデバイス12上のプロセッサからなどの、ビデオエンコーダ21の外部のシステムから受信された制御信号に基づいて、ビデオエンコーダ20A、20Bからのビットストリームを組み合わせることができる。制御信号は、ビデオソース18からのビデオの解像度またはビットレートに基づいて、チャネル16の帯域幅に基づいて、ユーザに関連付けられるサブスクリプション(たとえば、有料購読対、無料購読)に基づいて、あるいは、ビデオエンコーダ21から所望される解像度出力を決定するための他の任意の要因に基づいて生成され得る。
ビデオデコーダ
[0085]図3Aは、本開示で説明する態様による技法を実装し得るビデオデコーダの例を示すブロック図である。ビデオデコーダ30は、HEVCのような、ビデオビットストリームの単一のレイヤを処理するように構成され得る。さらに、ビデオデコーダ30は、これに限定されないが、上記および以下で図4〜図6に関してより詳細に説明する、VPS内のビューIDビット深度のシグナリング、ならびにビットレート情報および/またはピクチャレート情報のシグナリングの方法を含む、本開示の技法のいずれかまたはすべてを実行するように構成され得る。一例として、レイヤ間予測ユニット75は、本開示で説明する技法のいずれかまたはすべてを実行するように構成され得る。ただし、本開示の態様はそのように限定されない。いくつかの例では、本開示で説明する技法は、ビデオデコーダ30の様々な構成要素間で共有され得る。いくつかの例では、さらに、または代替で、プロセッサ(図示せず)は、本開示において説明する技法のいずれかまたはすべてを実行するように構成され得る。
[0086]説明のために、本開示は、HEVCコーディングの文脈でビデオデコーダ30を説明する。しかしながら、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。図3Aのデコーダ30は、コーデックの単一のレイヤを示している。しかしながら、図3Bを参照してさらに説明するように、ビデオデコーダ30のうちのいくつかまたはすべては、マルチレイヤコーデックによる処理のために複製され得る。
[0087]図3Aの例では、ビデオデコーダ30は、エントロピー復号ユニット70と、動き補償ユニット72と、イントラ予測ユニット74と、レイヤ間予測ユニット75と、逆量子化ユニット76と、逆変換ユニット78と、参照フレームメモリ82と、加算器80とを含む。いくつかの実施形態では、動き補償ユニット72および/またはイントラ予測ユニット74はレイヤ間予測を実行するように構成され得、その場合、レイヤ間予測ユニット75は省略され得る。ビデオデコーダ30は、いくつかの例では、ビデオエンコーダ20(図2A)に関して説明した符号化パスとは概して逆の復号パスを実行し得る。動き補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルに基づいて予測データを生成し得、イントラ予測ユニット74は、エントロピー復号ユニット70から受信されたイントラ予測モードインジケータに基づいて予測データを生成し得る。参照フレームメモリ82は、復号されたピクチャバッファを含み得る。復号されたピクチャバッファは、その通常の意味を有する、およびいくつかの実施形態では、参照フレームのビデオコーデックが管理するデータ構造を指す、広義の用語である。
[0088]復号プロセス中に、ビデオデコーダ30は、ビデオエンコーダ20から、符号化ビデオスライスのビデオブロックと、関連するシンタックス要素とを表す符号化ビデオビットストリームを受信する。ビデオデコーダ30のエントロピー復号ユニット70は、量子化係数、動きベクトルまたはイントラ予測モードインジケータ、および他のシンタックス要素を生成するためにビットストリームをエントロピー復号する。エントロピー復号ユニット70は、動きベクトルツーと他の予測シンタックス要素とを動き補償ユニット72に転送する。ビデオデコーダ30は、ビデオスライスレベルおよび/またはビデオブロックレベルでシンタックス要素を受信し得る。
[0089]ビデオスライスがイントラコード化(I)スライスとしてコーディングされるとき、イントラ予測ユニット74は、シグナリングされたイントラ予測モードと、現在フレームまたはピクチャの、前に復号されたブロックからのデータとに基づいて、現在のビデオスライスのビデオブロックのための予測データを生成し得る。ビデオフレームがインターコード化(たとえば、B、PまたはGPB)スライスとしてコーディングされるとき、動き補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルと他のシンタックス要素とに基づいて、現在のビデオスライスのビデオブロックのための予測ブロックを生成する。予測ブロックは、参照ピクチャリストのうちの1つ内の参照ピクチャのうちの1つから生成され得る。ビデオデコーダ30は、参照フレームメモリ82に記憶された参照ピクチャに基づいてデフォルト構成技法を用いて、参照フレームリスト、リスト0とリスト1とを構成し得る。
[0090]動き補償ユニット72は、動きベクトルと他のシンタックス要素とをパースすることによって現在のビデオスライスのビデオブロックのための予測情報を決定し、その予測情報を使用して、復号されている現在のビデオブロックのための予測ブロックを生成する。たとえば、動き補償ユニット72は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード(たとえば、イントラまたはインター予測)と、インター予測スライスタイプ(たとえば、Bスライス、Pスライス、またはGPBスライス)と、スライスの参照ピクチャリストのうちの1つまたは複数のための構成情報と、スライスの各インター符号化ビデオブロックのための動きベクトルと、スライスの各インターコード化ビデオブロックのためのインター予測ステータスと、現在のビデオスライス中のビデオブロックを復号するための他の情報とを決定するために、受信されたシンタックス要素のいくつかを使用する。
[0091]動き補償ユニット72はまた、補間フィルタに基づいて補間を実行し得る。動き補償ユニット72は、ビデオブロックの符号化中にビデオエンコーダ20によって使用された補間フィルタを使用して、参照ブロックのサブ整数ピクセルの補間値を計算し得る。この場合、動き補償ユニット72は、受信されたシンタックス要素からビデオエンコーダ20によって使用された補間フィルタを決定し、その補間フィルタを使用して予測ブロックを生成し得る。
[0092]ビデオデコーダ30もレイヤ間予測ユニット75を含み得る。レイヤ間予測ユニット75は、SVCにおいて利用可能である1つまたは複数の異なるレイヤ(たとえば、ベースレイヤまたは参照レイヤ)を使用して現在ブロック(たとえば、EL中の現在ブロック)を予測するように構成される。そのような予測はレイヤ間予測と呼ばれることがある。レイヤ間予測ユニット75は、レイヤ間冗長性を低減するために予測方法を利用し、それによって、コーディング効率を改善し、計算リソース要件を低減する。レイヤ間予測のいくつかの例としては、レイヤ間イントラ予測、レイヤ間動き予測、およびレイヤ間残差予測がある。レイヤ間イントラ予測は、ベースレイヤ中のコロケートブロックの再構成を使用してエンハンスメントレイヤ中の現在ブロックを予測する。レイヤ間動き予測は、ベースレイヤの動き情報を使用してエンハンスメントレイヤ中の動作を予測する。レイヤ間残差予測は、ベースレイヤの残差を使用してエンハンスメントレイヤの残差を予測する。ベースレイヤとエンハンスメントレイヤとが異なる空間解像度を有する場合、空間動きベクトルスケーリングおよび/またはレイヤ間位置マッピングは、以下でより詳細に説明するように、時間的スケーリング機能を用いてレイヤ間予測ユニット75によって実行され得る。
[0093]逆量子化ユニット76は、ビットストリーム中で与えられ、エントロピー復号ユニット70によって復号された量子化変換係数を逆量子化(inverse quantize)、たとえば、逆量子化(de-quantize)する。逆量子化プロセスは、量子化の程度を決定し、同様に、適用されるべき逆量子化の程度を決定するための、ビデオスライス中のビデオブロックごとにビデオデコーダ30によって計算される量子化パラメータQPYの使用を含み得る。
[0094]逆変換ユニット78は、ピクセル領域において残差ブロックを生成するために、逆変換、たとえば逆DCT、逆DST、逆整数変換、または概念的に同様の逆変換プロセスを変換係数に適用する。
[0095]動き補償ユニット72が、動きベクトルと他のシンタックス要素とに基づいて現在のビデオブロックのための予測ブロックを生成した後に、ビデオデコーダ30は、逆変換ユニット78からの残差ブロックを動き補償ユニット72によって生成された対応する予測ブロックに加算することによって、復号されたビデオブロックを形成する。加算器90は、この加算演算を実行する1つまたは複数の構成要素を表す。所望される場合、ブロッキネスアーティファクトを除去するために、復号ブロックをフィルタ処理するためにデブロッキングフィルタも適用され得る。ピクセル遷移を平滑化するために、または場合によってはビデオ品質を改善するために、他のループフィルタも(コーディングループ中またはコーディングループ後のいずれかで)使用され得る。所与のフレームまたはピクチャ中の復号されたビデオブロックは、次いで、その後の動き補償のために使用される参照ピクチャを記憶する参照フレームメモリ82に記憶される。参照フレームメモリ82はまた、図1のディスプレイデバイス32などのディスプレイデバイス上での後の表示のための、復号されたビデオを記憶する。
マルチレイヤデコーダ
[0096]図3Bは、本開示で説明する態様に従って技法を実装し得るマルチレイヤビデオデコーダ31の例を示すブロック図である。ビデオデコーダ31は、SHVCおよびマルチビューコーディングのような、マルチレイヤビデオフレームを処理するように構成され得る。さらに、ビデオデコーダ31は、本開示の技法のいずれかまたはすべてを実行するように構成され得る。
[0097]ビデオデコーダ31は、ビデオデコーダ30Aとビデオデコーダ30Bとを含み、それらの各々は、図3Aのビデオデコーダ30として構成され得、ビデオデコーダ30に関して上記で説明した機能を実行し得る。さらに、参照番号の再利用によって示されるように、ビデオデコーダ30Aと30Bとは、ビデオデコーダ30としてシステムとサブシステムとのうちの少なくともいくつかを含み得る。ビデオデコーダ31は、2つのビデオデコーダ30Aと30Bとを含むものとして示されているが、ビデオデコーダ31はそのように限定されず、任意の数のビデオデコーダ30レイヤを含み得る。いくつかの実施形態では、ビデオデコーダ31は、アクセスユニット内のピクチャまたはフレームごとにビデオデコーダ30を含み得る。たとえば、5個のピクチャを含むアクセスユニットは、5個のデコーダレイヤを含むビデオデコーダによって処理されてもよく、復号されてもよい。いくつかの実施形態では、ビデオデコーダ31は、アクセスユニット内のフレームよりも多くのデコーダレイヤを含み得る。いくつかのそのようなケースでは、ビデオデコーダレイヤのうちのいくつかは、いくつかのアクセスユニットを処理する際に非アクティブであり得る。
[0098]ビデオデコーダ30Aと30Bとに加えて、ビデオデコーダ31はアップサンプリングユニット92を含み得る。いくつかの実施形態では、アップサンプリングユニット92は、フレームまたはアクセスユニットのための参照ピクチャリストに追加されるべきエンハンストレイヤを作成するために、受信されたビデオフレームのベースレイヤをアップサンプリングし得る。このエンハンストレイヤは、参照フレームメモリ82(たとえば、その復号されたピクチャバッファなど)に記憶され得る。いくつかの実施形態では、アップサンプリングユニット92は、図2Bのリサンプリングユニット90に関して説明する実施形態のうちのいくつかまたはすべてを含み得る。いくつかの実施形態では、アップサンプリングユニット92は、スライス境界ルールのセットおよび/またはラスタ走査ルールを順守するために、レイヤをアップサンプリングして、1つまたは複数のスライスを再編成、再定義、修正、または調整するように構成される。場合によっては、アップサンプリングユニット92は、受信されたビデオフレームのレイヤをアップサンプリングおよび/またはダウンサンプリングするように構成されたリサンプリングユニットであり得る。
[0099]アップサンプリングユニット92は、下位層デコーダ(たとえば、ビデオデコーダ30A)の復号されたピクチャバッファ82からピクチャまたはフレーム(あるいは、ピクチャに関連付けられるピクチャ情報)を受信して、ピクチャ(または、受信されたピクチャ情報)をアップサンプリングするように構成され得る。次いで、アップサンプリングされたピクチャは、下位層デコーダと同じアクセスユニット内のピクチャを復号するように構成された上位層デコーダ(たとえば、ビデオデコーダ30B)のレイヤ間予測ユニット75に提供され得る。場合によっては、上位層デコーダは、下位層デコーダから除去された1つのレイヤである。他の場合では、図3Bのレイヤ0デコーダとレイヤ1デコーダとの間に、1つまたは複数の上位層デコーダがあり得る。
[0100]場合によっては、アップサンプリングユニット92は、省略または迂回され得る。そのような場合、ビデオデコーダ30Aの復号されたピクチャバッファ82からのピクチャは、直接、または少なくともアップサンプリングユニット92、ビデオデコーダ30Bのレイヤ間予測ユニット75に提供されることなしに提供され得る。たとえば、ビデオデコーダ30Bに提供されたビデオデータ、およびビデオデコーダ30Aの復号されたピクチャバッファ82からの参照ピクチャが、同じサイズまたは解像度である場合、参照ピクチャは、アップサンプリングなしにビデオデコーダ30Bに提供され得る。さらに、いくつかの実施形態では、アップサンプリングユニット92は、ビデオデコーダ30Aの復号されたピクチャバッファ82から受信された参照ピクチャをアップサンプリングまたはダウンサンプリングするように構成されたリサンプリングユニット90であり得る。
[00101]図3Bに示されるように、ビデオデコーダ31は、デマルチプレクサ99、すなわちdemuxをさらに含み得る。demux99は、符号化されたビデオビットストリームを複数のビットストリームに分割することができ、demux99によって出力された各ビットストリームが、異なるビデオデコーダ30Aと30Bとに提供されている。複数のビットストリームは、ビットストリームを受信することによって作成され得、ビデオデコーダ30Aと30Bとの各々は、所与の時間にビットストリームの一部分を受信する。場合によっては、demux99で受信されたビットストリームからのビットは、ビデオデコーダの各々(たとえば、図3Bの例におけるビデオデコーダ30Aと30B)の間で一度に1ビットがオルタネートされ得るが、多くの場合、ビットストリームは異なるように分割される。たとえば、ビットストリームは、どのビデオデコーダがビットストリームを一度に1ブロック受信するかをオルタネートすることによって分割され得る。別の例では、ビットストリームは、ビデオデコーダ30Aと30Bとの各々へのブロックの非1:1比によって分割され得る。たとえば、2つのブロックは、ビデオデコーダ30Aに提供されたブロックごとにビデオデコーダ30Bに提供され得る。いくつかの実施形態では、demux99によるビットストリームの分割は事前にプログラムされ得る。他の実施形態では、demux99は、宛先デバイス14上のプロセッサからなどの、ビデオデコーダ31の外部のシステムから受信された制御信号に基づいて、ビットストリームを分割することができる。制御信号は、入力インターフェース28からのビデオの解像度またはビットレートに基づいて、チャネル16の帯域幅に基づいて、ユーザに関連付けられるサブスクリプション(たとえば、有料購読対、無料購読)に基づいて、あるいは、ビデオデコーダ31によって取得可能な解像度を決定するための他の任意の要因に基づいて生成され得る。
VPS内のビューIDビット深度のシグナリング、ならびにビットレート情報および/またはピクチャレート情報のシグナリング
[00102]MV−HEVCおよびSHVCの初期バージョン(たとえば、ワーキングドラフト2)では、レイヤのビューIDは、固定された数のビットを使用してシグナリングされていた。たとえば、SHVCの初期バージョンは、1つのレイヤについていくつのビューが利用可能であるかに関わらず、ビューIDをシグナリングするために10ビットを使用した。しかしながら、ビューIDをシグナリングするために固定されたビット深度を使用することは、利用可能なビューの数が少ない(たとえば、1〜4ビュー)場合は特に、非効率性につながる場合がある。10ビットの固定されたビット深度を使用することにより、1つのレイヤについて最大1024(210)ビューのシグナリングを可能にすることができるが、多くの場合、1つのレイヤについての合計ビューの数はそれよりもはるかに少ない。
[00103]さらに、MV−HEVCおよびSHVCの初期バージョンでは、レイヤごとに、および各レイヤセットのサブレイヤごとに、ビットレートおよびピクチャレート情報がシグナリングおよび/または処理される。レイヤセットごとに、ビットレートおよびピクチャレート情報(たとえば、bit_rate_pic_rate())を含むシンタックス構造がシグナリングされる。各レイヤセットのサブレイヤごとに、ビットレート情報が存在するかどうかを示すそれぞれのフラグがシグナリングされて、ピクチャレート情報が存在するかどうかを示すそれぞれのフラグがシグナリングされる。このプロセスは、たとえ任意のレイヤセットまたはサブレイヤについての任意のビットレート情報および/またはピクチャレート情報が存在するか否かに関わらず実行される。たとえば、すべてのレイヤセットおよびサブレイヤについてビットレート情報および/またはピクチャレート情報がないことを示すために、レイヤセットごとに、およびそれぞれのサブレイヤごとに、フラグの値として0がシグナリングされる。これは、たとえば、多くのレイヤセットと、レイヤセットの多くのサブレイヤとがあり得るので、非効率性、ならびに不要なシグナリングおよび/または処理につながる場合がある。
[00104]これらおよび他の問題に対処するために、本開示の技法は、ビューIDのビット深度をシグナリングすることと、シグナリングされたビット深度を使用してビューIDの値をシグナリングすることとを可能にすることができる。たとえば、2つのビューだけが使用される場合、ビューIDのビット深度は1ビットであり得、ビューIDの値は1ビットを使用してシグナリングされ得る。3つのビューが使用される場合、ビューIDのビット深度は2ビットでよく、ビューIDの値は2ビットを使用してシグナリングされ得る。ビューIDのビット深度は可変であり得る(たとえば、1と16ビットとの間)。このように、ビューIDは、ビューIDの値をシグナリングする際に使用されるビットの数を減少させることによって、より効率的にシグナリングされ得る。
[00105]本開示の技法は、VPS内でビットレート情報および/またはピクチャレート情報をシグナリングすることを可能にすることができる。たとえば、本技法は、任意のレイヤセットおよび/またはレイヤセットの任意のサブレイヤが、ビットレート情報および/またはピクチャレート情報を有するかどうかを示すことができる。一実施形態では、本技法は、任意のレイヤセットおよび/またはサブレイヤについてのビットレート情報が存在するかどうかを示すグローバルフラグをVPS内でシグナリングして、任意のレイヤセットおよび/またはサブレイヤについてのピクチャレート情報が存在するかどうかを示すグローバルフラグをVPS内でシグナリングすることができる。VPS内にグローバルフラグを含めることによって、ビットレートピクチャレートシンタックス構造は、グローバルフラグが、少なくとも1つのレイヤセットまたは少なくとも1つのサブレイヤについてビットレート情報および/またはピクチャレート情報が存在すると示す時だけ、シグナリングおよび/またはアクセスされ得る。グローバルフラグが、どのレイヤについてのビットレート情報および/またはピクチャレート情報も存在しないと示す場合、ビットレートピクチャレートシンタックス構造はシグナリングおよび/またはアクセスされる必要はない。さらに、グローバルフラグは、効率的な方法でビットレート情報とピクチャレート情報との別々の処理を可能にすることができる。ビットレート情報についてのグローバルフラグが、ビットレート情報がないと示す場合、サブレイヤについてのビットレート情報についてのフラグはシグナリングおよび/または処理される必要はない。同様に、ピクチャレート情報についてのグローバルフラグが、サブレイヤについてのピクチャレート情報がないと示す場合、サブレイヤについてのピクチャレート情報についてのフラグはシグナリングおよび/または処理される必要はない。以前は、ビットレート情報かピクチャレート情報のうちの1つだけをシグナリングすることが可能であったが、各レイヤセットのサブレイヤごとのビットレート情報についての1つのフラグ、および各レイヤセットのサブレイヤごとのピクチャレート情報についての1つのフラグの、複数の個々のフラグのシグナリングおよび処理が必要であった。
[00106]本開示を通じて使用される様々な用語は、それらの通常の意味を有する広義の用語である。さらに、いくつかの実施形態では、特定の用語は以下のビデオ概念に関連する。ピクチャは、その用語が現在の規格(たとえば、HEVC、SHVC、MV−HEVC等)で使用されるので、ビデオピクチャを指すことができる。ビデオパラメータセット(VPS)は、複数のレイヤに、およびアクセスユニットのシーケンスにわたってグローバルに適用されるパラメータの任意のセットを指すことができる。補助強化情報(SEI)は、適合する(conforming)ビットストリーム内のピクチャの正確な復号のために必ずしも必要ではないが、改善されたユーザ経験のために(たとえば、送信エラーがあるビデオ品質の向上を助けるために、等)有用である、任意の情報を指すことができる。ビュー識別子(ID)は、ビューの識別子(カメラの表現)、または触覚信号(たとえば、触覚センサの表現)を指すことができる。セッションネゴシエーションは、能力交換、オファーアンサー等を指すことができる。本開示の技法はまた、ランダムアクセス期間、各タイプのコーディングされたピクチャ(イントラコーディングされた、片方向予測されたピクチャ、双方向予測された、等)の数などの、ビットレートおよびピクチャレート以外のビットストリーム特性のシグナリングに適用することができる。いくつかの実施形態では、コンピューティングハードウェアは、コンピュータハードウェアを備える1つまたは複数のコンピューティングデバイスを含み得る。
ビューIDビット深度のシグナリング
[00107]上記で説明したように、レイヤのビューIDは、可変ビット深度を使用してシグナリングされ得る。一実施形態では、ビット深度は、ビット深度が適切に、たとえば、シグナリングされるビューの数に基づいて選択され得るという点で可変であり得る。特定の実施形態では、ビット深度はVPS内でシグナリングされる。一実施形態では、MV−HEVCおよびSHVCの初期バージョンのvps_extension()シンタックスおよびセマンティクスは、イタリック体で示されるように変更され得る。そのような変更は、JCT3V−D0196における方法からの変更であり得る。ビューIDをシグナリングするために使用されるビットの数は、view_id_len_minus1のビュー内のビューID値view_id_valの長さをシグナリングすることによって適切に調節され得る。
上記の様々なシンタックス要素または変数は、以下のように定義され得る。
・1と等しいscalability_mask_flag[i]は、表F−1内のi番目のスケーラビリティ次元に対応するdimension_idシンタックス要素が存在することを示している。0と等しいscalability_mask_flag[i]は、i番目のスケーラビリティ次元に対応するdimension_idシンタックス要素が存在しないことを示している。
・dimension_id_len_minus1[j]プラス1は、dimension_id[i][j]シンタックス要素の長さをビット単位で指定する。
・splitting_flagが1と等しい場合、以下が適用される:
−変数dimBitOffset[0]が0と等しく設定され、1からNumScalabilityTypes−1まで(両方を含めて)の範囲内のjについて、dimBitOffset[j]が以下のように導出される。
−dimension_id_len_minus1[NumScalabilityTypes−1]の値は、5?dimBitOffset[NumScalabilityTypes−1]と等しいと推測される。
−dimBitOffset[NumScalabilityTypes]の値が6と等しく設定される。
−dimBitOffset[NumScalabilityTypes−1]が6未満であることは、ビットストリームの適合性の要件である。
・1と等しいvps_nuh_layer_id_present_flagは、1からvps_max_layers_minus1まで(両方を含めて)のiについて、layer_id_in_nuh[i]が存在することを指定する。0と等しいvps_nuh_layer_id_present_flagは、1からvps_max_layers_minus1まで(両方を含めて)のiについて、layer_id_in_nuh[i]が存在しないことを指定する。
・layer_id_in_nuh[i]は、i番目のレイヤのVCL NALユニット内のnuh_layer_idシンタックス要素の値を指定する。0からvps_max_layers_minus1まで(両方を含めて)の範囲内のiについて、layer_id_in_nuh[i]が存在しない場合、値はiと等しいと推測される。
−iが0を上回る場合、layer_id_in_nuh[i]はlayer_id_in_nuh[i−1]を上回ることになる。
−0からvps_max_layers_minus1まで(両方を含めて)のiについて、変数LayerIdxInVps[layer_id_in_nuh[i]]がiと等しく設定される。
・dimension_id[i][j]は、i番目のレイヤのj番目に存在するスケーラビリティ次元タイプの識別子を指定する。dimension_id[i][j]の表現のために使用されるビットの数は、dimension_id_len_minus1[j]+1ビットである。
−splitting_flagが1と等しい場合、0からvps_max_layers_minus1まで(両方を含めて)のi、および0からNumScalabilityTypes−1まで(両方を含めて)のjについて、dimension_id[i][j]は((layer_id_in_nuh[i]&((1<<dimBitOffset[j+1])−1))>>dimBitOffset[j])と等しいと推測される。
−splitting_flagが1と等しくない場合、0からNumScalabilityTypes−1まで(両方を含めて)のjについて、dimension_id[0][j]は0と等しいと推測される。
−i番目のレイヤのsmIdx−thスケーラビリティ次元タイプの識別子を指定している変数ScalabilityId[i][smIdx]、およびi番目のレイヤがビュースケーラビリティ拡張レイヤかどうかを指定している変数ViewScalExtLayerFlagが、以下のように導出される。
・1と等しいview_id_explicitly_signalled_flagは、ビュー識別子が、VPSによって指定されたいくつかまたはすべてのレイヤに明示的に割り当てられていることを指定する。0と等しいview_id_explicitly_signalled_flagは、ビュー識別子が、VPSによって指定されたレイヤに明示的に割り当てられていないことを指定する。
・vuliew_id_len_minus1プラス1は、view_id_val[i]シンタックス要素の長さをビット単位で指定する。
・1と等しいview_id_present_for_all_layers_flagは、VPSによって指定されたレイヤごとのビュー識別子が明示的にシグナリングされていることを指定する。0と等しいview_id_present_for_all_layers_flagは、ビュー識別子が、VPSによって指定されたいくつかのレイヤに明示的にシグナリングされて、VPSによって指定された他のレイヤのために導出されることを指定する。
・view_id_val[i]は、VPSによって指定されたi番目のレイヤのビュー識別子を指定する。view_id_val[i]シンタックス要素は、view_id_len_minus1+1ビットによって表される。
−view_id_explicitly_signalled_flagが1と等しい場合、view_id_present_for_all_layers_flagは0と等しく、i%2は1と等しく、view_id_val[i]の値はview_id_val[i−1]と等しいと推測される。
−view_id_explicitly_signalled_flagが0と等しい場合、view_id_val[i]の値はScalabilityId[i][0]と等しいと推測される。
−nuhLayerIdと等しいnuh_layer_idを有するレイヤごとに、変数ViewIdがview_id_val[LayerIdxInVps[nuhLayerId]]と等しく設定される。レイヤ内の各ピクチャは、レイヤのViewIdに関連付けられると考えられる。
・SHVCにとって、view_id_info_present_flagの値は0と等しいことが必要とされる場合がある。深度を含むMV−HEVCの潜在的な拡張では、1つのビューの、テクスチャおよび深度構成要素は、2つの隣接するレイヤであり、同じview_idを有する。テクスチャおよび深度が常に対になっている場合、view_id_info_present_flagを1に等しく、およびview_id_present_for_all_layers_flagを0に等しく設定することが望ましい。
[00108]上記の実施形態では、view_id_explicitly_signalled_flagは、ビュー識別子が明示的にシグナリングされることを示すためにシグナリングされる。view_id_explicitly_signalled_flagは、VPS内でシグナリングされ得る。view_id_explicitly_signalled_flagが1と等しい場合、view_id_len_minus1がシグナリングされる。view_id_len_minus1は、1つまたは複数のビュー識別子マイナス1をシグナリングする際に使用されるべきビット深度を示すことができる。一例では、ビット深度は1と16との間であり得る。view_id_val[i]は、view_id_len_minus1+1によって示されるビット深度を使用してシグナリングされる。view_id_val[i]の長さは、シグナリングされる必要があるビューの数に応じて可変であり得る。
[00109]同様に、デコーダ側で、たとえばVPS内でview_id_explicitly_signalled_flagが受信される。view_id_explicitly_signalled_flagは、ビュー識別子が明示的にシグナリングされていることを示すことができる。view_id_explicitly_signalled_flagが1と等しい場合、view_id_len_minus1が処理される。view_id_len_minus1は、1つまたは複数のビュー識別子マイナス1をシグナリングする際に使用されるビット深度を示すことができる。view_id_val[i]は、view_id_len_minus1+1の長さを有する値として受信され得る。
[00110]このように、可変ビット深度は、ビューIDのビット深度をシグナリングすることによって、レイヤのビューIDをシグナリングするために使用され得る。次いで、ビューIDは、ビット深度によって示されるビットの数を使用して復号され得る。いくつかの実施形態では、ビット深度は、ビューIDの長さとも呼ばれ得る。
VPS内のビットレート情報および/またはピクチャレート情報のシグナリング
[00111]MV−HEVCおよびSHVCの初期バージョンでは、セッションネゴシエーションおよびコンテンツ選択のために有用である、プロファイル、層、およびレベルに関する情報が、VPS内でシグナリングされる。しかしながら、ビットレートおよびピクチャレートなどの、同じ目的のためにやはり重要である他の情報は、VPS内でシグナリングされない。ビットレートおよびピクチャレート情報のシグナリングは、それぞれスケーラビリティ情報補助強化情報(SEI)メッセージ、およびビュースケーラビリティ情報SEIメッセージ内のSVCおよびMVC内でサポートされる。HEVCマルチレイヤ拡張では、スケーラビリティ情報SEIメッセージおよびビュースケーラビリティ情報SEIメッセージ(AVC拡張の)内で搬送されるセッションネゴシエーションにとって重要な情報のうちのいくつかまたはすべてが今はVPS内に含まれ得る。
[00112]したがって、本開示の一態様では、ビットレート情報および/またはピクチャレート情報がVPS内でシグナリングされる。そのような情報のセマンティクスは、国際標準化機構(ISO)ベースのメディアファイル形式およびその拡張ファイル形式などのシステム仕様におけるそれらの対応と整列される。
[00113]JCTVC−K0125における方法と比較して、本開示の技法は、bit_rate_present_vps_flagとpic_rate_present_vps_flagとのフラグを含めることと、シンタックス構造およびシンタックス要素を調整する際にそれらを使用することを通じて、ビットレート情報とピクチャレート情報とのうちの1つだけのより効率的なシグナリングを可能にすることができる。
[00114]一実施形態では、MV−HEVCおよびSHVCの初期バージョンのvps_extension()シンタックスおよびセマンティクスは、イタリック体で示されるように変更され得る。
・1と等しいbit_rate_present_vps_flag、または1と等しいpic_rate_present_vps_flagは、レイヤセットごとにVPS内にbit_rate_pic_rate()シンタックス構造が存在することを指定する。0と等しいbit_rate_present_vps_flag、および0と等しいpic_rate_present_vps_flagは、bit_rate_pic_rate()シンタックス構造がVPS内にまったく存在しないことを指定する。
・1と等しいbit_rate_present_flag[i]は、レイヤセットのi番目のサブセットについてのビットレート情報が存在することを指定する。0と等しいbit_rate_present_flag[i]は、レイヤセットのi番目のサブセットについてのビットレート情報が存在しないことを指定する。レイヤセットのi番目のサブセットは、それがレイヤセットiで呼び出される場合、サブ−ビットストリーム抽出プロセスの出力であり、入力としてレイヤセットに関連付けられるレイヤ識別子リストである。存在しない場合、bit_rate_present_flag[i]の値は0と等しいと推測される。
・1と等しいpic_rate_present_flag[i]は、レイヤセットのi番目のサブセットについてのピクチャレート情報が存在することを指定する。0と等しいpic_rate_present_flag[i]は、レイヤセットのi番目のサブセットについてのピクチャレート情報が存在しないことを指定する。存在しない場合、pic_rate_present_flag[i]の値は0と等しいと推測される。
・avg_bit_rate[i]は、レイヤセットのi番目のサブセットの平均ビットレートをビット/秒で示している。値は、
によって指定される関数BitRateBPS()を有するBitRateBPS(avg_bit_rate[i])によって与えられる。
−平均ビットレートは、SHVC WD2およびMV−HEVC WD4のAnnex F.13において指定されるアクセスユニット除去時間に応じて導出される。以下では、bTotalは、レイヤセットのi番目のセットのすべてのNALユニットにおけるビットの数であり、t1はVPSが適用される第1のアクセスユニットの除去時間(秒単位)であり、t2はVPSが適用される最後のアクセスユニット(復号順)の除去時間(秒単位)である。
−xがavg_bit_rate[i]の値を指定する場合、以下が適用される。
○t
1がt
2と等しくない場合、以下の条件は真であるものとする。
そうではない(t
1がt
2と等しい)場合、以下の条件は真であるものとする。
・max_bit_rate_layer[i]は、Annex F.13で指定されたアクセスユニット除去時間の任意の1秒の時間窓(one−second time window)における、レイヤセットのi番目のサブセットのビットレートについての上界を示している。ビット/秒でのビットレートについての上界は、BitRateBPS(max_bit_rate_layer[i])によって与えられる。ビットレート値は、Annex F.13で指定されたアクセスユニット除去時間に応じて導出される。以下では、t
1は時間内の任意の点(秒単位)であり、t
2はt
1+1÷100と等しく設定され、bTotalは、t
1以上でありt
2未満である除去時間を有するアクセスユニットのすべてのNALユニットにおけるビットの数である。xがmax_bit_rate_layer[i]の値を指定する場合、t
1のすべての値について以下の条件が守られるものとする。
・constant_pic_rate_idc[i]は、レイヤセットのi番目のサブセットのピクチャレートが一定であるかどうかを示している。以下では、時間セグメントtSegは、復号順で、レイヤセットのi番目のサブセットの2つ以上の連続するアクセスユニットの任意のセットであり、fTotal(tSeg)は、時間セグメントtSeg内のアクセスユニットの数であり、t
1(tSeg)は時間セグメントtSegの第1のアクセスユニット(復号順)の除去時間(秒単位)であり、t
2(tSeg)は、時間セグメントtSegの最後のアクセスユニット(復号順)の除去時間(秒単位)であり、avgFR(tSeg)は、
によって与えられる、時間セグメントtSeg内の平均ピクチャレートである。
−レイヤセットのi番目のサブセットが1つまたは2つのアクセスユニットだけを含むか、avgFR(tSeg)の値がすべての時間セグメントにわたって一定である場合、ピクチャレートは一定であり、そうではない場合、ピクチャレートは一定ではない。
−0と等しいconstant_pic_rate_idc[i]は、レイヤセットのi番目のサブセットのピクチャレートが一定ではないことを示している。1と等しいconstant_pic_rate_idc[i]は、レイヤセットのi番目のサブセットのピクチャレートが一定であることを示している。2と等しいconstant_pic_rate_idc[i]は、レイヤセットのi番目のサブセットのピクチャレートが一定でもよく、一定でなくてもよいことを示している。constant_pic_rate_idc[i]の値は、0から2まで(両方を含めて)の範囲内であるものとする。
・avg_pic_rate[i]は、レイヤセットのi番目のサブセットの平均ピクチャレートを256秒あたりのピクチャの単位で示している。fTotalがレイヤセットのi番目のサブセット内のアクセスユニットの数であり、t1がVPSが適用される第1のアクセスユニットの除去時間(秒単位)であり、t2がVPSが適用される最後のアクセスユニット(復号順)の除去時間(秒単位)である場合、以下が適用される。
−t
1がt
2と等しくない場合、以下の条件は真であるものとする。
−そうではない場合(t
1がt
2と等しい)、以下の条件は真であるものとする。
[00115]上記の実施形態では、グローバルフラグbit_rate_present_vps_flagとpic_rate_present_vps_flagとがVPS内でシグナリングされる。bit_rate_present_vps_flagは、1つまたは複数のレイヤセットのうちの少なくとも1つのサブレイヤが、シグナリングするためのビットレート情報を有するかどうかを示し、pic_rate_present_vps_flagは、1つまたは複数のレイヤセットのうちの少なくとも1つのサブレイヤが、シグナリングするためのピクチャレート情報を有するかどうかを示している。bit_rate_present_vps_flagとpic_rate_present_vps_flagとの両方が0と等しい場合、どのビットレートピクチャレートシンタックス構造もVPS内でシグナリングされない。bit_rate_present_vps_flagまたはpic_rate_present_vps_flagが1と等しい場合、ビットレートピクチャレートシンタックス構造がレイヤセットごとにシグナリングされる。レイヤセットは、1つまたは複数のレイヤのグループを指す場合がある。レイヤセットごとのビットレートピクチャレートシンタックス構造内で、bit_rate_present_vps_flagが1と等しい場合、bit_rate_present_flagがサブレイヤごとにシグナリングされてよく、pic_rate_present_vps_flagが1と等しい場合、pic_rate_present_flagがサブレイヤごとにシグナリングされてよい。
[00116]同様に、デコーダ側で、グローバルフラグbit_rate_present_vps_flagとpic_rate_present_vps_flagとがVPS内で受信される。bit_rate_present_vps_flagとpic_rate_present_vps_flagとが両方とも0と等しい場合、どのビットレートピクチャレートシンタックス構造もアクセスおよび/または処理されない。bit_rate_present_vps_flagまたはpic_rate_present_vps_flagが1と等しい場合、ビットレートピクチャレートシンタックス構造は、レイヤセットごとにアクセスおよび/または処理される。レイヤセットごとのビットレートピクチャレートシンタックス構造内で、bit_rate_present_vps_flagが1と等しい場合、bit_rate_present_flagがサブレイヤごとにアクセスおよび/または処理されてよく、pic_rate_present_vps_flagが1と等しい場合、pic_rate_present_flagがサブレイヤごとにアクセスおよび/または処理されてよい。
[00117]このように、本技法は、VPS内で示されるすべてのレイヤについて、それぞれビットレート情報および/またはピクチャレート情報が存在するかどうかを示すグローバルフラグをVPS内に含めることによって、ビットレート情報および/またはピクチャレート情報を符号化および/または復号するためのリソースを減少させることができる。ビットレートピクチャレートシンタックス構造は、それがビットレート情報および/またはピクチャレート情報を含む場合のみアクセスされ得る。さらに、ビットレート情報およびピクチャレート情報は、別々にシグナリングおよび/または処理され得る。たとえば、ビットレート情報だけが必要な場合、ピクチャレート情報をシグナリングせずに、ビットレート情報だけをシグナリングすることができ、逆もまた同様である。
[00118]本技法に関連する特定の詳細は図4〜図6を参照して以下で説明する。図4に関して説明するすべての特徴および/または実施形態は、単独で実装されてもよく、または図4〜図6で説明する他の特徴および/または実施形態との任意の組合せで実装されてもよい。
ビューIDビット深度のシグナリングの方法
[00119]図4は、本開示の態様による、ビューIDビット深度をシグナリングまたは符号化するための方法を示すフローチャートである。プロセス400は、実施形態に応じて、エンコーダ(たとえば、図2A、図2B等に示されるエンコーダ)、デコーダ(たとえば、図3A、図3B等に示されるデコーダ)、または他の何らかの構成要素によって実行され得る。プロセス400のブロックは、図2Bのエンコーダ21に関連して説明されているが、プロセス400は上述のデコーダなどの他の構成要素によって実行され得る。エンコーダ21のレイヤ1ビデオエンコーダ20B、および/またはエンコーダ21のレイヤ0エンコーダ20Aは、実施形態に応じてプロセス400を実行することができる。図4に関連して説明されるすべての実施形態は別々に実装されてもよく、相互に組み合わせて実装されてもよい。プロセス400に関連する特定の詳細は、たとえば図5および図6に関して上記および以下で説明される。
[00120]プロセス400はブロック401から開始する。エンコーダ21は、ビデオ情報を記憶するためのメモリ(たとえば、参照フレームメモリ64)を含み得る。
[00121]ブロック402で、エンコーダ21は、シグナリングするための1つまたは複数のビュー識別子のビット深度を決定する。1つまたは複数のビュー識別子のそれぞれは、符号化されるべきレイヤに関連付けられ得る。1つまたは複数のビュー識別子のビット深度は、たとえば、同じビットストリーム内で符号化され得るビューの最大数に基づいて決定され得る。たとえば、符号化するためのビューの数(たとえば、最大値)に応じて適切にビット深度が選択され得るという意味で、ビュー識別子をシグナリングするためのビット深度は可変であり得る。レイヤは、スケーラブルビデオコーディング(たとえば、SHVC)におけるレイヤ、または3−Dビデオコーディング(たとえば、MV−HEVC)におけるレイヤなどの、ビデオ情報に関連付けられるレイヤを指す場合がある。SHVCビットストリームは、通常、1台のカメラによってキャプチャされたビデオ信号を表し、ビットストリームは複数のレイヤを含むことができ、各レイヤは、異なる品質または異なる空間解像度を有するビデオ信号の表現に対応する。MV−HEVCビットストリームは、通常、複数のカメラによってキャプチャされたビデオ信号を表し、ビットストリームは複数のレイヤを含むことができ、各レイヤは、別個のカメラによってキャプチャされたビデオ信号の一部の表現に対応する。MV−HEVCにおけるレイヤもビューと呼ばれる場合がある。
[00122]ブロック403で、エンコーダ21は、ビットストリーム内で1つまたは複数のビュー識別子のビット深度をシグナリングする。いくつかの実施形態では、1つまたは複数のビュー識別子のビット深度がビデオパラメータセット(VPS)内でシグナリングされる。一実施形態では、シグナリングされたビット深度によって示されるビットの数は1と16との間である。シグナリングされたビット深度は、たとえば図5に関連して説明したように、デコーダによって受信および復号され得る。
[00123]特定の実施形態では、エンコーダ21は、ビットストリーム内でビュー識別子を明示的にシグナリングするかどうかをシグナリングする。一実施形態では、エンコーダ21は、ビュー識別子明示的シグナリングフラグ(view identifier explicitly signalled flag)をシグナリングすることによって、ビットストリーム内でビュー識別子を明示的にシグナリングするかどうかをシグナリングする。いくつかの実施形態では、エンコーダ21は、シグナリングされたビット深度によって示されるビットの数を使用して、1つまたは複数のビュー識別子をシグナリングする。
[00124]プロセス400は、ブロック404において終了する。プロセス400におけるブロックは実施形態に応じて追加および/または省略されてよく、プロセス400のブロックは実施形態に応じて異なる順序で実行されて得る。
[00125]本開示でリサンプリングに関して説明した任意の特徴および/または実施形態は、別々に、またはそれらの任意の組合せで実装され得る。たとえば、図5〜図6に関連して説明した任意の特徴および/または実施形態は、図4に関連して説明した任意の特徴および/または実施形態との任意の組合せで実装されてよく、逆もまた同様である。
[00126]図5は、本開示の態様による、ビューIDビット深度を復号するための方法を示すフローチャートである。プロセス500は、実施形態に応じて、エンコーダ(たとえば、図2A、図2B等に示されるエンコーダ)、デコーダ(たとえば、図3A、図3B等に示されるデコーダ)、または他の何らかの構成要素によって実行され得る。プロセス500のブロックは、図3Bのデコーダ31に関連して説明されているが、プロセス500は上述のエンコーダなどの他の構成要素によって実行され得る。デコーダ31のレイヤ1ビデオデコーダ30B、および/またはデコーダ31のレイヤ0デコーダ30Aは、実施形態に応じてプロセス500を実行することができる。図5に関連して説明されるすべての実施形態は別々に実装されてもよく、相互に組み合わせて実装されてもよい。プロセス500に関連する特定の詳細は上記で、たとえば図4〜図6に関連して説明される。
[00127]プロセス500はブロック501から開始する。デコーダ31は、ビデオ情報を記憶するためのメモリ(たとえば、参照フレームメモリ82)を含み得る。
[00128]ブロック502で、デコーダ31は、1つまたは複数のビュー識別子値をシグナリングするために使用されるビットの数を示すビット深度インジケータを受信する。1つまたは複数のビュー識別子値のそれぞれは、復号されるべき1つまたは複数のレイヤのうちの1つに関連付けられ得る。ビット深度インジケータは、図4に関連して上記で説明したように、エンコーダ21によって符号化またはシグナリングされたビット深度であり得る。一実施形態では、ビット深度インジケータによって示されるビットの数は1と16との間である。ビット深度インジケータは、符号化され得るビューの最大数を示すことができる。
[00129]ブロック503で、デコーダ31は、示された数のビットを有する値として、1つまたは複数のビュー識別子値のそれぞれを受信する。ビット深度インジケータと1つまたは複数のビュー識別子値とは、VPS内で受信され得る。
[00130]プロセス500は、ブロック504において終了する。プロセス500におけるブロックは実施形態に応じて追加および/または省略されてよく、プロセス500のブロックは実施形態に応じて異なる順序で実行され得る。
[00131]本開示でリサンプリングに関して説明した任意の特徴および/または実施形態は、別々に、またはそれらの任意の組合せで実装され得る。たとえば、図4および図6に関連して説明した任意の特徴および/または実施形態は、図5に関連して説明した任意の特徴および/または実施形態との任意の組合せで実装されてよく、逆もまた同様である。
VPS内のビットレート情報および/またはピクチャレート情報のシグナリングの方法
[00132]図6は、本開示の態様による、VPS内でビットレート情報および/またはピクチャレート情報をシグナリングするための方法を示すフローチャートである。プロセス600は、実施形態に応じて、エンコーダ(たとえば、図2A、図2B等に示されるエンコーダ)、デコーダ(たとえば、図3A、図3B等に示されるデコーダ)、または他の何らかの構成要素によって実行され得る。プロセス600のブロックは図3Bのデコーダ31に関して説明されるが、プロセス600は、上述のエンコーダなどの他の構成要素によって実行され得る。実施形態に応じて、デコーダ31のレイヤ1ビデオデコーダ30Bおよび/またはデコーダ31のレイヤ0デコーダ30Aがプロセス600を実行し得る。図6に関して説明されるすべての実施形態は別々に実装されてもよく、相互に組み合わせて実装されてもよい。プロセス600に関連する特定の詳細は、たとえば図4〜図5に関して上記および以下で説明される。
[00133]プロセス600はブロック601から開始する。デコーダ31は、ビデオ情報を記憶するためのメモリ(たとえば、参照フレームメモリ82)を含むことができる。
[00134]ブロック602で、デコーダ31は、1つまたは複数のレイヤセットのうちの少なくとも1つのサブレイヤが、シグナリングするためのビットレート情報を有するかどうかを示す信号を処理する。レイヤセットは、1つまたは複数のレイヤのセットを指す場合があり、レイヤセットが複数のレイヤを含み得る点で、レイヤとは異なる場合がある。たとえば、信号は、1つまたは複数のレイヤセットのうちの少なくとも1つのサブレイヤが、シグナリングするためのビットレート情報を有するかどうかを示すグローバルフラグであり得る。グローバルフラグは、VPS内に含まれ得る。一実施形態では、信号を処理することは、信号を符号化することである。別の実施形態では、信号を処理することは、信号を復号することである。特定の実施形態では、コンピューティングデバイスは、エンコーダとデコーダとの両方の機能を実装し得る。
[00135]ブロック603で、デコーダ31は、1つまたは複数のレイヤセットのうちの少なくとも1つのサブレイヤが、シグナリングするためのピクチャレート情報を有するかどうかを示す信号を処理する。たとえば、信号は、1つまたは複数のレイヤセットのうちの少なくとも1つのサブレイヤが、シグナリングするためのピクチャレート情報を有するかどうかを示すグローバルフラグであり得る。グローバルフラグは、VPS内に含まれ得る。一実施形態では、信号を処理することは、信号を符号化することである。別の実施形態では、信号を処理することは、信号を復号することである。特定の実施形態では、コンピューティングデバイスは、エンコーダとデコーダとの両方の機能を実装し得る。
[00136]特定の実施形態では、デコーダ31は、(1)第1の信号が、1つまたは複数のレイヤセットのうちの少なくとも1つのサブレイヤがシグナリングするためのビットレート情報を有することを示す場合、または、(2)第2の信号が、1つまたは複数のレイヤセットのうちの少なくとも1つのサブレイヤがシグナリングするためのピクチャレート情報を有することを示す場合のいずれかに、ビットレートピクチャレートシンタックス構造を処理する。いくつかの実施形態では、デコーダ31は、第1の信号が、1つまたは複数のレイヤセットのうちの少なくとも1つのサブレイヤが、シグナリングするためのビットレート情報を有することを示す場合、1つまたは複数のレイヤセットのうちの1つのレイヤのサブレイヤがビットレート情報を有するかどうかを示すフラグを処理することと、また、第2の信号が、1つまたは複数のレイヤセットのうちの少なくとも1つのサブレイヤが、シグナリングするためのピクチャレート情報を有することを示す場合、1つまたは複数のレイヤセットのうちの1つのレイヤのサブレイヤが、ピクチャレート情報を有するかどうかを示すフラグを処理することとによって、ビットレートピクチャレートシンタックス構造を処理する。一実施形態では、ビットレートピクチャレートシンタックス構造を処理することは、ビットレートピクチャレートシンタックス構造を符号化することである。別の実施形態では、ビットレートピクチャレートシンタックス構造を処理することは、ビットレートピクチャレートシンタックス構造を復号することである。特定の実施形態では、コンピューティングデバイスは、エンコーダとデコーダとの両方の機能を実装し得る。
[00137]いくつかの実施形態では、1つの信号は、1つまたは複数のレイヤセットのうちの少なくとも1つのサブレイヤが、シグナリングするためのビットレート情報を有するかどうか、および、1つまたは複数のレイヤセットのうちの少なくとも1つのサブレイヤが、シグナリングするためのピクチャレート情報を有するかどうかを示すために使用され得る。たとえば、同じグローバルフラグは、1つまたは複数のレイヤセットおよび/またはサブレイヤが、ビットレート情報およびピクチャレート情報を有するかどうかを示すことができる。一実施形態では、情報の種類ごとのグローバルフラグは、1つのグローバルフラグに統合され得る。そのようなグローバルフラグは、VPSに含まれ得る。
[00138]特定の態様によれば、デコーダ31は、コンピューティングハードウェアは、1つまたは複数のレイヤセットのうちの少なくとも1つのサブレイヤが、シグナリングするためのビットレート情報を有するかどうかを示す第1の信号、または、1つまたは複数のレイヤセットのうちの少なくとも1つのサブレイヤが、シグナリングするためのピクチャレート情報を有するかどうかを示す第2の信号のうちの少なくとも1つを処理する。たとえば、ブロック602と603との両方を実行する代わりに、デコーダ31は、たとえば1つのブロックにおいて、第1の信号と第2の信号とのうちの少なくとも1つを処理することができる。いくつかの実施形態では、1つまたは複数のレイヤセットのうちの少なくとも1つのサブレイヤが、シグナリングするためのビットレート情報を有するかどうかを示す信号だけが、VPS内に含まれて、デコーダ31によって処理され得る。他の実施形態では、1つまたは複数のレイヤセットのうちの少なくとも1つのサブレイヤが、シグナリングするためのピクチャレート情報を有するかどうかを示す信号だけが、VPS内に含まれて、デコーダ31によって処理され得る。
[00139]プロセス600はブロック604において終了する。プロセス600におけるブロックは実施形態に応じて追加および/または省略されてよく、プロセス600のブロックは実施形態に応じて異なる順序で実行され得る。
[0140]本開示においてリサンプリングに関連して説明される任意の特徴および/または実施形態は、別々に実装されてもよく、それらの任意の組合せで実装されてもよい。たとえば、図4〜図5に関連して説明される任意の特徴および/または実施形態は、図6に関連して説明される任意の特徴および/または実施形態との任意の組合せで実装されてもよく、その逆でもよい。
用語
[00141]上記の開示は特定の実施形態を記載しているが、多くの変形形態が可能である。たとえば、上述されたように、上記の技法は3Dビデオコーディングに適用され得る。3Dビデオのいくつかの実施形態では、参照レイヤ(たとえば、ベースレイヤ)は、ビデオの第1のビューを表示するのに十分なビデオ情報を含み、エンハンスメントレイヤは、参照レイヤに比べてさらなるビデオ情報を含み、その結果、参照レイヤおよびエンハンスメントレイヤは一緒に、ビデオの第2のビューを表示するのに十分な情報を含む。これらの2つのビューは、立体的な画像を生成するために使用され得る。上記で説明されたように、本開示の態様に従って、エンハンスメントレイヤ内でビデオユニットを符号化または復号するとき、参照レイヤからの動き情報は、さらなる暗黙的な仮説を識別するために使用され得る。これにより、3Dビデオのビットストリームについてのより大きいコーディング効率が実現され得る。
[00142]例によっては、本明細書で説明された技法のうちいずれかの、いくつかの行為またはイベントは、異なるシーケンスで実行され得、追加、マージ、または完全に除外され得る(たとえば、すべての説明した作用またはイベントが、本技法の実施のために必要であるとは限らない)ことを認識されたい。さらに、いくつかの例では、行為またはイベントは、連続的にではなく、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを通して、同時に実行され得る。
[00143]本明細書で開示される情報および信号は、多種多様な技術および技法のいずれかを使用して表され得る。たとえば、上記の説明全体にわたって言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁界もしくは磁性粒子、光場もしくは光学粒子、またはそれらの任意の組合せによって表され得る。
[00144]本明細書で開示した実施形態に関して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、またはその両方の組合せとして実装され得る。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップについて、概してそれらの機能に関して上記で説明した。そのような機能がハードウェアとして実装されるか、またはソフトウェアとして実装されるかは、特定の適用例および全体的なシステムに課された設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本発明の範囲からの逸脱を生じるものと解釈されるべきではない。
[00145]本明細書で説明した技術は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。そのような技法は、汎用コンピュータ、ワイヤレス通信デバイスハンドセット、またはワイヤレス通信デバイスハンドセットおよび他のデバイスにおける適用例を含む複数の用途を有する集積回路デバイスなど、様々なデバイスのいずれかにおいて実装され得る。モジュールまたは構成要素として説明した任意の特徴は、集積論理デバイスに一緒に、または個別であるが相互運用可能な論理デバイスとして別々に実装され得る。ソフトウェアで実装された場合、本技法は、実行されたとき、上記で説明した方法のうちの1つまたは複数を実行する命令を含むプログラムコードを備えるコンピュータ可読データ記憶媒体によって、少なくとも部分的に実現され得る。コンピュータ可読データ記憶媒体は、パッケージング材料を含むことがあるコンピュータプログラム製品の一部を形成し得る。コンピュータ可読媒体は、シンクロナスダイナミックランダムアクセスメモリ(SDRAM)などのランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、不揮発性ランダムアクセスメモリ(NVRAM)、電気消去可能プログラマブル読取り専用メモリ(EEPROM(登録商標))、フラッシュメモリ、磁気または光学データ記憶媒体など、メモリまたはデータ記憶媒体を備え得る。本技法は、追加または代替として、伝搬信号または電波など、命令またはデータ構造の形態でプログラムコードを搬送または伝達し、コンピュータによってアクセスされ、読み取られ、および/または実行され得るコンピュータ可読通信媒体によって、少なくとも部分的に実現され得る。
[00146]プログラムコードは、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルロジックアレイ(FPGA)、または他の等価の集積回路もしくはディスクリート論理回路など、1つまたは複数のプロセッサを含み得るプロセッサによって実行され得る。そのようなプロセッサは、本開示で説明する技法のいずれかを実行するように構成され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPおよびマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実装され得る。したがって、本明細書で使用する「プロセッサ」という用語は、上記の構造、上記の構造の任意の組合せ、または本明細書で説明する技法の実装に好適な他の構造または装置のいずれかを指す。さらに、いくつかの態様では、本明細書で説明した機能は、符号化および復号のために構成された専用のソフトウェアモジュールもしくはハードウェアモジュール内に提供され得、または複合ビデオエンコーダ/デコーダ(コーデック)に組み込まれ得る。
[00147]本明細書に記載のコーディング技法は、例示的なビデオ符号化および復号システムにおける実施形態であり得る。システムは、後に宛先デバイスによって復号されるべき符号化されたビデオデータを提供するソースデバイスを含む。特に、ソースデバイスは、コンピュータ可読媒体を介してビデオデータを宛先デバイスに提供する。ソースデバイスおよび宛先デバイスは、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、いわゆる「スマート」パッド、テレビ、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲーム機、ビデオストリーミングデバイスなどを含む、広い範囲のデバイスのいずれかを備え得る。場合によっては、ソースデバイスおよび宛先デバイスはワイヤレス通信のために装備され得る。
[00148]宛先デバイスは、コンピュータ可読媒体を介して復号されるべき符号化されたビデオデータを受信することができる。コンピュータ可読媒体は、符号化されたビデオデータをソースから宛先デバイスに移動させることが可能な任意のタイプの媒体またはデバイスを備え得る。一例では、コンピュータ可読媒体は、ソースデバイス12が、符号化されたビデオデータをリアルタイムに宛先デバイスに直接伝送することを可能にするための通信媒体を備え得る。符号化されたビデオデータは、ワイヤレス通信プロトコルなどの通信規格に応じて変調されて、宛先デバイスに伝送され得る。通信媒体は、無線周波数(RF)スペクトル、あるいは1つまたは複数の物理的伝送回線などの、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネット等のグローバルネットワークなどの、パケットベースのネットワークの一部を形成することができる。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイスから宛先デバイスへの通信を容易にするために有用であり得る他の何らかの装置を含み得る。
[00149]いくつかの例では、符号化されたデータが、出力インターフェースから記憶デバイスに出力され得る。同様に、符号化されたデータは、入力インターフェースによって記憶デバイスからアクセスされ得る。記憶デバイスは、ハードドライブ、ブルーレイディスク、DVD、CD−ROM、フラッシュメモリ、揮発性または不揮発性メモリ、あるいは符号化されたビデオデータを記憶するための他の何らかの適切なデジタル記憶媒体などの、様々な分散された、またはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。さらなる例では、記憶デバイスが、ソースデバイスによって生成された、符号化されたビデオを記憶することができるファイルサーバまたは別の中間記憶デバイスに対応し得る。宛先デバイスは、ストリーミングまたはダウンロードを介して、記憶デバイスから記憶されたビデオデータにアクセスすることができる。ファイルサーバは、符号化されたビデオデータを記憶して、その符号化されたビデオデータを宛先デバイスに伝送することが可能な任意のタイプのサーバであり得る。例示的なファイルサーバは、ウェブサーバ(たとえば、ウェブサイト用の)、FTPサーバ、ネットワーク接続型記憶(NAS)デバイス、またはローカルディスクドライブを含む。宛先デバイスは、インターネット接続を含む任意の標準的なデータ接続を通じて、符号化されたビデオデータにアクセスすることができる。これは、ファイルサーバに記憶された、符号化されたビデオデータにアクセスするために適したワイヤレスチャネル(たとえば、Wi−Fi接続)、ワイヤード接続(たとえば、DSL、ケーブルモデム等)、または両方の組合せを含み得る。記憶デバイスからの符号化されたビデオデータの伝送は、ストリーミング伝送、ダウンロード伝送、またはそれらの組合せであり得る。
[00150]本開示の技法は、必ずしもワイヤレスアプリケーションまたは設定に限定されるとは限らない。本技法は、無線テレビ放送、ケーブルテレビ伝送、衛星テレビ伝送、動的適応型HTTPストリーミング(DASH)などのインターネットストリーミングビデオ伝送、データ記憶媒体に符号化されたデジタルビデオなどの、データ記憶媒体に記憶されたデジタルビデオの復号、または他のアプリケーションなどの、様々なマルチメディアアプリケーションのいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システムは、ビデオストリーミング、ビデオ再生、ビデオ放送、および/またはビデオ電話などのアプリケーションをサポートするために、一方向または双方向ビデオ伝送をサポートするように構成され得る。
[00151]一例では、ソースデバイスは、ビデオソースと、ビデオエンコーダと、出力インターフェースとを含む。宛先デバイスは、入力インターフェースと、ビデオエンコーダと、ディスプレイデバイスとを含み得る。ソースデバイスのビデオエンコーダは、本明細書に開示された技法を適用するように構成され得る。他の例では、ソースデバイスと宛先デバイスは、他の構成要素または配置を含み得る。たとえば、ソースデバイスは、外部カメラなどの外部のビデオソースからビデオデータを受信することができる。同様に、宛先デバイスは、一体型ディスプレイデバイスを含むのではなく、外部のディスプレイデバイスとインターフェースすることができる。
[00152]上記の例示的なシステムは、一例に過ぎない。ビデオデータを並列に処理するための技法は、任意のデジタルビデオ符号化および/または復号化デバイスによって実行され得る。本開示の技法は、一般的にビデオエンコーディングデバイスによって実行されるが、本技法はまた、典型的に「CODEC」と呼ばれるビデオエンコーダ/デコーダによって実行され得る。さらに、本開示の技法はまた、ビデオプリプロセッサによって実行され得る。ソースデバイスと宛先デバイスは、ソースデバイスが、宛先デバイスに伝送するための符号化されたビデオデータを生成するようなコーディングデバイスの単なる例である。いくつかの例では、ソースデバイスと宛先デバイスは、デバイスのそれぞれがビデオ符号化および復号化構成要素を含むように、実質的に対称的に動作することができる。したがって、例示的なシステムは、たとえば、ビデオストリーミング、ビデオ再生、ビデオ放送、またはビデオ電話のための、ビデオデバイス間の一方向または双方向ビデオ伝送をサポートすることができる。
[00153]ビデオソースは、ビデオカメラ、以前にキャプチャされたビデオを含むビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースなどのビデオキャプチャデバイスを含み得る。さらなる代替として、ビデオソースは、ソースビデオとしてのコンピュータグラフィックベースのデータ、またはライブビデオと、アーカイブされたビデオと、コンピュータ生成ビデオとの組合せを生成することができる。場合によっては、ビデオソースがビデオカメラの場合、ソースデバイスと宛先デバイスは、いわゆるカメラ付き電話またはビデオ電話を形成することができる。しかしながら、上述のように、本開示に記載された技法は、一般的なビデオコーディングに適用可能でよく、ワイヤレスおよび/またはワイヤードアプリケーションに適用され得る。各場合において、キャプチャされた、事前にキャプチャされた、またはコンピュータで生成されたビデオは、ビデオエンコーダによって符号化され得る。次いで、符号化されたビデオ情報は、出力インターフェースによってコンピュータ可読媒体上に出力され得る。
[00154]上述のように、コンピュータ可読媒体は、ワイヤレスブロードキャストまたはワイヤードネットワーク伝送などの一時的媒体を含んでもよく、ハードディスク、フラッシュドライブ、コンパクトディスク、デジタルビデオディスク、ブルーレイディスク、または他のコンピュータ可読媒体などの記憶媒体(すなわち、非一時的記憶媒体)を含んでもよい。いくつかの例では、ネットワークサーバ(図示せず)が、ソースデバイスから符号化されたビデオデータを受信して、たとえばネットワーク伝送を介して、符号化されたビデオデータを宛先デバイスに提供することができる。同様に、ディスクスタンピング設備などの、媒体製造設備(medium production facility)のコンピューティングデバイスは、ソースデバイスから符号化されたビデオデータを受信して、符号化されたビデオデータを含むディスクを生成することができる。したがって、様々な例において、コンピュータ可読媒体は、様々な形態の1つまたは複数のコンピュータ可読媒体を含むものと理解され得る。
[00155]宛先デバイスの入力インターフェースは、コンピュータ可読媒体から情報を受信する。コンピュータ可読媒体の情報は、ビデオエンコーダによって定義され、ビデオデコーダによっても使用され得る、ブロックおよび他の符号化されたユニット、たとえば画像のグループ(GOP)の特性および/またはプロセスを記述するシンタックス要素を含む、シンタックス情報を含み得る。ディスプレイデバイスは、復号されたビデオデータをユーザに表示して、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなどの、様々なディスプレイデバイスのいずれかを備え得る。本発明の様々な実施形態を説明してきた。これらおよび他の実施形態は、以下の特許請求の範囲内である。
[00156]本発明の様々な実施形態について説明した。これらおよび他の実施形態は、以下の特許請求の範囲内に入る。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[C1] ビデオ情報を符号化するための装置であって、
ビデオ情報を記憶するように構成されたメモリと、
前記メモリに動作可能に結合され、
シグナリングするための1つまたは複数のビュー識別子のビット深度を決定して、ここにおいて、前記1つまたは複数のビュー識別子のそれぞれが符号化されるべきレイヤに関連付けられる、
ビットストリーム内で前記1つまたは複数のビュー識別子の前記ビット深度をシグナリングするように構成されたコンピューティングハードウェアとを備える、装置。
[C2] 前記コンピューティングハードウェアが、符号化されるべきビューの最大数に基づいて、前記1つまたは複数のビュー識別子の前記ビット深度を決定するようにさらに構成される、C1に記載の装置。
[C3] 前記コンピューティングハードウェアが、ビデオパラメータセット(VPS)内で前記ビュー識別子の前記ビット深度をシグナリングするようにさらに構成される、C1に記載の装置。
[C4] 前記コンピューティングハードウェアが、前記ビットストリーム内でビュー識別子を明示的にシグナリングするようにさらに構成される、C1に記載の装置。
[C5] 前記コンピューティングハードウェアが、ビュー識別子明示的シグナリングフラグをシグナリングすることによって、前記ビットストリーム内でビュー識別子を明示的にシグナリングするかどうかをシグナリングするように構成される、C4に記載の装置。
[C6] 前記コンピューティングハードウェアが、前記シグナリングされたビット深度によって示されるビットの前記数を使用して、前記1つまたは複数のビュー識別子をシグナリングするようにさらに構成される、C1に記載の装置。
[C7] 前記シグナリングされたビット深度によって示されるビットの前記数が1と16との間である、C6に記載の装置。
[C8] 前記装置が、デスクトップコンピュータ、ノートブックコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、セットトップボックス、電話ハンドセット、スマートフォン、スマートパッド、テレビ、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、およびビデオストリーミングデバイスのうちの1つまたは複数からなる群から選択される、C1に記載の装置。
[C9] ビデオ情報を復号するための装置であって、
ビデオ情報を記憶するように構成されたメモリと、
前記メモリに動作可能に結合され、
1つまたは複数のビュー識別子値をシグナリングするために使用されるビットの数を示すビット深度インジケータを受信して、ここにおいて、前記1つまたは複数のビュー識別子値のそれぞれが、復号されるべき1つまたは複数のレイヤのうちの1つに関連付けられる、
前記1つまたは複数のビュー識別子値のそれぞれを、前記示された数のビットを有する値として受信するように構成されたコンピューティングハードウェアとを備える、装置。
[C10] 前記ビット深度インジケータによって示されるビットの前記数が1と16との間である、C9に記載の装置。
[C11] 前記ビット深度インジケータと前記1つまたは複数のビュー識別子値とがVPS内で受信される、C9に記載の装置。
[C12] 前記装置が、デスクトップコンピュータ、ノートブックコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、セットトップボックス、電話ハンドセット、スマートフォン、スマートパッド、テレビ、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、およびビデオストリーミングデバイスのうちの1つまたは複数からなる群から選択される、C9に記載の装置。
[C13] ビュー識別子ビット深度をシグナリングする方法であって、
シグナリングするための1つまたは複数のビュー識別子のビット深度を決定することと、ここにおいて、前記1つまたは複数のビュー識別子のそれぞれが符号化されるべきレイヤに関連付けられる、
ビットストリーム内で前記1つまたは複数のビュー識別子の前記ビット深度をシグナリングすることとを備える、方法。
[C14] 符号化されるべきビューの最大数に基づいて、前記1つまたは複数のビュー識別子の前記ビット深度を決定することをさらに備える、C13に記載の方法。
[C15] 前記1つまたは複数のビュー識別子の前記ビット深度が、ビデオパラメータセット(VPS)内でシグナリングされる、C13に記載の方法。
[C16] 前記ビットストリーム内でビュー識別子を明示的にシグナリングするかどうかをシグナリングすることをさらに備える、C13に記載の方法。
[C17] 前記ビットストリーム内でビュー識別子を明示的にシグナリングするかどうかを前記シグナリングすることが、ビュー識別子明示的シグナリングフラグをシグナリングすることを備える、C16に記載の方法。
[C18] 前記コンピューティングハードウェアが、前記シグナリングされたビット深度によって示されるビットの前記数を使用して、前記ビュー識別子をシグナリングするようにさらに構成される、C13に記載の方法。
[C19] 前記シグナリングされたビット深度によって示されるビットの前記数が1と16との間である、C18に記載の方法。
[C20] ビデオ情報を復号する方法であって、
1つまたは複数のビュー識別子値をシグナリングするために使用されるビットの数を示すビット深度インジケータを受信することと、ここにおいて、前記1つまたは複数のビュー識別子値のそれぞれが、復号されるべき1つまたは複数のレイヤに関連付けられる、
前記1つまたは複数のビュー識別子値のそれぞれを、前記示された数のビットを有する値として受信することとを備える、方法。
[C21] 前記ビット深度インジケータによって示されるビットの前記数が1と16との間である、C20に記載の方法。
[C22] 前記ビット深度インジケータと前記1つまたは複数のビュー識別子値とがVPS内で受信される、C20に記載の方法。
[C23] コンピューティングハードウェアを備えるプロセッサ上で実行されると、前記プロセッサに、
1つまたは複数のビュー識別子値をシグナリングするために使用されるビットの数を示すビット深度インジケータを受信することと、ここにおいて、前記1つまたは複数のビュー識別子値のそれぞれが、復号されるべき1つまたは複数のレイヤのうちの1つに関連付けられる、
前記1つまたは複数のビュー識別子値のそれぞれを、前記示された数のビットを有する値として受信することとを行わせる命令を備える、非一時的コンピュータ可読媒体。
[C24] 前記ビット深度インジケータによって示されるビットの前記数が1と16との間である、C23に記載のコンピュータ可読媒体。
[C25] 前記ビット深度インジケータと前記1つまたは複数のビュー識別子値とがVPS内で受信される、C23に記載のコンピュータ可読媒体。
[C26] ビデオ情報をコーディングするように構成された装置であって、
1つまたは複数のビュー識別子値をシグナリングするために使用されるビットの数を示すビット深度インジケータを受信するための手段と、ここにおいて、前記1つまたは複数のビュー識別子値のそれぞれが、復号されるべき1つまたは複数のレイヤのうちの1つに関連付けられる、
前記1つまたは複数のビュー識別子値のそれぞれを、前記示された数のビットを有する値として受信するための手段とを備える、装置。
[C27] 前記ビット深度インジケータによって示されるビットの前記数が1と16との間である、C26に記載の装置。
[C28] 前記ビット深度インジケータと前記1つまたは複数のビュー識別子値とがVPS内で受信される、C26に記載の装置。