図3は、本開示の一実施形態による、通信システム(300)の簡略ブロック図を示している。通信システム(300)は、例えば、ネットワーク(350)を介して互いに通信することができる複数の端末デバイスを含む。例えば、通信システム(300)は、ネットワーク(350)を介して相互接続された端末デバイス(310)および(320)の第1のペアを含む。図3の例では、端末デバイス(310)および(320)の第1のペアは、データの単方向送信を実施する。例えば、端末デバイス(310)は、ネットワーク(350)を介して他の端末デバイス(320)に送信するためのビデオデータ(例えば、端末デバイス(310)によってキャプチャされたビデオピクチャのストリーム)をコーディングしてもよい。エンコーディングされたビデオデータは、1つまたは複数のコーディングされたビデオビットストリームの形式で送信することができる。端末デバイス(320)は、ネットワーク(350)からコーディングされたビデオデータを受信し、コーディングされたビデオデータをデコーディングしてビデオピクチャを再構成し、再構成されたビデオデータに従ってビデオピクチャを表示することができる。単方向データ送信は、メディア提供用途などにおいて一般的であり得る。
別の例では、通信システム(300)は、例えば、ビデオ会議中に発生する可能性があるコーディングされたビデオデータの双方向送信を実施する端末デバイス(330)および(340)の第2のペアを含む。データの双方向送信の場合、一例では、端末デバイス(330)および(340)の各端末デバイスは、ネットワーク(350)を介して端末デバイス(330)および(340)のうちの他の端末デバイスに送信するためのビデオデータ(例えば、端末デバイスによってキャプチャされたビデオピクチャのストリーム)をコーディングしてもよい。端末デバイス(330)および(340)の各端末デバイスはまた、端末デバイス(330)および(340)のうちの他の端末デバイスによって送信されたコーディングされたビデオデータを受信することができ、コーディングされたビデオデータをデコーディングしてビデオピクチャを再構成することができ、再構成されたビデオデータに従ってアクセス可能な表示デバイスにビデオピクチャを表示することができる。
図3の例では、端末デバイス(310)、(320)、(330)、および(340)は、サーバ、パーソナルコンピュータ、およびスマートフォンとして示される場合があるが、本開示の原理はそのように限定されなくてもよい。本開示の実施形態は、ラップトップコンピュータ、タブレットコンピュータ、メディアプレーヤ、および/または専用ビデオ会議機器を用いる用途を見出す。ネットワーク(350)は、例えば有線(配線)および/または無線通信ネットワークを含む、端末デバイス(310)、(320)、(330)、および(340)間でコーディングされたビデオデータを伝達する任意の数のネットワークを表す。通信ネットワーク(350)は、回路交換チャネルおよび/またはパケット交換チャネルでデータを交換し得る。代表的なネットワークには、電気通信ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、および/またはインターネットが含まれる。本説明の目的のために、ネットワーク(350)のアーキテクチャおよびトポロジは、本明細書で以下に説明されない限り、本開示の動作にとって重要ではない場合がある。
図4は、開示された主題についての用途の一例として、ストリーミング環境におけるビデオエンコーダおよびビデオデコーダの配置を示している。開示された主題は、例えば、ビデオ会議、デジタルTV、CD、DVD、メモリスティックなどを含むデジタル媒体への圧縮ビデオの記憶などを含む、他のビデオ対応用途にも等しく適用可能であり得る。
ストリーミングシステムは、例えば圧縮されていないビデオピクチャのストリーム(402)を作成するビデオソース(401)、例えばデジタルカメラを含むことができるキャプチャサブシステム(413)を含んでもよい。一例では、ビデオピクチャのストリーム(402)は、デジタルカメラによって撮影されたサンプルを含む。エンコーディングされたビデオデータ(404)(またはコーディングされたビデオビットストリーム)と比較したときに多いデータ量を強調するために太い線として図示されたビデオピクチャのストリーム(402)は、ビデオソース(401)に結合されたビデオエンコーダ(403)を含む電子デバイス(420)によって処理することができる。ビデオエンコーダ(403)は、以下でより詳細に説明されるように、開示された主題の態様を可能にするか、または実装するハードウェア、ソフトウェア、またはこれらの組み合わせを含むことができる。ビデオピクチャのストリーム(402)と比較したときに少ないデータ量を強調するために細い線として図示されたエンコーディングされたビデオデータ(404)(またはエンコーディングされたビデオビットストリーム)は、将来の使用のためにストリーミングサーバ(405)に記憶することができる。図4のクライアントサブシステム(406)および(408)などの1つまたは複数のストリーミングクライアントサブシステムは、ストリーミングサーバ(405)にアクセスし、エンコーディングされたビデオデータ(404)のコピー(407)および(409)を取り出すことができる。クライアントサブシステム(406)は、例えば、電子デバイス(430)内のビデオデコーダ(410)を含むことができる。ビデオデコーダ(410)は、エンコーディングされたビデオデータの入力コピー(407)をデコーディングし、ディスプレイ(412)(例えば、表示画面)または他のレンダリングデバイス(図示せず)上にレンダリングされ得るビデオピクチャの出力ストリーム(411)を作成する。いくつかのストリーミングシステムでは、エンコーディングされたビデオデータ(404)、(407)、および(409)(例えば、ビデオビットストリーム)は、特定のビデオコーディング/圧縮規格に従ってエンコーディングすることができる。それらの規格の例には、ITU-T勧告H.265が含まれる。一例では、開発中のビデオコーディング規格は、多用途ビデオコーディング(VVC)として非公式に知られている。開示された主題は、VVCの関連で使用されてもよい。
電子デバイス(420)および(430)は、他の構成要素(図示せず)を含むことができることに留意されたい。例えば、電子デバイス(420)はビデオデコーダ(図示せず)を含むことができ、電子デバイス(430)もビデオエンコーダ(図示せず)を含むことができる。
図5は、本開示の一実施形態による、ビデオデコーダ(510)のブロック図を示す。ビデオデコーダ(510)は、電子デバイス(530)に含まれ得る。電子デバイス(530)は、受信機(531)(例えば、受信回路)を含むことができる。ビデオデコーダ(510)は、図4の例のビデオデコーダ(410)の代わりに使用することができる。
受信機(531)は、ビデオデコーダ(510)によってデコーディングされる1つまたは複数のコーディングされたビデオシーケンスを受信してもよく、同じまたは別の実施形態では、一度に1つのコーディングされたビデオシーケンスを受信してもよく、各コーディングされたビデオシーケンスのデコーディングは、他のコーディングされたビデオシーケンスから独立している。コーディングされたビデオシーケンスはチャネル(501)から受信されてもよく、チャネル(501)は、エンコーディングされたビデオデータを記憶する記憶デバイスへのハードウェア/ソフトウェアリンクであり得る。受信機(531)は、それらのそれぞれの使用エンティティ(図示せず)に転送され得る他のデータ、例えば、コーディングされたオーディオデータおよび/または補助データストリームと共にエンコーディングされたビデオデータを受信することができる。受信機(531)は、コーディングされたビデオシーケンスを他のデータから分離し得る。ネットワークジッタに対抗するために、受信機(531)とエントロピーデコーダ/パーサ(520)(以降、「パーサ(520)」)との間にバッファメモリ(515)が結合され得る。特定の用途では、バッファメモリ(515)は、ビデオデコーダ(510)の一部である。他の用途では、バッファメモリ(515)はビデオデコーダ(510)の外部にあり得る(図示せず)。さらに他の用途では、例えばネットワークジッタに対抗するために、ビデオデコーダ(510)の外部にバッファメモリ(図示せず)が存在し、加えて、例えばプレイアウトタイミングを処理するために、ビデオデコーダ(510)の内部に別のバッファメモリ(515)が存在し得る。受信機(531)が十分な帯域幅および可制御性のストア/フォワードデバイスから、またはアイソシンクロナスネットワークからデータを受信しているとき、バッファメモリ(515)は不要な場合があり、または小さくすることができる。インターネットなどのベストエフォート型パケットネットワークでの使用の場合、バッファメモリ(515)は必要な場合があり、比較的大きくすることができ、適応サイズのものであることが有利である可能性があり、オペレーティングシステムまたはビデオデコーダ(510)の外部の同様の要素(図示せず)に少なくとも部分的に実装されてもよい。
ビデオデコーダ(510)は、コーディングされたビデオシーケンスからシンボル(521)を再構成するためにパーサ(520)を含み得る。これらのシンボルのカテゴリには、ビデオデコーダ(510)の動作を管理するために使用される情報、および潜在的に、電子デバイス(530)の不可欠な部分ではないが、図5に示されたように、電子デバイス(530)に結合することができるレンダリングデバイス(512)(例えば、表示画面)などのレンダリングデバイスを制御するための情報が含まれる。レンダリングデバイスに関する制御情報は、補足拡張情報(SEI)メッセージまたはビデオユーザビリティ情報(VUI)パラメータセットフラグメント(図示せず)の形式であってもよい。パーサ(520)は、受信されたコーディングされたビデオシーケンスをパース/エントロピーデコーディングし得る。コーディングされたビデオシーケンスのコーディングは、ビデオコーディング技術または規格に従うことができ、コンテキスト依存性ありまたはなしの可変長コーディング、ハフマンコーディング、算術コーディングなどを含む様々な原理に従うことができる。パーサ(520)は、グループに対応する少なくとも1つのパラメータに基づいて、コーディングされたビデオシーケンスから、ビデオデコーダ内のピクセルのサブグループのうちの少なくとも1つのサブグループパラメータのセットを抽出し得る。サブグループは、グループオブピクチャ(GOP)、ピクチャ、タイル、スライス、マクロブロック、コーディングユニット(CU)、ブロック、変換ユニット(TU)、予測ユニット(PU)などを含むことができる。パーサ(520)はまた、コーディングされたビデオシーケンスから、変換係数、量子化器パラメータ値、動きベクトルなどの情報を抽出することができる。
パーサ(520)は、シンボル(521)を作成するために、バッファメモリ(515)から受信したビデオシーケンスに対してエントロピーデコーディング/パース動作を実施し得る。
シンボル(521)の再構成は、コーディングされたビデオピクチャまたはその部分のタイプ(インターピクチャおよびイントラピクチャ、インターブロックおよびイントラブロックなど)、ならびに他の要因に応じて、複数の異なるユニットを関与させることができる。どのユニットがどのように関与するかは、パーサ(520)によってコーディングされたビデオシーケンスからパースされたサブグループ制御情報によって制御されることが可能である。パーサ(520)と以下の複数のユニットとの間のそのようなサブグループ制御情報の流れは、明確にするために図示されていない。
既に述べられた機能ブロック以外に、ビデオデコーダ(510)は、以下で説明されるように、いくつかの機能ユニットに概念的に細分化することができる。商業的な制約の下で動作する実際の実施態様では、これらのユニットの多くは互いに密接に相互作用し、互いに、少なくとも部分的に統合され得る。しかしながら、開示された主題を説明する目的で、以下の機能ユニットに概念的に細分化することが適切である。
第1のユニットは、スケーラ/逆変換ユニット(551)である。スケーラ/逆変換ユニット(551)は、量子化変換係数、ならびに、どの変換を使用するか、ブロックサイズ、量子化係数、量子化スケーリング行列などを含む制御情報を、パーサ(520)からシンボル(521)として受信する。スケーラ/逆変換ユニット(551)は、アグリゲータ(555)に入力することができるサンプル値を含むブロックを出力することができる。
場合によっては、スケーラ/逆変換ユニット(551)の出力サンプルは、イントラコーディングされたブロック、すなわち、以前に再構成されたピクチャからの予測情報を使用していないが、現在のピクチャの以前に再構成された部分からの予測情報を使用することができるブロックに関係し得る。そのような予測情報は、イントラピクチャ予測ユニット(552)によって提供することができる。場合によっては、イントラピクチャ予測ユニット(552)は、現在のピクチャバッファ(558)からフェッチされた周囲の既に再構成された情報を使用して、再構成中のブロックと同じサイズおよび形状のブロックを生成する。現在のピクチャバッファ(558)は、例えば、部分的に再構成された現在のピクチャおよび/または完全に再構成された現在のピクチャをバッファリングする。アグリゲータ(555)は、場合によっては、サンプルごとに、イントラ予測ユニット(552)が生成した予測情報を、スケーラ/逆変換ユニット(551)によって提供される出力サンプル情報に追加する。
他の場合には、スケーラ/逆変換ユニット(551)の出力サンプルは、インターコーディングされ、潜在的に動き補償されたブロックに関係する可能性がある。そのような場合、動き補償予測ユニット(553)は、参照ピクチャメモリ(557)にアクセスし、予測に使用されるサンプルをフェッチすることができる。ブロックに関係するシンボル(521)に従ってフェッチされたサンプルを動き補償した後、これらのサンプルは、出力サンプル情報を生成するために、アグリゲータ(555)によってスケーラ/逆変換ユニット(551)の出力に追加することができる(この場合、残差サンプルまたは残差信号と呼ばれる)。動き補償予測ユニット(553)が予測サンプルをフェッチする参照ピクチャメモリ(557)内のアドレスは、例えば、X、Y、および参照ピクチャ成分を有することができるシンボル(521)の形式で動き補償予測ユニット(553)に利用可能な動きベクトルによって制御することができる。動き補償はまた、サブサンプルの正確な動きベクトルが使用されているときに参照ピクチャメモリ(557)からフェッチされたサンプル値の補間、動きベクトル予測メカニズムなどを含むことができる。
アグリゲータ(555)の出力サンプルは、ループフィルタユニット(556)において様々なループフィルタリング技法を受けることができる。ビデオ圧縮技術は、コーディングされたビデオシーケンス(コーディングされたビデオビットストリームとも呼ばれる)に含まれるパラメータによって制御され、パーサ(520)からのシンボル(521)としてループフィルタユニット(556)に利用可能とされるインループフィルタ技術を含むことができるが、コーディングされたピクチャまたはコーディングされたビデオシーケンスの(デコーディング順で)以前の部分のデコーディング中に取得されたメタ情報に応答することもでき、以前に再構成されループフィルタリングされたサンプル値に応答することもできる。
ループフィルタユニット(556)の出力は、レンダリングデバイス(512)に出力されるだけでなく、将来のインターピクチャ予測で使用するために参照ピクチャメモリ(557)に記憶することもできるサンプルストリームであり得る。
特定のコーディングされたピクチャは、完全に再構成されると、将来の予測のための参照ピクチャとして使用することができる。例えば、現在のピクチャに対応するコーディングされたピクチャが完全に再構成され、コーディングされたピクチャが(例えば、パーサ(520)によって)参照ピクチャとして識別されると、現在のピクチャバッファ(558)は、参照ピクチャメモリ(557)の一部になることができ、次のコーディングされたピクチャの再構成を開始する前に未使用の現在のピクチャバッファを再割り当てすることができる。
ビデオデコーダ(510)は、ITU-T Rec.H.265などの規格における所定のビデオ圧縮技術に従ってデコーディング動作を実施し得る。コーディングされたビデオシーケンスは、コーディングされたビデオシーケンスが、ビデオ圧縮技術または規格の構文とビデオ圧縮技術または規格に文書化されているプロファイルの両方を順守しているという意味で、使用されているビデオ圧縮技術または規格によって指定されている構文に準拠し得る。具体的には、プロファイルは、ビデオ圧縮技術または規格で利用可能なすべてのツールから、そのプロファイル下で使用するために利用可能な唯一のツールとしていくつかのツールを選択し得る。また、準拠するために必要なことは、コーディングされたビデオシーケンスの複雑さが、ビデオ圧縮技術または規格のレベルによって定義された範囲内にあることであり得る。場合によっては、レベルは、最大ピクチャサイズ、最大フレームレート、最大再構成サンプルレート(例えば毎秒メガサンプルで測定される)、最大参照ピクチャサイズなどを制限する。レベルによって設定された制限は、場合によっては、仮想参照デコーダ(HRD)の仕様、およびコーディングされたビデオシーケンスでシグナリングされたHRDバッファ管理のためのメタデータによってさらに制限され得る。
一実施形態では、受信機(531)は、エンコーディングされたビデオと共に追加の(冗長な)データを受信し得る。追加のデータは、コーディングされたビデオシーケンスの一部として含まれ得る。追加のデータは、データを適切にデコーディングするために、かつ/または元のビデオデータをより正確に再構成するために、ビデオデコーダ(510)によって使用されてもよい。追加のデータは、例えば、時間、空間、または信号対雑音比(SNR)のエンハンスメントレイヤ、冗長スライス、冗長ピクチャ、前方誤り訂正コードなどの形式であり得る。
図6は、本開示の一実施形態による、ビデオエンコーダ(603)のブロック図を示す。ビデオエンコーダ(603)は、電子デバイス(620)に含まれる。電子デバイス(620)は、送信機(640)(例えば、送信回路)を含む。ビデオエンコーダ(603)は、図4の例のビデオエンコーダ(403)の代わりに使用することができる。
ビデオエンコーダ(603)は、ビデオエンコーダ(603)によってコーディングされるビデオ画像をキャプチャし得る(図6の例では電子デバイス(620)の一部ではない)ビデオソース(601)からビデオサンプルを受信することができる。別の例では、ビデオソース(601)は、電子デバイス(620)の一部である。
ビデオソース(601)は、任意の適切なビット深度(例えば、8ビット、10ビット、12ビット、…)、任意の色空間(例えば、BT.601 Y CrCB、RGB、…)および任意の適切なサンプリング構造(例えば、Y CrCb 4:2:0、Y CrCb 4:4:4)であり得るデジタルビデオサンプルストリームの形式で、ビデオエンコーダ(603)によってコーディングされるソースビデオシーケンスを提供することができる。メディアサービングシステムでは、ビデオソース(601)は、以前に準備されたビデオを記憶する記憶デバイスであり得る。ビデオ会議システムでは、ビデオソース(601)は、ビデオシーケンスとしてローカル画像情報をキャプチャするカメラであり得る。ビデオデータは、順番に見たときに動きを与える複数の個々のピクチャとして提供され得る。ピクチャ自体は、ピクセルの空間配列として編成することができ、各ピクセルは、使用中のサンプリング構造、色空間などに応じて、1つまたは複数のサンプルを含み得る。当業者は、ピクセルとサンプルとの間の関係を容易に理解することができる。以下の説明では、サンプルに重点を置いている。
一実施形態によれば、ビデオエンコーダ(603)は、リアルタイムで、または用途によって必要とされる任意の他の時間制約の下で、ソースビデオシーケンスのピクチャをコーディングされたビデオシーケンス(643)にコーディングし、圧縮し得る。適切なコーディング速度を強制することが、コントローラ(650)の1つの機能である。いくつかの実施形態では、コントローラ(650)は、以下で説明される他の機能ユニットを制御し、他の機能ユニットに機能的に結合される。明確にするために、結合は図示されていない。コントローラ(650)によって設定されるパラメータには、レート制御関連パラメータ(ピクチャスキップ、量子化器、レート歪み最適化技法のラムダ値など)、ピクチャサイズ、グループオブピクチャ(GOP)レイアウト、最大動きベクトル検索範囲などが含まれ得る。コントローラ(650)は、特定のシステム設計のために最適化されたビデオエンコーダ(603)に関係する他の適切な機能を有するように構成することができる。
いくつかの実施形態では、ビデオエンコーダ(603)は、コーディングループで動作するように構成される。過度に簡略化された説明として、一例では、コーディングループは、ソースコーダ(630)(例えば、コーディングされる入力ピクチャ、および参照ピクチャに基づいて、シンボルストリームなどのシンボルを作成する役割を担う)と、ビデオエンコーダ(603)に組み込まれた(ローカル)デコーダ(633)とを含むことができる。デコーダ(633)は、(リモート)デコーダもまた作成するのと同様の方法でサンプルデータを作成するためにシンボルを再構成する(シンボルとコーディングされたビデオビットストリームとの間の圧縮は、開示された主題で考慮されるビデオ圧縮技術において可逆であるため)。再構成されたサンプルストリーム(サンプルデータ)は、参照ピクチャメモリ(634)に入力される。シンボルストリームのデコーディングは、デコーダの場所(ローカルまたはリモート)に関係なくビットイグザクトな結果につながるので、参照ピクチャメモリ(634)内のコンテンツも、ローカルエンコーダとリモートエンコーダとの間でビットイグザクトである。言い換えれば、エンコーダの予測部分は、デコーディング中に予測を使用するときにデコーダが「見る」のと全く同じサンプル値を参照ピクチャサンプルとして「見る」。この参照ピクチャ同期性の基本原理(例えばチャネルエラーがあることにより同期性を維持することができない場合、結果として生じるドリフト)は、いくつかの関連技術においても使用される。
「ローカル」デコーダ(633)の動作は、図5と共に上記で詳細に既に記載されている、ビデオデコーダ(510)などの「リモート」デコーダの動作と同じであり得る。図5も簡単に参照すると、しかしながら、シンボルが利用可能であり、エントロピーコーダ(645)およびパーサ(520)によるコーディングされたビデオシーケンスへのシンボルのエンコーディング/デコーディングは可逆であり得るので、バッファメモリ(515)を含むビデオデコーダ(510)のエントロピーデコーディング部分、およびパーサ(520)は、ローカルデコーダ(633)に完全に実装されない場合もある。
一実施形態では、デコーダに存在するパース/エントロピーデコーディングを除くデコーダ技術が、対応するエンコーダに、同一または実質的に同一の機能的形式で存在する。したがって、開示された主題は、デコーダの動作に焦点を当てている。エンコーダ技術の説明は、包括的に記載されたデコーダ技術の逆であるため、省略することができる。特定のエリアにおいて、より詳細な説明が以下に提供される。
動作中、いくつかの例では、ソースコーダ(630)は、「参照ピクチャ」として指定されたビデオシーケンスからの1つまたは複数の以前にコーディングされたピクチャを参照して予測的に入力ピクチャをコーディングする、動き補償予測コーディングを実施することができる。このようにして、コーディングエンジン(632)は、入力ピクチャのピクセルブロックと、入力ピクチャへの予測参照として選択され得る参照ピクチャのピクセルブロックとの間の差をコーディングする。
ローカルビデオデコーダ(633)は、ソースコーダ(630)によって作成されたシンボルに基づいて、参照ピクチャとして指定され得るピクチャのコーディングされたビデオデータをデコーディングすることができる。コーディングエンジン(632)の動作は、有利なことに、非可逆プロセスであってもよい。コーディングされたビデオデータが(図6には示されていない)ビデオデコーダでデコーディングされ得るとき、再構成されたビデオシーケンスは、典型的には、いくつかの誤差を伴うソースビデオシーケンスのレプリカであり得る。ローカルビデオデコーダ(633)は、参照ピクチャに対してビデオデコーダによって実施され得るデコーディングプロセスを複製し、再構成された参照ピクチャが参照ピクチャメモリ(634)に記憶されるようにすることができる。このようにして、ビデオエンコーダ(603)は、(送信エラーがない)遠端ビデオデコーダによって取得される再構成された参照ピクチャとして共通のコンテンツを有する、再構成された参照ピクチャのコピーをローカルに記憶することができる。
予測器(635)は、コーディングエンジン(632)のための予測検索を実施することができる。すなわち、コーディングされる新しいピクチャの場合、予測器(635)は、新しいピクチャのための適切な予測参照として役立つことができる、(候補参照ピクセルブロックとしての)サンプルデータまたは参照ピクチャ動きベクトル、ブロック形状などの特定のメタデータを求めて、参照ピクチャメモリ(634)を検索することができる。予測器(635)は、適切な予測参照を見つけるために、ピクセルブロックごとにサンプルブロックに対して動作することができる。場合によっては、予測器(635)によって取得された検索結果によって決定されるように、入力ピクチャは、参照ピクチャメモリ(634)に記憶された複数の参照ピクチャから引き出された予測参照を有することができる。
コントローラ(650)は、例えば、ビデオデータをエンコーディングするために使用されるパラメータおよびサブグループパラメータの設定を含む、ソースコーダ(630)のコーディング動作を管理することができる。
すべての前述の機能ユニットの出力は、エントロピーコーダ(645)内でエントロピーコーディングを受けることができる。エントロピーコーダ(645)は、ハフマンコーディング、可変長コーディング、算術コーディングなどの技術に従ってシンボルを可逆圧縮することによって、様々な機能ユニットによって生成されたシンボルをコーディングされたビデオシーケンスに変換する。
送信機(640)は、エントロピーコーダ(645)によって作成されたコーディングされたビデオシーケンスをバッファリングして通信チャネル(660)を介した送信の準備をすることができ、通信チャネル(660)は、エンコーディングされたビデオデータを記憶する記憶デバイスへのハードウェア/ソフトウェアリンクであってもよい。送信機(640)は、ビデオエンコーダ(603)からのコーディングされたビデオデータを、送信される他のデータ、例えば、コーディングされたオーディオデータおよび/または補助データストリーム(ソースは図示されていない)とマージすることができる。
コントローラ(650)は、ビデオエンコーダ(603)の動作を管理することができる。コーディング中、コントローラ(650)は、各コーディングされたピクチャに特定のコーディングされたピクチャタイプを割り当てることができ、これは、それぞれのピクチャに適用され得るコーディング技法に影響を及ぼす場合がある。例えば、ピクチャは、以下のピクチャタイプのうちの1つとして割り当てられることが多い。
イントラピクチャ(Iピクチャ)は、予測ソースとしてシーケンス内の任意の他のピクチャを使用せずにコーディングおよびデコーディングされ得るピクチャであり得る。いくつかのビデオコーデックは、例えば独立したデコーダリフレッシュ(「IDR」)ピクチャを含む、異なるタイプのイントラピクチャを可能にする。当業者は、Iピクチャのそれらの変形形態、ならびにそれぞれの用途および特徴を認識している。
予測ピクチャ(Pピクチャ)は、イントラ予測またはインター予測を使用してコーディングされてデコーディングされてもよいピクチャであってもよく、これらのイントラ予測またはインター予測は、各ブロックのサンプル値を予測するために最大で1つの動きベクトルおよび1つの参照インデックスを使用する。
双方向予測ピクチャ(Bピクチャ)は、イントラ予測またはインター予測を使用してコーディングされてデコーディングされてもよいピクチャであってもよく、これらのイントラ予測またはインター予測は、各ブロックのサンプル値を予測するために最大で2つの動きベクトルおよび2つの参照インデックスを使用する。同様に、複数予測ピクチャは、単一のブロックの再構成のために3つ以上の参照ピクチャおよび関連付けられたメタデータを使用することができる。
ソースピクチャは、一般に、複数のサンプルブロック(例えば、各々4×4、8×8、4×8、または16×16のサンプルのブロック)に空間的に細分化され、ブロックごとにコーディングされてもよい。ブロックは、ブロックのそれぞれのピクチャに適用されるコーディング割り当てによって決定されるように、他の(既にコーディングされた)ブロックを参照して予測的にコーディングされ得る。例えば、Iピクチャのブロックは、非予測的にコーディングされてもよく、またはそれらは、同じピクチャの既にコーディングされたブロックを参照して予測的にコーディングされてもよい(空間予測もしくはイントラ予測)。Pピクチャのピクセルブロックは、1つの以前にコーディングされた参照ピクチャを参照して、空間予測を介して、または時間予測を介して予測的にコーディングされてもよい。Bピクチャのブロックは、1つまたは2つの以前にコーディングされた参照ピクチャを参照して、空間予測を介して、または時間予測を介して予測的にコーディングされてもよい。
ビデオエンコーダ(603)は、ITU-T Rec.H.265などの所定のビデオコーディング技術または規格に従ってコーディング動作を実施することができる。その動作において、ビデオエンコーダ(603)は、入力ビデオシーケンスにおける時間および空間の冗長性を利用する予測コーディング動作を含む、様々な圧縮動作を実施することができる。したがって、コーディングされたビデオデータは、使用されているビデオコーディング技術または規格によって指定された構文に準拠し得る。
一実施形態では、送信機(640)は、エンコーディングされたビデオと共に追加のデータを送信することができる。ソースコーダ(630)は、コーディングされたビデオシーケンスの一部としてそのようなデータを含んでもよい。追加のデータは、時間/空間/SNRエンハンスメントレイヤ、冗長ピクチャおよびスライス、SEIメッセージ、VUIパラメータセットフラグメントなどの他の形式の冗長データを含み得る。
ビデオは、時系列で複数のソースピクチャ(ビデオピクチャ)としてキャプチャされ得る。(イントラ予測と省略されることが多い)イントラピクチャ予測は、所与のピクチャ内の空間の相関関係を利用し、インターピクチャ予測は、ピクチャ間の(時間または他の)相関関係を利用する。一例では、現在のピクチャと呼ばれる、エンコーディング/デコーディング中の特定のピクチャがブロックに分割される。現在のピクチャ内のブロックが、ビデオ内の以前にコーディングされた、まだバッファリングされている参照ピクチャ内の参照ブロックと同様であるとき、現在のピクチャ内のブロックは、動きベクトルと呼ばれるベクトルによってコーディングされることが可能である。動きベクトルは、参照ピクチャ内の参照ブロックを指し、複数の参照ピクチャが使用されている場合、参照ピクチャを識別する第3の次元を有することができる。
いくつかの実施形態では、インターピクチャ予測で双予測技法を使用してもよい。双予測技法によれば、両方ともビデオ内の現在のピクチャよりもデコーディング順序で前にある(が、それぞれ、表示順序で過去および将来であり得る)第1の参照ピクチャおよび第2の参照ピクチャなどの2つの参照ピクチャが使用される。現在のピクチャ内のブロックは、第1の参照ピクチャ内の第1の参照ブロックを指す第1の動きベクトル、および第2の参照ピクチャ内の第2の参照ブロックを指す第2の動きベクトルによってコーディングされることが可能である。ブロックは、第1の参照ブロックと第2の参照ブロックの組み合わせによって予測することができる。
さらに、コーディング効率を改善するために、インターピクチャ予測でマージモード技法を使用することができる。
本開示のいくつかの実施形態によれば、インターピクチャ予測およびイントラピクチャ予測などの予測は、ブロック単位で実施される。例えば、HEVC規格によれば、ビデオピクチャのシーケンス内のピクチャは、圧縮のためにコーディングツリーユニット(CTU)に分割され、ピクチャ内のCTUは、64×64ピクセル、32×32ピクセル、または16×16ピクセルなどの同じサイズを有する。一般に、CTUは3つのコーディングツリーブロック(CTB)を含み、それらは1つの輝度CTBおよび2つの彩度CTBである。各CTUは、1つまたは複数のコーディングユニット(CU)に再帰的に四分木分割することができる。例えば、64×64ピクセルのCTUは、1つの64×64ピクセルのCU、または4つの32×32ピクセルのCU、または16個の16×16ピクセルのCUに分割することができる。一例では、インター予測タイプまたはイントラ予測タイプなどのCUの予測タイプを決定するために、各CUが分析される。CUは、時間および/または空間の予測可能性に応じて、1つまたは複数の予測ユニット(PU)に分割される。一般に、各PUは、1つの輝度予測ブロック(PB)と、2つの彩度PBとを含む。一実施形態では、コーディング(エンコーディング/デコーディング)における予測動作は、予測ブロック単位で実施される。予測ブロックの一例として輝度予測ブロックを使用すると、予測ブロックは、8×8ピクセル、16×16ピクセル、8×16ピクセル、16×8ピクセルなどのピクセルの値(例えば、輝度値)の行列を含む。
図7は、本開示の別の実施形態による、ビデオエンコーダ(703)の図を示す。ビデオエンコーダ(703)は、ビデオピクチャのシーケンス内の現在のビデオピクチャ内のサンプル値の処理ブロック(例えば、予測ブロック)を受信し、処理ブロックをコーディングされたビデオシーケンスの一部であるコーディングされたピクチャにエンコーディングするように構成される。一例では、ビデオエンコーダ(703)は、図4の例のビデオエンコーダ(403)の代わりに使用される。
HEVCの例では、ビデオエンコーダ(703)は、8×8サンプルの予測ブロックなどの処理ブロック用のサンプル値の行列を受信する。ビデオエンコーダ(703)は、処理ブロックが、例えば、レート歪み最適化を使用して、イントラモード、インターモード、または双予測モードを使用して最良にコーディングされるかどうかを決定する。処理ブロックがイントラモードでコーディングされるとき、ビデオエンコーダ(703)は、イントラ予測技法を使用して処理ブロックをコーディングされたピクチャにエンコーディングすることができ、処理ブロックがインターモードまたは双予測モードでコーディングされるとき、ビデオエンコーダ(703)は、それぞれ、インター予測技法または双予測技法を使用して処理ブロックをコーディングされたピクチャにエンコーディングすることができる。特定のビデオコーディング技術では、マージモードは、予測子の外側のコーディングされた動きベクトル成分の利点がない、動きベクトルが1つまたは複数の動きベクトル予測子から導出されるインターピクチャ予測サブモードであり得る。特定の他のビデオコーディング技術では、対象ブロックに適用可能な動きベクトル成分が存在してもよい。一例では、ビデオエンコーダ(703)は、処理ブロックのモードを決定するためにモード決定モジュール(図示せず)などの他の構成要素を含む。
図7の例では、ビデオエンコーダ(703)は、図7に示すように一緒に結合されたインターエンコーダ(730)、イントラエンコーダ(722)、残差計算器(723)、スイッチ(726)、残差エンコーダ(724)、汎用コントローラ(721)、およびエントロピーエンコーダ(725)を含む。
インターエンコーダ(730)は、現在のブロック(例えば、処理ブロック)のサンプルを受信し、ブロックを参照ピクチャ内の1つまたは複数の参照ブロック(例えば、以前のピクチャおよび後のピクチャ内のブロック)と比較し、インター予測情報(例えば、インターエンコーディング技法による冗長情報、動きベクトル、マージモード情報の記述)を生成し、任意の適切な技法を使用して、インター予測情報に基づいてインター予測結果(例えば、予測ブロック)を計算するように構成される。いくつかの例では、参照ピクチャは、エンコーディングされたビデオ情報に基づいてデコーディングされる、デコーディングされた参照ピクチャである。
イントラエンコーダ(722)は、現在のブロック(例えば、処理ブロック)のサンプルを受信し、場合によっては、ブロックを同じピクチャ内の既にコーディングされたブロックと比較し、変換後の量子化係数を生成し、場合によっては、イントラ予測情報(例えば、1つまたは複数のイントラエンコーディング技法によるイントラ予測方向情報)も生成するように構成される。一例では、イントラエンコーダ(722)はまた、同じピクチャ内のイントラ予測情報および参照ブロックに基づいて、イントラ予測結果(例えば、予測ブロック)を計算する。
汎用コントローラ(721)は、汎用制御データを決定し、汎用制御データに基づいてビデオエンコーダ(703)の他の構成要素を制御するように構成される。一例では、汎用コントローラ(721)は、ブロックのモードを決定し、モードに基づいて制御信号をスイッチ(726)に提供する。例えば、モードがイントラモードであるとき、汎用コントローラ(721)は、スイッチ(726)を制御して残差計算器(723)が使用するためのイントラモード結果を選択し、エントロピーエンコーダ(725)を制御してイントラ予測情報を選択し、ビットストリームにイントラ予測情報を含め、モードがインターモードであるとき、汎用コントローラ(721)は、スイッチ(726)を制御して残差計算器(723)が使用するためのインター予測結果を選択し、エントロピーエンコーダ(725)を制御してインター予測情報を選択し、ビットストリームにインター予測情報を含める。
残差計算器(723)は、受信ブロックと、イントラエンコーダ(722)またはインターエンコーダ(730)から選択された予測結果との間の差(残差データ)を計算するように構成される。残差エンコーダ(724)は、残差データをエンコーディングして変換係数を生成するために、残差データに基づいて動作するように構成される。一例では、残差エンコーダ(724)は、残差データを空間領域から周波数領域に変換し、変換係数を生成するように構成される。次いで、変換係数は、量子化変換係数を取得するために量子化処理を受ける。様々な実施形態において、ビデオエンコーダ(703)はまた、残差デコーダ(728)を含む。残差デコーダ(728)は、逆変換を実施し、デコーディングされた残差データを生成するように構成される。デコーディングされた残差データは、イントラエンコーダ(722)およびインターエンコーダ(730)によって適切に使用することができる。例えば、インターエンコーダ(730)は、デコーディングされた残差データおよびインター予測情報に基づいてデコーディングされたブロックを生成することができ、イントラエンコーダ(722)は、デコーディングされた残差データおよびイントラ予測情報に基づいてデコーディングされたブロックを生成することができる。デコーディングされたブロックは、デコーディングされたピクチャを生成するために適切に処理され、デコーディングされたピクチャは、メモリ回路(図示せず)にバッファリングされ、いくつかの例では参照ピクチャとして使用されることが可能である。
エントロピーエンコーダ(725)は、エンコーディングされたブロックを含むようにビットストリームをフォーマットするように構成される。エントロピーエンコーダ(725)は、HEVC規格などの適切な規格に従って様々な情報を含めるように構成される。一例では、エントロピーエンコーダ(725)は、ビットストリーム内に汎用制御データ、選択された予測情報(例えば、イントラ予測情報またはインター予測情報)、残差情報、および他の適切な情報を含めるように構成される。開示された主題によれば、インターモードまたは双予測モードのいずれかのマージサブモードでブロックをコーディングする場合、残差情報は存在しないことに留意されたい。
図8は、本開示の別の実施形態による、ビデオデコーダ(810)の図を示す。ビデオデコーダ(810)は、コーディングされたビデオシーケンスの一部であるコーディングされたピクチャを受信し、コーディングされたピクチャをデコーディングして再構成されたピクチャを生成するように構成される。一例では、ビデオデコーダ(810)は、図4の例のビデオデコーダ(410)の代わりに使用される。
図8の例では、ビデオデコーダ(810)は、図8に示すように一緒に結合されたエントロピーデコーダ(871)、インターデコーダ(880)、残差デコーダ(873)、再構成モジュール(874)、およびイントラデコーダ(872)を含む。
エントロピーデコーダ(871)は、コーディングされたピクチャから、コーディングされたピクチャが構成される構文要素を表す特定のシンボルを再構成するように構成することができる。そのようなシンボルは、例えば、(例えば、イントラモード、インターモード、双予測モード、マージサブモードまたは別のサブモードのうちの後者2つなどの)ブロックがコーディングされるモード、それぞれ、イントラデコーダ(872)またはインターデコーダ(880)による予測に使用される特定のサンプルまたはメタデータを識別することができる(例えば、イントラ予測情報またはインター予測情報などの)予測情報、例えば、量子化変換係数の形式の残差情報などを含むことができる。一例では、予測モードがインターモードまたは双予測モードであるとき、インター予測情報はインターデコーダ(880)に提供され、予測タイプがイントラ予測タイプであるとき、イントラ予測情報はイントラデコーダ(872)に提供される。残差情報は逆量子化を受けることができ、残差デコーダ(873)に提供される。
インターデコーダ(880)は、インター予測情報を受信し、インター予測情報に基づいてインター予測結果を生成するように構成される。
イントラデコーダ(872)は、イントラ予測情報を受信し、イントラ予測情報に基づいて予測結果を生成するように構成される。
残差デコーダ(873)は、逆量子化を実施して逆量子化変換係数を抽出し、逆量子化変換係数を処理し、残差を周波数領域から空間領域に変換するように構成される。残差デコーダ(873)はまた、(量子化器パラメータ(QP)を含めるために)特定の制御情報を必要とする場合があり、その情報は、エントロピーデコーダ(871)によって提供される場合がある(これは、少量の制御情報のみである可能性があるので、データパスは図示されていない)。
再構成モジュール(874)は、空間領域において、残差デコーダ(873)によって出力される残差と(場合によってインター予測モジュールまたはイントラ予測モジュールによって出力される)予測結果を組み合わせ、再構成されたピクチャの一部になり得る再構成されたブロックを形成するように構成され、再構成されたピクチャは、再構成されたビデオの一部になり得る。視覚的品質を改善するために、デブロッキング動作などの他の適切な動作を実施することができることに留意されたい。
ビデオエンコーダ(403)、(603)、および(703)、ならびにビデオデコーダ(410)、(510)、および(810)は、任意の適切な技法を使用して実装することができることに留意されたい。一実施形態では、ビデオエンコーダ(403)、(603)、および(703)、ならびにビデオデコーダ(410)、(510)、および(810)は、1つまたは複数の集積回路を使用して実装することができる。別の実施形態では、ビデオエンコーダ(403)、(603)、および(603)、ならびにビデオデコーダ(410)、(510)、および(810)は、ソフトウェア命令を実行する1つまたは複数のプロセッサを使用して実装することができる。
本開示の一実施形態によれば、ビットストリームは、1つまたは複数のコーディングされたビデオシーケンス(CVS)を含むことができる。CVSは、他のCVSとは独立してコーディングすることができる。各CVSは1つまたは複数のレイヤを含むことができ、各レイヤは、特定の品質(例えば、空間解像度)を有するビデオの表現、または例えば、深度マップ、透明度マップ、または斜視図としてのある構成要素の解釈属性の表現とすることができる。時間次元では、各CVSは、1つまたは複数のアクセスユニット(AU)を含むことができる。各AUは、同じ時間インスタンスに対応する異なるレイヤの1つまたは複数のピクチャを含むことができる。コーディングされたレイヤビデオシーケンス(CLVS)は、同じレイヤ内にピクチャユニットのシーケンスを含むことができるレイヤごとのCVSである。ビットストリームが複数のレイヤを有する場合、ビットストリーム内のCVSは、レイヤごとに1つまたは複数のCLVSを有することができる。
一実施形態では、CVSはAUのシーケンスを含み、AUのシーケンスは、デコーディング順で、イントラランダムアクセスポイント(IRAP)AUを含み、その後にIRAP AUではない0個以上のAUが続く。一例では、0個以上のAUは、IRAP AUである任意の後続のAUまでのすべての後続のAUを含むが、IRAP AUである任意の後続のAUは含まない。一例では、CLVSは、ピクチャのシーケンスと、CVSのベースレイヤの関連付けられた非ビデオコーディングレイヤ(VCL)ネットワーク抽象化レイヤ(NAL)ユニットとを含む。
本開示のいくつかの態様によれば、ビデオは、シングルビュービデオとマルチビュービデオに分類することができる。例えば、シングルビュービデオ(例えば、平面視ビデオ)は、視聴者にシーンのシングルビューを提供する2次元媒体である。マルチビュービデオは、シーンの複数の視点を提供することができ、視聴者に臨場感を提供することができる。一例では、3Dビデオは、人間の視聴者に対応する左ビューおよび右ビューなどの2つのビューを提供することができる。2つのビューは、異なる偏光を使用して同時にまたはほぼ同時に表示(提示)されてもよく、視聴者は、視聴者の目の各々がそれぞれのビューを受け取るように偏光眼鏡を着用してもよい。一例では、左ビューおよび右ビューは、異なる位置に位置する2つの異なるカメラによって取得される。
マルチビュービデオは、同時に複数のカメラを使用してシーンをキャプチャすることによって作成することができ、複数のカメラは、各カメラが1つの視点からシーンをキャプチャするように適切に位置する。複数のカメラは、複数の視点に対応する複数のビデオシーケンスをキャプチャすることができる。より多くのビューを提供するために、より多くのカメラを使用して、ビューに関連付けられた多数のビデオシーケンスを有するマルチビュービデオを生成することができる。マルチビュービデオは、記憶するための大きな記憶空間および/または送信するための高帯域幅を必要とする場合がある。必要な記憶空間または送信帯域幅を削減するために、当分野ではマルチビュービデオコーディング技法が開発されている。
マルチビュービデオコーディングの効率を改善するために、ビュー間の類似性が利用される。いくつかの実施形態では、ベースビューと呼ばれるビューのうちの1つは、平面視ビデオのようにエンコーディングされる。例えば、ベースビューのエンコーディング中、イントラ(ピクチャ)および/または時間インター(ピクチャ)予測が使用される。ベースビューは、イントラ(ピクチャ)予測およびインター(ピクチャ)予測を実施する平面視デコーダ(例えば、平面視デコーダ)を使用してデコーディングされてもよい。マルチビュービデオにおけるベースビューの横の他のビューは、従属ビューと呼ぶことができる。従属ビューをコーディングするために、イントラ(ピクチャ)およびインター(ピクチャ)予測に加えて、視差補償を伴うインタービュー予測が使用され得る。一例では、インタービュー予測において、従属ビューにおける現在のブロックは、同じ時間インスタンスにおける別のビューのピクチャからのサンプルの参照ブロックを使用して予測される。参照ブロックの場所は、視差ベクトルによって示される。インタービュー予測は、動きベクトルが視差ベクトルに置き換えられ、時間参照ピクチャが他のビューからの参照ピクチャに置き換えられる点を除いて、インター(ピクチャ)予測と同様である。
本開示のいくつかの態様によれば、マルチビューコーディングは、マルチレイヤアプローチを採用し得る。マルチレイヤアプローチは、レイヤと呼ばれるビデオシーケンスの異なるコーディングされた(例えば、HEVCコーディングされた)表現を1つのビットストリームに多重化することができる。レイヤは、互いに依存することができる。依存関係は、異なるレイヤ間の類似性を利用することによって圧縮性能の向上を達成するためにインターレイヤ予測によって使用することができる。レイヤは、特定のカメラ視点に関連するシーンのテクスチャ、深度、または他の補助情報を表すことができる。いくつかの例では、同じカメラ視点に属するすべてのレイヤは、ビューとして表され、同じタイプの情報(例えば、テクスチャまたは深度)を搬送するレイヤは、マルチビュービデオの範囲内の構成要素と呼ばれる。
マルチビュービットストリームは、1つまたは複数のCVSを含むことができる。CVSは、シーンの複数のビューを含むことができる。シーンの複数のビューは、例えば、それぞれのカメラによって異なる視点から取得することが可能である。各ビューのデータ(例えば、テクスチャ、深度、または他の補助情報)は、CVS内の1つまたは複数のレイヤに含めることができる。
本開示の一態様によれば、マルチビュービデオコーディングは、既存のシングルレイヤデコーディングコアを有する高レベル構文(HLS)(例えば、スライスレベルよりも高い)の追加を含むことができる。いくつかの例では、マルチビュービューコーディングは、スライスレベル未満の(例えば、HEVC)シングルレイヤコーディングに必要な構文またはデコーディングプロセスを変更しない。マルチビュービデオデコーダを構築するための大きな変更を伴わない既存の実装の再使用を、可能にすることができる。例えば、マルチビュービデオデコーダは、ビデオデコーダ(510)またはビデオデコーダ(810)に基づいて実装することができる。
いくつかの例では、同じキャプチャインスタンスまたは表示時間インスタンスに関連付けられたすべてのピクチャはAUに含まれ、同じピクチャ順序カウント(POC)を有する。マルチビュービデオコーディングは、同じAU内のピクチャから予測を実施するインタービュー予測を可能にし得る。例えば、他のビューからのデコーディングされたピクチャは、現在のピクチャの参照ピクチャリストの一方または両方に挿入され得る。さらに、いくつかの例では、動きベクトルは、同じビューの時間参照ピクチャに関連する場合、実際の時間動きベクトルであってもよく、インタービュー参照ピクチャに関連する場合、視差ベクトルであってもよい。動きベクトルが時間動きベクトルであるか視差ベクトルであるかにかかわらず同じように動作する、ブロックレベル動き補償モジュール(例えば、ブロックレベルエンコーディングソフトウェアまたはハードウェア、ブロックレベルデコーディングソフトウェアまたはハードウェア)を使用することができる。
本開示のいくつかの態様によれば、例えば、エンコーディングされたビットストリームのデコーディングおよび/もしくは表示を支援するために、または別の目的のために、補足拡張情報(SEI)メッセージが、エンコーディングされたビットストリームに含まれ得る。SEIメッセージは、例えば、VCL NALユニットからのコーディングされたピクチャのサンプルをデコーディングすることのような、デコーディングするために必要でない情報を含み得る。SEIメッセージは、デコーディングプロセスによって輝度または彩度サンプルを構成するためにオプションとすることができる。いくつかの例では、SEIメッセージは、デコーディングプロセス中に輝度または彩度サンプルを再構成するために必要とされない。加えて、SEIメッセージをサポートするビデオコーディング規格に準拠するデコーダは、SEIメッセージを準拠するように処理する必要はない。いくつかのコーディング規格では、ビットストリームの準拠をチェックするために、またはタイミングデコーダの準拠を出力するために、いくつかのSEIメッセージ情報が必要とされる場合がある。SEIメッセージは、任意選択で、出力順序が特定の規格(例えば、HEVC 265またはVVC)に準拠するようにデコーダを準拠させることによって処理されてもよい。一実施形態では、SEIメッセージ(例えば、シグナリングされる)がビットストリームに存在する。
SEIメッセージは、ビデオピクチャのタイミングを示す、またはコーディングされたビデオの様々なプロパティを記述する、または様々なプロパティをどのように使用もしくは拡張することができるかを記述する様々なタイプのデータを含むことができる。いくつかの例では、SEIメッセージはコアデコーディングプロセスに影響を及ぼさないが、ビデオが後処理または表示されるように推奨される方法を示すことができる。
SEIメッセージを使用して、エンコーディングされたビットストリームに関する追加の情報を提供することができ、これを使用して、ビットストリームがデコーディングされるときにビットストリームの提示を変更したり、情報をデコーダに提供したりすることができる。例えば、SEIメッセージは、とりわけ、フレームパッキング情報(例えば、ビデオデータがビデオフレーム内に配置される方法を記述している)、コンテンツ記述(例えば、エンコーディングされたビットストリームが例えば360度ビデオであることを示す)、および色情報(例えば、色域および/または色範囲)を提供するために使用されている。
いくつかの例では、SEIメッセージを使用して、エンコーディングされたビットストリームが360度ビデオまたはVRビデオを含むことをデコーダにシグナリングすることができる。デコーダは、上記の情報を使用して、360度提示用のビデオデータをレンダリングすることができる。あるいは、デコーダが360度ビデオをレンダリングすることができない場合、デコーダは、ビデオデータをレンダリングしないために上記の情報を使用することができる。
本開示は、マルチビュー関連の情報を含む。マルチビュー関連の情報は、スケーラビリティ次元情報(SDI)SEIメッセージおよびマルチビュー取得情報(MAI)SEIメッセージなど、コーディングされたビデオストリームにおけるマルチビュー関連のSEIメッセージに含めることができる。一例では、第1のSEIメッセージ(例えば、SDI SEIメッセージ)のセマンティクスにおける変数ViewId(例えば、CVS内の第iのレイヤのビュー識別子に関連付けられたViewId)が定義される。一例では、第2のSEIメッセージ(例えば、MAIまたは深度表現情報SEIメッセージ)が適用されるターゲットレイヤが明確化される。
本開示の一実施形態によれば、第1のSEIメッセージまたはSDI SEIメッセージは、例えば、マルチビュービデオのスケーラビリティ次元情報(SDI)を示すことができる。ビットストリーム(例えば、マルチビュービットストリーム)内のCVSは、デコーディング順で、SDI SEIメッセージを含むAUを含むAUのシーケンスを含むことができ、その後に、SDI SEIメッセージを含む後続のAUまでのすべての後続のAUを含むが、後続のAUは含まない0個以上のAUが続く。SDI SEIメッセージがCVSのAUに存在する場合、SDI SEIメッセージは、CVSの第1のAUに対して存在し得る。一例では、同じCVSに適用されるすべてのSDI SEIメッセージは、同じコンテンツを有することができる。一例では、SDI SEIメッセージは、スケーラブルネスティングSEIメッセージに含めることはできない。
表1は、本開示の一実施形態による、SDI SEIメッセージの構文の一例を示す。
第1のSEIメッセージ(例えば、SDI SEIメッセージ)は、マルチビュービデオについてのビュー数などを示す情報など、スケーラビリティ次元の数およびタイプを含むことができる。第1のSEIメッセージは、ビットストリームのCVS内のレイヤごとのSDIを含むことができる。一例では、ビットストリームは、マルチビュービットストリームであり、SDIは、例えば、構文要素sdi_view_id_val[i]を使用して、各レイヤのビュー識別子(ID)(例えば、変数ViewID)を示す。一例では、深度またはアルファなどの補助情報がビットストリームにおける1つまたは複数のレイヤに含まれ、各レイヤの補助IDが第1のSEIメッセージで示される。
構文要素sdi_max_layers_minus1 plus 1は、ビットストリームまたはCVS内の最大レイヤ数を示すことができる。
1に等しい構文要素sdi_multiview_info_flagは、ビットストリームがマルチビュービットストリームであってもよく、sdi_view_id_val[]構文要素がSDI SEIメッセージに存在することを示すことができる。0に等しい構文要素sdi_multiview_flagは、ビットストリームがマルチビュービットストリームではなく、sdi_view_id_val[]構文要素がSDI SEIメッセージに存在しないことを示すことができる。
1に等しい構文要素sdi_auxiliary_info_flagは、補助情報がビットストリームまたはCVS内の1つまたは複数のレイヤによって搬送され得、sdi_aux_id[]構文要素がSDI SEIメッセージに存在することを示すことができる。0に等しい構文要素sdi_auxiliary_info_flagは、補助情報がビットストリームまたはCVS内の1つまたは複数のレイヤによって搬送されず、sdi_aux_id[]構文要素がSDI SEIメッセージに存在しないことを示すことができる。
0に等しい構文要素sdi_aux_id[i]は、ビットストリームまたはCVS内の第iのレイヤが補助ピクチャを含まないことを示すことができる。0よりも大きい構文要素sdi_aux_id[i]は、表2に従ってビットストリームまたはCVS内の第iのレイヤ内の補助ピクチャのタイプを示すことができる。sdi_auxiliary_info_flagが0に等しい場合、sdi_aux_id[i]の値は、0に等しいと推測される。
128以上159以下の範囲のsdi_aux_idに関連付けられた補助ピクチャの解釈は、sdi_aux_id値以外の手段で指定することができる。
構文要素sdi_aux_id[i]は、表2に示すバージョンに準拠するビットストリームの場合、0以上2以下、または128以上159以下の範囲内とすることができる。いくつかの実施形態では、デコーダは、0以上255以下の範囲のsdi_aux_id[i]の値を可能にすることができる。
汎用補足拡張情報(VSEI)などの特定のビデオコーディング技術では、変数ViewIdは定義されないが、特定のセマンティクスによって参照される。
本開示の一実施形態によれば、変数ViewID(例えば、現在のCVS内の第iのレイヤのViewId)は、第1のSEIメッセージ(例えば、SDI SEIメッセージ)において定義または指定することができる。一例では、第1のSEIメッセージ(例えば、SDI SEIメッセージ)内の構文要素sdi_view_id_val[i]は、現在のCVS(例えば、ビットストリームにおける現在のCVS)内の第iのレイヤの変数ViewIDの値を指定する。構文要素sdi_view_id_val[i]は、第1のSEIメッセージ(例えば、SDI SEIメッセージ)でシグナリングすることができる。
一例では、現在のCVS内の異なるレイヤは異なるビューに対応し、現在のCVS内の異なるレイヤの変数ViewIDの値は異なる。一例では、現在のCVS内の複数のレイヤは同じビューに対応し、現在のCVS内の複数のレイヤの変数ViewIDの値は同一である。例えば、sdi_view_id_val[i1]は、sdi_view_id_val[i2]に等しく、i1は、i2とは異なる。
一例では、マルチビュービットストリームは、2つのレイヤ(例えば、レイヤ0およびレイヤ1)を有するCVSを含む。マルチビュービットストリームは、2つのビュー、例えば、それぞれレイヤ0およびレイヤ1に対応するビュー0およびビュー1を含む。構文要素sdi_view_id_val[]は、2つの値、例えば、sdi_view_id_val[0(レイヤ0)]=0(ビュー0)、およびsdi_view_id_val[1(レイヤ1)]=1(ビュー1)を有する。
一例では、マルチビュービットストリームは、4つのレイヤ(例えば、レイヤ0から3)を有するCVSを含む。マルチビュービットストリームは、2つのビュー、例えば、ビュー0およびビュー1を含む。ビュー0は、レイヤ0およびレイヤ1に対応する。ビュー1は、レイヤ2およびレイヤ3に対応する。構文要素sdi_view_id_val[]は、4つの値、例えば、sdi_view_id_val[0(レイヤ0)]=0(ビュー0)、ならびにsdi_view_id_val[1(レイヤ1)]=0(ビュー0)、sdi_view_id_val[2(レイヤ2)]=1(ビュー1)、およびsdi_view_id_val[3(レイヤ3)]=1(ビュー0)を有する。
上述したように、第1のSEIメッセージ内の構文要素sdi_view_id_val[]は、CVS内の複数のレイヤ(例えば、レイヤ0から4)のうちの第iのレイヤと、CVS内の複数のビュー(例えば、ビュー0から1)のうちのビューとの間の関係を示すことができる。一例では、複数のレイヤのうちの第iのレイヤが既知である場合、複数のビューの対応するビューは、関係に基づいて決定される。複数のビューのうちの前記ビューが既知である場合、対応するレイヤは、関係に基づいて決定することができる。レイヤ0から3がビュー0およびビュー1に対応する上記の例を再び参照すると、第iのレイヤがレイヤ2である場合、対応するビューは、ビュー1であると決定される。ビューがビュー0である場合、対応するレイヤは、レイヤ0から1のうちの1つであると決定される。
sdi_view_id_val[i]構文要素(例えば、構文要素sdi_view_id_val[i]を表すために使用されるビット数)の長さは、第1のSEIメッセージ(例えば、SDI SEIメッセージ)内の構文要素sdi_view_id_len_minus1によって示すことができる。構文要素sdi_view_id_len_minus1 plus 1は、sdi_view_id_val[i]構文要素のビット単位の長さを指定することができる。sdi_view_id_val[i]の長さは、(sdi_view_id_len_minus1+1)ビットに等しくすることができる。一例では、sdi_multiview_info_flagが0に等しい場合、sdi_view_id_val[i]の値は、0に等しいと推測される。
第1のSEIメッセージ内の構文要素sdi_view_id_val[i]によって指定される変数ViewIdは、MAI SEIメッセージ、深度表現情報を示すSEIメッセージ(深度表現情報SEIメッセージと呼ばれる)などの他のメッセージ(例えば、他のSEIメッセージ)によって参照または使用され得る。
深度表現情報SEIメッセージ内の構文要素は、ビュー合成などの3Dディスプレイ上でのレンダリングの前にデコーディングされた主ピクチャおよび補助ピクチャを処理する目的で、タイプAUX_DEPTH(例えば、sdi_aux_id[i]は2である)の補助ピクチャのための様々なパラメータを指定することができる。表2によれば、タイプがAUX_DEPTHである場合、補助ピクチャは、深度ピクチャである。一例では、深度ピクチャについての深度または視差範囲が指定される。存在する場合、深度表現情報SEIメッセージは、AuxId値がAUX_DEPTHに等しい1つまたは複数のレイヤに関連付けることができる。存在する場合、深度表現情報SEIメッセージは、任意のアクセスユニットに含まれてもよい。一例では、存在する場合、SEIメッセージは、ランダムアクセスの目的でIRAPアクセスユニットに含まれる。SEIメッセージに示される情報は、SEIメッセージを含むアクセスユニットから次のアクセスユニットへ、デコーディング順で、同じタイプの、同じレイヤに関連付けられたSEIメッセージを含んで、排他的に、またはコーディングされたビデオシーケンスの最後までのいずれかのうちデコーディング順が早い方で、各関連付けられたレイヤのすべてのピクチャに適用される。
一例では、深度表現情報SEIメッセージは、構文要素disparity_ref_view_idを含む。構文要素disparity_ref_view_idは、第1のSEIメッセージ内の構文要素sdi_view_id_val[i]によって指定されるViewIdを使用または参照することができる。一例では、構文要素disparity_ref_view_idは、視差値が導出されるViewId値を指定する。
一例では、構文要素disparity_ref_view_idが適用される複数のレイヤのうちのターゲットレイヤは、シグナリングされた構文要素sdi_view_id_val[]の値に基づいて決定される。
一例では、構文要素disparity_ref_view_idは、最小フラグ(例えば、d_min_flag)が1に等しいか、または最大フラグ(例えば、d_max_flag)が1に等しい場合にのみ存在する(例えば、シグナリングされる)。いくつかの例では、構文要素disparity_ref_view_idは、表3に示すように、深度表現タイプ(例えば、depth_representation_type)1および3において有用である。構文要素depth_representation_typeは、表3に指定された補助ピクチャのデコーディングされた輝度サンプルの表現定義を指定することができる。表3において、視差は2つのテクスチャビュー間の水平変位を指定し、Z値はカメラからの距離を指定する。
表4は、深度パラメータ変数と構文要素との間の関連付けを示す。
表4のx列における変数(例えば、ZNear)は、表4のs、e、n、およびv列におけるそれぞれの変数(例えば、ZNearSign、ZNearExp、ZNearMantissa、およびZNearManLen)から以下のように導出することができる。
- eの値が0以上127未満の範囲内にある場合、xは、(-1)s×2(e-31)×(1+n÷2v)に等しく設定される。
- そうでない場合(eが0に等しい)、xは、(-1)s×2-(30+v)×nに等しく設定される。
変数ZNearは、最近深度を表すことができる。変数ZNearの値は、上述したように、深度表現情報SEIメッセージ内の構文要素ZNearSign、ZNearExp、ZNearMantissa、ZNearManLenの値を使用して決定することができる。
変数ZFarは、最遠深度を表すことができる。変数ZFarの値は、上述したように、深度表現情報SEIメッセージ内の構文要素ZFarSign、ZFarExp、ZFarMantissa、ZFarManLenの値を使用して決定することができる。
変数DMaxは、最大視差を表すことができる。変数DMaxの値は、上述したように、深度表現情報SEIメッセージ内の構文要素DMaxSign、DMaxExp、DMaxMantissa、DMaxManLenの値を使用して決定することができる。
変数DMinは、最小視差を表すことができる。変数DMinの値は、上述したように、深度表現情報SEIメッセージ内の構文要素DMinSign、DMinExp、DMinMantissa、DMinManLenの値を使用して決定することができる。
DMinおよびDMax値は、存在する場合、コーディングされたピクチャの輝度サンプル幅の単位で指定することができ、ViewIdは、補助ピクチャのViewIdに等しい。
MAI SEIメッセージは、現在のCVS、例えば、MAI SEIメッセージを含むCVSに存在し得るレイヤについての取得環境の様々なパラメータを指定することができる。一実施形態では、内部カメラパラメータ(例えば、焦点距離、主点、およびスキュー係数)および外部カメラパラメータ(例えば、回転行列および並進ベクトル)は、例えば、MAI SEIメッセージ内の対応する構文要素によって示される(例えば、指定される)。内部カメラパラメータおよび外部カメラパラメータを使用して、3Dディスプレイ上にデコーディングされたビュー(例えば、デコーディングされたビューに対応するデコーディングされたピクチャ)をレンダリングする前にデコーディングされたビューを処理することができる。
図9は、本開示の一実施形態による、MAIを示すMAI SEIメッセージにおける構文例(900)を示す。MAI SEIメッセージは、内部カメラパラメータに関連付けられた構文要素を含むことができ、構文要素は、sign_focal_length_x[i]、exponent_focal_length_x[i]、mantissa_focal_length_x[i]、sign_focal_length_y[i]、exponent_focal_length_y[i]、mantissa_focal_length_y[i]、sign_principal_point_x[i]、exponent_principal_point_x[i]、mantissa_principal_point_x[i]、sign_principal_point_y[i]、exponent_principal_point_y[i]、mantissa_principal_point_y[i]、sign_skew_factor[i]、exponent_skew_factor[i]、およびmantissa_skew_factor[i]を含む。
構文要素sign_focal_length_x[i]、exponent_focal_length_x[i]、およびmantissa_focal_length_x[i]は、図10に示すように、変数focalLengthX[i]を決定するために使用することができる。構文要素sign_focal_length_y[i]、exponent_focal_length_y[i]、およびmantissa_focal_length_y[i]は、図10に示すように、変数focalLengthY[i]を決定するために使用することができる。構文要素sign_principal_point_x[i]、exponent_principal_point_x[i]、およびmantissa_principal_point_x[i]は、図10に示すように、変数principalPointX[i]を決定するために使用することができる。構文要素sign_principal_point_y[i]、exponent_principal_point_y[i]、およびmantissa_principal_point_y[i]は、図10に示すように、変数principalPointY[i]を決定するために使用することができる。構文要素sign_skew_factor[i]、exponent_skew_factor[i]、およびmantissa_skew_factor[i]は、図10に示すように、変数skew Factor[i]を決定するために使用することができる。
第iのカメラの内部カメラパラメータは、変数focalLengthX[i]、focalLengthY[i]、principalPointX[i]、principalPointY[i]、およびskewFactor[i]を含むことができる。変数focalLengthX[i]およびfocalLengthY[i]は、それぞれ水平方向および垂直方向における第iのカメラの焦点距離を示すことができる。変数principalPointX[i]およびprincipalPointY[i]は、それぞれ水平方向および垂直方向における第iのカメラの主点を示すことができる。変数skewFactor[i]は、第iのカメラのスキュー係数を示すことができる。焦点距離、主点、およびスキュー係数などの第iのカメラの内部カメラパラメータは、第iのカメラの内部プロパティを示すことができる。焦点距離、主点、およびスキュー係数などの第iのカメラの内部カメラパラメータは、第iのカメラによって取得されるシーンに対する第iのカメラの場所または向きとは無関係であり得る。
一例では、第iのカメラについての内部行列または内部カメラパラメータ行列A[i]は、式1を使用して焦点距離、主点、およびスキュー係数などの対応する内部カメラパラメータに基づいて決定することができる。
MAI SEIメッセージは、sign_r[i][j][k]、exponent_r[i][j][k]、mantissa_r[i][j][k]、sign_t[i][j]、exponent_t[i][j]、およびmantissa_t[i][j]を含む外部カメラパラメータに関連付けられた構文要素を含むことができる。構文要素sign_r[i][j][k]、exponent_r[i][j][k]、およびmantissa_r[i][j][k]は、図10に示すように、変数rE[i][j][k]を決定するために使用することができる。構文要素sign_t[i][j]、exponent_t[i][j]、およびmantissa_t[i][j]は、図10に示すように、変数tE[i][j]を決定するために使用することができる。
第iのカメラの外部カメラパラメータは、変数rE[i][j][k]およびtE[i][j]を含むことができる。変数rE[i][j][k]は、第iのカメラの回転行列R[i]の要素(例えば、[j][k]における)を示すことができる。変数tE[i][j]は、第iのカメラの並進ベクトルT[i]の第jの要素を示すことができる。回転行列R[i]および並進ベクトルT[i]などの第iのカメラの外部カメラパラメータは、第iのカメラの外部プロパティを示すことができる。一例では、回転行列R[i]および並進ベクトルT[i]などの第iのカメラの外部カメラパラメータは、取得されるシーンに対する第iのカメラの場所および/または向きに関連付けられる。
一例では、第iのカメラについての回転行列R[i]は、式2を使用して対応する外部カメラパラメータrE[i][j][k]に基づいて決定することができる。
一例では、第iのカメラについての並進ベクトルT[i]は、式3を使用して対応する外部カメラパラメータtE[i][j]に基づいて決定することができる。
図10は、本開示の一実施形態による、カメラパラメータ変数(例えば、列xに示されている)と対応する構文要素(例えば、列s、e、およびnに示されている)との間の関係を示す。内部行列および回転行列ならびに並進ベクトルの各成分は、図10で指定された変数から取得することができる。列sにおける構文要素は、列xにおけるそれぞれの変数の符号を示すことができる。列eにおける構文要素は、列xにおけるそれぞれの変数の指数部を示すことができる。列nにおける構文要素は、列xにおけるそれぞれの変数の仮数部を示すことができる。
x列における変数(例えば、focalLengthX[i])は、以下のように計算することができる:
-列eにおける変数(例えば、exponent_focal_length_x[i])が0以上63未満の範囲内にある場合、x列における変数(例えば、focalLengthX[i])は、(-1)s×2e-31×(1+n÷2v)に等しく設定される。
そうでない場合(列eにおける変数が0に等しい)、x列における変数は、(-1)s*2-(30+v)×nに等しく設定される。
一例では、外部カメラパラメータは、ピクチャ(または画像)の左上隅が右手座標系の原点(例えば、(0,0)座標)である右手座標系に従って指定される。ピクチャ(または画像)の他の隅は、非負の座標を有することができる。一例では、3次元(3D)ワールドポイントwP(例えば、wPの位置は3D座標[x y z]で指定される)は、第iのカメラについての2次元(2D)カメラポイントcP[i]にマッピングされる。カメラポイントcP[i]は、式4に従って第iのカメラについての2D座標[u v 1]によって指定することができる。
s×cP[i]=A[i]×R-1[i]×(wP-T[i]) 式4
ここで、A[i]は、第iのカメラについての内部カメラパラメータ行列であり、R-1[i]は、第iのカメラについての回転行列R[i]の逆回転行列を表し、T[i]は、第iのカメラについての並進ベクトルを表し、s(スカラ値)は、cP[i]の第3の座標を1に等しくするために選択された任意のスケール係数である。A[i]、R[i]、およびT[i]の要素は、上述のように、MAI SEIメッセージでシグナリングされる構文要素に従って決定される。
HEVC/H.265などの関連するビデオコーディング技術では、MAI SEIメッセージが適用されるターゲットレイヤは、以下のセマンティクスによって指定することができる。インデックスi(例えば、focalLengthX[i]またはexponent_focal_length_x[i]内のインデックスi)は、ネスティングレイヤIDリスト(例えば、nestingLayerIdList[0][i])内の第iの要素に等しいレイヤのネットワーク抽象化レイヤ(NAL)ユニットヘッダレイヤ識別子(例えば、nuh_layer_id)を有するレイヤに適用される構文要素および変数を指す。
VSEIなどのいくつかのビデオコーディング技術では、MAI SEIメッセージによって示される内部カメラパラメータ(例えば、focalLengthX[i]、focalLengthY[i]、principalPointX[i]、principalPointY[i]、skewFactor[i]、および/またはA[i])および/または外部カメラパラメータ(例えば、R[i]、T[i]、ならびに/またはR[i]およびT[i]における要素)に関連付けられたターゲットレイヤは、明確に指定されていない。
本開示の一実施形態によれば、MAI SEIメッセージ(例えば、VSEI内のMAI SEIメッセージ)によって示される内部カメラパラメータおよび外部カメラパラメータに関連付けられたターゲットレイヤは、第1のSEIメッセージ(例えば、SDI SEIメッセージ)内の構文要素(例えば、sdi_view_id_val[])などの別のSEIメッセージに基づいて指定することができる。一例では、ターゲットレイヤは、現在のCVS内の複数のレイヤのうちのレイヤであり、ターゲットレイヤの対応するビューは、第1のSEIメッセージ(例えば、SDI SEIメッセージ)内の構文要素sdi_view_id_val[i]によって示される。
一実施形態では、図9から図10を参照して上述したセマンティクスにおいて、インデックスiは、sdi_view_id_val[j]がsdi_view_id_val[i]に等しいCVS内の第jのレイヤに適用される構文要素および変数(例えば、図9から図10における構文要素および変数)を指す。
一実施形態では、図9から図10を参照して上述したセマンティクスにおいて、インデックスiは、ViewIdがsdi_view_id_val[i]に等しいCVS内のレイヤに適用される構文要素および変数(例えば、図9から図10における構文要素および変数)を指す。
本開示の一実施形態によれば、第1のSEIメッセージ(例えば、SDI SEIメッセージ)を受信することができる。第1のSEIメッセージは、CVS(例えば、現在のCVS)を含むマルチビュービットストリームにおける複数のビューのSDIを含むことができる。CVSは、複数のレイヤを含むことができる。第1のSEIメッセージ内の第1の構文要素sdi_view_id_val[]の値を、決定することができる。第1の構文要素sdi_view_id_val[]の各値は、複数のレイヤにおけるそれぞれのレイヤに対応することができる。第1のSEIメッセージ内の第1の構文要素sdi_view_id_val[]の各値は、複数のレイヤにおけるそれぞれのレイヤのビュー識別子(ViewId)を指定することができる。一例では、構文要素sdi_view_id_val[]の4つの値(例えば、0、0、1、および1)が決定され、インデックスは、それぞれレイヤ0から3に対応する0から3である。レイヤ0は、sdi_view_id_val[0](例えば、ビュー0の場合は0)のViewIdを有する。レイヤ1は、sdi_view_id_val[1](例えば、ビュー0の場合は0)のViewIdを有する。レイヤ2は、sdi_view_id_val[2](例えば、ビュー1の場合は1)のViewIdを有する。レイヤ3は、sdi_view_id_val[3](例えば、ビュー1の場合は1)のViewIdを有する。
第1のSEIメッセージ(例えば、SDI SEIメッセージ)内の第1の構文要素sdi_view_id_val[]の値に基づいて、第2のSEIメッセージ(例えば、MAI SEIメッセージ)の第2の構文要素(例えば、図9から図10における構文要素のうちの1つ)が適用される複数のレイヤのうちのターゲットレイヤを決定することができる。第2の構文要素は、例えば、それぞれのカメラによって取得された複数のビューのうちのビューに対応することができる。図9または図10を参照すると、インデックスiによって参照される各構文要素(例えば、sign_focal_length_x[i]またはsign_r[i][j][k]などの第2の構文要素)は、第iのカメラのカメラパラメータ(例えば、内部パラメータまたは外部パラメータ)を示す。一例では、第iのカメラは、複数のビューのうちの第iのビューを取得する。いくつかの例では、インデックスiによって参照される各構文要素は、複数のビューのうちの第iのビューに対応する。第iのビュー、および第1のSEIメッセージ(例えば、SDI SEIメッセージ)内の第1の構文要素sdi_view_id_val[]の値によって示されるCVS内の複数のビューと複数のレイヤとの間の関係に基づいて、第2のSEIメッセージ(例えば、MAI SEIメッセージ)の第2の構文要素が適用される複数のレイヤのうちのターゲットレイヤを決定することができる。例えば、sign_focal_length_x[0]内のインデックスiは、0であり、第0のカメラおよび第0のビューのsign_focal_length_x[0]は、レイヤ0またはレイヤ1のターゲットレイヤに対応する。
一例では、ターゲットレイヤは、第1のSEIメッセージ内の第1の構文要素sdi_view_id_val[]の値および複数のビューのうちの前記ビューのViewIdに基づいて決定される。例えば、sign_focal_length_x[0]内のインデックスiは、0であり、第0のカメラおよび第0のビューのsign_focal_length_x[0]のViewIdは、0である。0のViewIdは、sdi_view_id_val[0]またはsdi_view_id_val[1]に等しい。したがって、ターゲットレイヤは、レイヤ0またはレイヤ1である。
一例では、第2のSEIメッセージは、MAIを含む。第2の構文要素は、複数のビューのうちの前記ビューのビュー取得情報を示す。ビュー取得情報は、複数のビューのうちの前記ビューを取得するために使用される内部カメラパラメータまたは外部カメラパラメータを含むことができる。
1つまたは複数のレイヤは、複数のビューのうちのビューに対応することができる。一例では、複数のビューのうちの前記ビューに対応する1つまたは複数のレイヤは、変数ViewIdの同一の値を有する。
MAI SEIメッセージがCVSのAU(例えば、任意のAU)に存在する場合、MAI SEIメッセージは、CVSの第1のAUに対して存在し得る。本開示の一実施形態によれば、MAI SEIメッセージは、CVSの第1のAUに適用される。一例では、CVS内のすべてのMAI SEIメッセージは、同じコンテンツを有することができる。
MAI SEIメッセージが存在する場合、現在のレイヤに適用されるMAI SEIメッセージは、現在のレイヤのCLVSの第1のピクチャであるIRAPピクチャを含むアクセスユニットに含めることができる。MAI SEIメッセージでシグナリングされる情報は、CLVSに適用することができる。
一例では、MAI SEIメッセージは、スケーラブルネスティングSEIメッセージに含めることはできない。MAI SEIメッセージは、スケーラブルネスティングSEIメッセージに含まれない。
一実施形態では、CVSがSDI SEIメッセージを含まない場合、CVSは、MAI SEIメッセージを含まない。MAI SEIメッセージは、CVSに含まれているSDI SEIメッセージに基づいてCVSに含まれる。
AUがSDI SEIメッセージとMAI SEIメッセージの両方を含む場合、SDI SEIメッセージは、例えば、デコーディング順でMAI SEIメッセージに先行することができる。
SDI SEIメッセージおよびMAI SEIメッセージがAUに適用される場合、SDI SEIメッセージは、例えば、デコーディング順でMAI SEIメッセージに先行することができる。
MAIがMAI SEIメッセージに含まれるビューのいくつかは、現在のCVSに存在しない場合がある。
本開示で説明したように、MAI SEIメッセージは、CVSに含まれているSDI SEIメッセージに基づいてCVSに含まれる。SDI SEIメッセージ内の第1の構文要素sdi_view_id_val[]の値の決定およびターゲットレイヤの決定は、CVSに含まれているSDI SEIメッセージおよびMAIメッセージに基づいて実施される。
図11は、本開示の一実施形態による、エンコーディングプロセス(1100)を概説するフローチャートを示す。様々な実施形態において、プロセス(1100)は、端末デバイス(310)、(320)、(330)、および(340)内の処理回路、ビデオエンコーダ(例えば、(403)、(603)、(703))の機能を実施する処理回路などの処理回路によって実行される。いくつかの実施形態では、プロセス(1100)はソフトウェア命令で実施され、したがって処理回路がソフトウェア命令を実行すると、処理回路はプロセス(1100)を実施する。プロセスは(S1101)から開始し、(S1110)に進む。
(S1110)において、表1を参照して説明したように、スケーラビリティ次元情報(SDI)を示す第1の補足拡張情報(SEI)メッセージを生成することができる。第1のSEIメッセージは、マルチビュービットストリームにおける複数のビューのSDIを含む。マルチビュービットストリームは、複数のレイヤを有するコーディングされたビデオシーケンス(CVS)を含むことができる。複数のビューは、複数のレイヤに対応する。
表1を参照して説明したように、第1のSEIメッセージは、第1の構文要素sdi_view_id_val[]を含むことができる。第1の構文要素sdi_view_id_val[]の各値は、複数のレイヤにおけるそれぞれのレイヤに対応することができる。第1の構文要素sdi_view_id_val[i]は、CVS内の第iのレイヤの変数ViewId値を指定することができる。変数ViewIdは、複数のビューにおけるビューのビューIDを示す。
(S1120)において、マルチビュー取得情報(MAI)を示す第2のSEIメッセージを生成することができる。第2のSEIメッセージは、図9から図10に記載されたように、複数のビューのうちのビューのビュー取得情報を示す第2の構文要素を含む。
第1のSEIメッセージ内の第1の構文要素sdi_view_id_val[]の値に基づいて、第2のSEIメッセージの第2の構文要素が適用される複数のレイヤのうちのターゲットレイヤを決定することができる。第2の構文要素は、複数のビューうちのあるビューに対応する。
一例では、インデックスiは、sdi_view_id_val[j]がsdi_view_id_val[i]に等しいCVS内の第jのレイヤに適用される、第2のSEIメッセージに示される構文要素および変数を指す。
一例では、インデックスiは、ViewIdがsdi_view_id_val[i]に等しいCVS内のレイヤに適用される、第2のSEIメッセージに示される構文要素および変数を指す。
(S1130)において、第1のSEIメッセージおよび第2のSEIメッセージは、マルチビュービットストリームに含めることができる。
プロセス(1100)は、(S1199)に進み、終了する。
プロセス(1100)は、様々なシナリオに適切に適合させることができ、プロセス(1100)内のステップは、それに応じて調整することができる。プロセス(1100)内のステップのうちの1つまたは複数は、適合させ、省略し、繰り返し、かつ/または組み合わせることができる。プロセス(1100)を実施するために、任意の適切な順序を使用することができる。さらなるステップを追加することもできる。
図12は、本開示の一実施形態による、デコーディングプロセス(1200)を概説するフローチャートを示す。様々な実施形態において、プロセス(1200)は、端末デバイス(310)、(320)、(330)、および(340)内の処理回路、ビデオエンコーダ(403)の機能を実施する処理回路、ビデオデコーダ(410)の機能を実施する処理回路、ビデオデコーダ(510)の機能を実施する処理回路、ビデオエンコーダ(603)の機能を実施する処理回路などの処理回路によって実行される。いくつかの実施形態では、プロセス(1200)はソフトウェア命令で実施され、したがって処理回路がソフトウェア命令を実行すると、処理回路はプロセス(1200)を実施する。プロセスは(S1201)から開始し、(S1210)に進む。
(S1210)において、スケーラビリティ次元情報(SDI)を含む第1の補足拡張情報(SEI)メッセージを受信することができる。第1のSEIメッセージは、コーディングされたビデオシーケンス(CVS)を含むマルチビュービットストリームにおける複数のビューのSDIを含むことができる。CVSは、複数のビューに対応する複数のレイヤを有することができる。
(S1220)において、第1のSEIメッセージ内の第1の構文要素sdi_view_id_val[]の値を決定することができる。第1の構文要素sdi_view_id_val[]は、複数のレイヤにおけるレイヤのビュー識別子(ViewId)を示すことができる。第1のSEIメッセージ内の第1の構文要素sdi_view_id_val[]は、複数のレイヤにおけるレイヤのViewIdを指定することができる。
一例では、第1のSEIメッセージ内の第1の構文要素sdi_view_id_val[]の値を決定することができる。第1の構文要素sdi_view_id_val[]の各値は、複数のレイヤにおけるそれぞれのレイヤに対応することができる。例えば、sdi_view_id_val[i]は、CVS内の第iのレイヤのViewId値を指定する。
(S1230)において、第1のSEIメッセージ内の第1の構文要素sdi_view_id_val[]に基づいて、第2のSEIメッセージの第2の構文要素が適用される複数のレイヤのうちのターゲットレイヤを決定することができる。第2の構文要素に関連付けられた複数のビューのうちのビューは、第1の構文要素sdi_view_id_val[]によって示すことができる。
一例では、第2の構文要素に関連付けられた複数のビューのうちの前記ビューのビュー識別子は、第1の構文要素sdi_view_id_val[]の値に等しい。
一例では、第2のSEIメッセージは、マルチビュー取得情報(MAI)を含む。第2の構文要素は、複数のビューのうちの前記ビューのビュー取得情報を示す。ビュー取得情報は、複数のビューのうちの前記ビューを取得するために使用される内部カメラパラメータまたは外部カメラパラメータを含む。
一例では、ターゲットレイヤは、第1のSEIメッセージ内の第1の構文要素sdi_view_id_val[]の値および複数のビューのうちの前記ビューのViewIdに基づいて決定される。
第2のSEIメッセージは、CVSの第1のアクセスユニットに適用することができる。
第2のSEIメッセージは、スケーラブルネスティングSEIメッセージに含まれていなくてもよい。
一例では、第1のSEIメッセージおよび第2のSEIメッセージは、アクセスユニットに適用され、第1のSEIメッセージは、デコーディング順で第2のSEIメッセージに先行する。
プロセス(1200)は、(S1299)に進み、終了する。
プロセス(1200)は、様々なシナリオに適切に適合させることができ、プロセス(1200)内のステップは、それに応じて調整することができる。プロセス(1200)内のステップのうちの1つまたは複数は、適合させ、省略し、繰り返し、かつ/または組み合わせることができる。プロセス(1200)を実施するために、任意の適切な順序を使用することができる。さらなるステップを追加することもできる。
一例では、第2のSEIメッセージは、CVSに含まれている第1のSEIメッセージに基づいてCVSに含まれる。第1の構文要素の値の決定およびターゲットレイヤの決定は、CVSに含まれている第1のSEIメッセージおよび第2のメッセージに基づいて実施される。
一例では、深度表現情報を示す第3のSEIメッセージがデコーディングされる。第1の構文要素sdi_view_id_val[]によって示されるViewIdは、第3のSEIメッセージ内の第3の構文要素によって参照される。
本開示の実施形態は、別々に使用されてもよく、任意の順序で組み合わされてもよい。さらに、方法(または実施形態)の各々、エンコーダ、およびデコーダは、処理回路(例えば、1つまたは複数のプロセッサまたは1つまたは複数の集積回路)によって実装されてもよい。一例では、1つまたは複数のプロセッサは、非一時的コンピュータ可読媒体に記憶されたプログラムを実行する。
上述された技法は、コンピュータ可読命令を使用するコンピュータソフトウェアとして実装され、1つまたは複数のコンピュータ可読媒体に物理的に記憶することができる。例えば、図13は、開示された主題の特定の実施形態を実施するのに適したコンピュータシステム(1300)を示す。
コンピュータソフトウェアは、1つまたは複数のコンピュータ中央処理装置(CPU)、グラフィック処理装置(GPU)などによって直接的に、または解釈、マイクロコードの実行などを通して実行され得る命令を含むコードを作成するために、アセンブリ、コンパイル、リンキング、または同様のメカニズムを受け得る任意の適切なマシンコードまたはコンピュータ言語を使用してコーディングすることができる。
命令は、例えば、パーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲーム機、モノのインターネットデバイスなどを含む様々なタイプのコンピュータまたはコンピュータの構成要素上で実行することができる。
コンピュータシステム(1300)に関して図13に示している構成要素は、本質的に例示であり、本開示の実施形態を実施するコンピュータソフトウェアの使用または機能の範囲に関する限定を示唆することを意図していない。構成要素の構成についても、コンピュータシステム(1300)の例示的な実施形態に図示されている構成要素のいずれかまたは組み合わせに関する依存関係または要件を有すると解釈されるべきではない。
コンピュータシステム(1300)は、特定のヒューマンインターフェース入力デバイスを含み得る。そのようなヒューマンインターフェース入力デバイスは、例えば、触覚入力(キーストローク、スワイプ、データグローブの動きなど)、オーディオ入力(音声、拍手など)、視覚入力(ジェスチャなど)、嗅覚入力(図示せず)を通じて、1人または複数の人間ユーザによる入力に応答することができる。ヒューマンインターフェースデバイスは、オーディオ(音声、音楽、環境音など)、画像(走査画像、写真画像は静止画像カメラから取得など)、ビデオ(2次元ビデオ、立体ビデオを含む3次元ビデオなど)など、必ずしも人間による意識的な入力に直接関連しない特定の媒体をキャプチャするために使用することもできる。
入力ヒューマンインターフェースデバイスは、キーボード(1301)、マウス(1302)、トラックパッド(1303)、タッチスクリーン(1310)、データグローブ(図示せず)、ジョイスティック(1305)、マイク(1306)、スキャナ(1307)、カメラ(1308)のうちの1つまたは複数(各々の1つのみを図示)を含み得る。
コンピュータシステム(1300)はまた、特定のヒューマンインターフェース出力デバイスを含んでもよい。そのようなヒューマンインターフェース出力デバイスは、例えば、触覚出力、音、光、および嗅覚/味覚を通して、1人または複数の人間ユーザの感覚を刺激していることがある。そのようなヒューマンインターフェース出力デバイスは、触覚出力デバイス(例えば、タッチスクリーン(1310)、データグローブ(図示せず)、またはジョイスティック(1305)による触覚フィードバックであるが、入力デバイスとして機能しない触覚フィードバックデバイスもあり得る)、オーディオ出力デバイス(スピーカ(1309)、ヘッドホン(図示せず)など)、視覚出力デバイス(CRTスクリーン、LCDスクリーン、プラズマスクリーン、OLEDスクリーンを含むスクリーン(1310)など、各々タッチスクリーン入力機能の有無にかかわらず、各々触覚フィードバック機能の有無にかかわらず、そのいくつかはステレオグラフィック出力などの手段を通して、2次元視覚出力または3次元を超える出力を出力することが可能なものもある、仮想現実グラス(図示せず)、ホログラフィックディスプレイ、およびスモークタンク(図示せず))、およびプリンタ(図示せず)を含み得る。
コンピュータシステム(1300)はまた、人間がアクセス可能な記憶デバイスおよびそれらに関連する媒体、例えば、CD/DVDなどの媒体(1321)を伴うCD/DVD ROM/RWを含む光学媒体(1320)、サムドライブ(1322)、リムーバブルハードドライブまたはソリッドステートドライブ(1323)、テープやフロッピーディスク(図示せず)などのレガシー磁気媒体、セキュリティドングル(図示せず)などの特殊なROM/ASIC/PLDベースのデバイスなどを含み得る。
当業者はまた、本開示の主題に関連して使用される「コンピュータ可読媒体」という用語が、伝送媒体、搬送波、または他の一時的な信号を包含しないことを理解するべきである。
コンピュータシステム(1300)はまた、1つまたは複数の通信ネットワーク(1355)に対するインターフェース(1354)も含むことができる。ネットワークは、例えば、無線、有線、光であり得る。ネットワークはさらに、ローカル、ワイドエリア、メトロポリタン、車両用および産業用、リアルタイム、遅延耐性などであり得る。ネットワークの例には、イーサネットなどのローカルエリアネットワーク、無線LAN、GSM、3G、4G、5G、LTEなどを含むセルラーネットワーク、ケーブルTV、衛星TV、および地上波放送TVを含むTV有線または無線ワイドエリアデジタルネットワーク、CANBusを含む車両および産業用などが含まれる。特定のネットワークは、一般に、特定の汎用データポートまたは周辺バス(1349)に取り付けられた外部ネットワークインターフェースアダプタを必要とし(例えば、コンピュータシステム(1300)のUSBポートなど)、他のネットワークは、一般に、以下で説明するようなシステムバスへの取り付け(例えば、PCコンピュータシステムへのイーサネットインターフェース、またはスマートフォンコンピュータシステムへのセルラーネットワークインターフェース)によってコンピュータシステム(1300)のコアに統合される。これらのネットワークのいずれかを使用して、コンピュータシステム(1300)は、他のエンティティと通信することができる。そのような通信は、単方向、受信のみ(例えば、テレビ放送)、単方向の送信のみ(例えば、特定のCANbusデバイスへのCANbus)、または例えば、ローカルエリアもしくはワイドエリアのデジタルネットワークを使用した他のコンピュータシステムへの双方向とすることができる。特定のプロトコルおよびプロトコルスタックは、上述したように、それらのネットワークおよびネットワークインターフェースの各々で使用され得る。
前述のヒューマンインターフェースデバイス、人間がアクセス可能な記憶デバイス、およびネットワークインターフェースは、コンピュータシステム(1300)のコア(1340)に取り付けることができる。
コア(1340)は、1つまたは複数の中央処理装置(CPU)(1341)、グラフィック処理装置(GPU)(1342)、フィールドプログラマブルゲートエリア(FPGA)(1343)の形式の専用のプログラマブル処理装置、特定のタスク用のハードウェアアクセラレータ(1344)、グラフィックアダプタ(1350)などを含み得る。これらのデバイスは、読み取り専用メモリ(ROM)(1345)、ランダムアクセスメモリ(1346)、ユーザがアクセスできない内部ハードドライブ、SSDなどの内部大容量ストレージ(1347)と共に、システムバス(1348)を通して接続されてもよい。いくつかのコンピュータシステムでは、システムバス(1348)は、1つまたは複数の物理プラグの形式でアクセス可能であり、追加のCPU、GPUなどによる拡張を可能にする。周辺デバイスは、コアのシステムバス(1348)に直接取り付けてもよく、または周辺バス(1349)を通して取り付けることもできる。一例では、スクリーン(1310)は、グラフィックアダプタ(1350)に接続され得る。周辺バス用のアーキテクチャには、PCI、USBなどが含まれる。
CPU(1341)、GPU(1342)、FPGA(1343)、およびアクセラレータ(1344)は、組み合わせて前述のコンピュータコードを構成し得る特定の命令を実行することができる。このコンピュータコードは、ROM(1345)またはRAM(1346)に記憶することができる。また、移行データをRAM(1346)に記憶することもでき、永続データを、例えば内部大容量ストレージ(1347)に記憶することができる。1つまたは複数のCPU(1341)、GPU(1342)、大容量ストレージ(1347)、ROM(1345)、RAM(1346)などと密接に関連付けられ得るキャッシュメモリを使用することにより、任意のメモリデバイスへの高速記憶および検索が有効にされ得る。
コンピュータ可読媒体は、様々なコンピュータ実装動作を実施するためのコンピュータコードを有してもよい。媒体およびコンピュータコードは、本開示の目的のために特別に設計および構成されたものであってもよく、またはコンピュータソフトウェア技術の当業者に周知で利用可能な種類のものであってもよい。
限定ではなく一例として、アーキテクチャ(1300)、特にコア(1340)を有するコンピュータシステムは、プロセッサ(CPU、GPU、FPGA、アクセラレータなどを含む)が1つまたは複数の有形のコンピュータ可読媒体に具現化されたソフトウェアを実行した結果として機能を提供することができる。このようなコンピュータ可読媒体は、前述のようなユーザがアクセス可能な大容量ストレージに関連付けられた媒体、ならびにコア内部大容量ストレージ(1347)またはROM(1345)などの非一時的な性質のコア(1340)の特定のストレージに関連付けられた媒体であってもよい。本開示の様々な実施形態を実施するソフトウェアは、そのようなデバイスに記憶され、コア(1340)によって実行され得る。コンピュータ可読媒体は、特定の必要性に応じて、1つまたは複数のメモリデバイスまたはチップを含むことができる。ソフトウェアは、コア(1340)に、具体的にはその中のプロセッサ(CPU、GPU、FPGAなどを含む)に、RAM(1346)に記憶されたデータ構造を定義すること、およびソフトウェアによって定義されたプロセスに従ってこのようなデータ構造を修正することを含む、本明細書に記載されている特定のプロセスまたは特定のプロセスの特定の部分を実行させることができる。加えて、または代替として、コンピュータシステムは、本明細書に記載されている特定のプロセスまたは特定のプロセスの特定の部分を実行するために、ソフトウェアの代わりにまたはソフトウェアと共に動作することができる、配線されるかまたは他の方法で回路において具現化された論理(例えば、アクセラレータ(1344))の結果として機能を提供することもできる。ソフトウェアへの言及は、必要に応じて、論理を包含することができ、その逆も同様である。コンピュータ可読媒体への言及は、必要に応じて、実行のためのソフトウェアを記憶する回路(集積回路(IC)など)、実行のための論理を具現化する回路、またはこれらの両方を包含することができる。本開示は、ハードウェアとソフトウェアの任意の適切な組み合わせを包含する。
付記A:頭字語
JEM:共同探索モデル
VVC:多用途ビデオコーディング
BMS:ベンチマークセット
MV:動きベクトル
HEVC:高効率ビデオコーディング
SEI:補足拡張情報
VUI:ビデオユーザビリティ情報
GOPs:グループオブピクチャ
TUs:変換ユニット
PUs:予測ユニット
CTUs:コーディングツリーユニット
CTBs:コーディングツリーブロック
PBs:予測ブロック
HRD:仮想参照デコーダ
SNR:信号対雑音比
CPUs:中央処理装置
GPUs:グラフィック処理装置
CRT:陰極線管
LCD:液晶ディスプレイ
OLED:有機発光ダイオード
CD:コンパクトディスク
DVD:デジタルビデオディスク
ROM:読み取り専用メモリ
RAM:ランダムアクセスメモリ
ASIC:特定用途向け集積回路
PLD:プログラマブル論理デバイス
LAN:ローカルエリアネットワーク
GSM:モバイル通信用グローバルシステム
LTE:ロングタームエボリューション
CANBus:コントローラエリアネットワークバス
USB:ユニバーサルシリアルバス
PCI:周辺構成要素相互接続
FPGA:フィールドプログラマブルゲートエリア
SSD:ソリッドステートドライブ
IC:集積回路
CU:コーディングユニット
R-D:レート歪み
本開示はいくつかの例示的な実施形態を説明してきたが、本開示の範囲内に含まれる変更形態、置換形態、および様々な代替形態の同等物がある。よって、当業者は、本明細書に明示的に図示または記載されていないが、本開示の原理を具現化する、したがって本開示の趣旨および範囲内にある多数のシステムおよび方法を考案することができることが理解されよう。