本開示のいくつかの態様および実施形態が以下で与えられる。これらの態様および実施形態の一部は独立に適用されてよく、それらの一部は当業者には明らかなように組合せで適用されてよい。以下の説明では、説明の目的で、本発明の実施形態の完全な理解をもたらすために、具体的な詳細が記載される。しかしながら、様々な実施形態は、これらの具体的な詳細を伴わずに実践され得ることが明らかであろう。図面および説明は、限定的であることを意図していない。
以下の説明は例示的な実施形態のみを与え、本開示の範囲、適用性、または構成を限定することを意図していない。むしろ、例示的な実施形態の以下の説明は、例示的な実施形態を実装するのに役立つ説明を当業者に与える。添付の特許請求の範囲に記載される本発明の趣旨および範囲から逸脱することなく、要素の機能および構成に様々な変更が行われ得ることを理解されたい。
実施形態の完全な理解をもたらすために、以下の説明において具体的な詳細が与えられている。しかしながら、実施形態がこれらの具体的な詳細を伴わずに実践され得ることが、当業者によって理解されよう。たとえば、不必要な詳細によって実施形態を不明瞭にしないように、回路、システム、ネットワーク、プロセス、および他のコンポーネントは、ブロック図の形式のコンポーネントとして示され得る。他の事例では、実施形態を不明瞭することを避けるために、周知の回路、プロセス、アルゴリズム、構造、および技法は、不要な詳細を伴わずに示され得る。
また、個々の実施形態は、フローチャート、フロー図、データフロー図、構造図またはブロック図として描かれているプロセスとして記述され得ることに留意されたい。フローチャートは、動作を逐次プロセスとして説明し得るが、動作の多くは、並列にすなわち同時に実行され得る。加えて、動作の順序は並べ替えられ得る。プロセスは、動作が完了すると終了されるが、図面に含まれない追加のステップを有し得る。プロセスは、方法、関数、プロシージャ、サブルーチン、サブプログラムなどに相当し得る。プロセスが関数に相当するとき、その終了は、その関数が呼出し関数またはメイン関数に戻ることに相当し得る。
「コンピュータ可読媒体」という用語は、限定はされないが、ポータブルまたは非ポータブル記憶デバイス、光記憶デバイス、ならびに、命令および/またはデータを記憶する、格納する、または搬送することが可能な様々な他の媒体を含む。データが記憶されることが可能であり、ワイヤレスに、または有線接続を通じて伝播する搬送波および/または一時的な電気信号を含まない非一時的媒体を、コンピュータ可読媒体は含み得る。非一時的媒体の例は、限定はされないが、磁気ディスクまたはテープ、コンパクトディスク(CD)またはデジタル多目的ディスク(DVD)のような光学記憶媒体、フラッシュメモリ、メモリまたはメモリデバイスを含み得る。コンピュータ可読媒体は、プロシージャ、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または命令、データ構造もしくはプログラムステートメントの任意の組合せを表し得るコードおよび/または機械実行可能命令を記憶していてよい。コードセグメントは、情報、データ、引数、パラメータ、もしくはメモリ内容を渡すことおよび/または受け取ることによって、別のコードセグメントまたはハードウェア回路に結合され得る。情報、引数、パラメータ、データなどは、メモリ共有、メッセージパッシング、トークンパッシング、ネットワーク送信などを含む、任意の適切な手段を介して渡されてよく、転送されてよく、または送信されてよい。
さらに、実施形態は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはこれらの任意の組合せによって実装され得る。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードで実装されるとき、必要なタスク(たとえば、コンピュータプログラム製品)を実行するためのプログラムコードまたはコードセグメントが、コンピュータ可読媒体または機械可読媒体に記憶され得る。プロセッサは、必要なタスクを実行することができる。
ビデオエンコーダおよびデコーダを使用するビデオコーディングのいくつかのシステムおよび方法が、本明細書において説明される。たとえば、コーディングする1つまたは複数のシステムおよび方法は、高効率ビデオコーディング(HEVC)規格において記述されるビデオパラメータセット(VPS)などのパラメータセットにおける様々な情報のシグナリングを改善することを対象とする。
消費者がデジタルビデオデータを消費することをより多くのデバイスおよびシステムが可能にするにつれて、効率的なビデオコーディング技法の必要性がますます重要になっている。デジタルビデオデータ中に存在する大量のデータを扱うのに必要な記憶と送信の要件を下げるために、ビデオコーディングが必要とされる。様々なビデオコーディング技法が、より低いビットレートを使用する形式へとビデオデータを圧縮しながら、高いビデオ品質を維持するために使用され得る。
図1は、符号化デバイス104および復号デバイス112を含むシステム100の例を示すブロック図である。符号化デバイス104はソースデバイスの一部であってよく、復号デバイス112は受信デバイスの一部であってよい。ソースデバイスおよび/または受信デバイスは、携帯電話ハンドセットもしくは固定電話ハンドセット(たとえば、スマートフォン、携帯電話など)、デスクトップコンピュータ、ラップトップコンピュータもしくはノートブックコンピュータ、タブレットコンピュータ、セットトップボックス、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤー、ビデオゲームコンソール、ビデオストリーミングデバイス、または任意の他の適切な電子デバイスなどの、電子デバイスを含み得る。いくつかの例では、ソースデバイスおよび受信デバイスは、ワイヤレス通信のための1つまたは複数のワイヤレス送受信機を含み得る。本明細書において説明されるコーディング技法は、ストリーミングビデオ送信(たとえば、インターネットを通じた)、テレビジョン放送もしくは送信、データ記憶媒体への記憶のためのデジタルビデオの符号化、データ記憶媒体に記憶されているデジタルビデオの復号、または他の適用例を含む、様々なマルチメディア適用例におけるビデオコーディングに適用可能である。いくつかの例では、システム100は、ビデオ会議、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、ゲーム、および/またはビデオ電話などの適用例をサポートするために、一方向または双方向のビデオ送信をサポートすることができる。
符号化デバイス104(またはエンコーダ)は、ビデオコーディング規格またはプロトコルを使用してビデオデータを符号化し、符号化されたビデオビットストリームを生成するために使用され得る。ビデオコーディング規格には、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)拡張とを含むITU-T H.264(ISO/IEC MPEG-4 AVCとしても知られる)が含まれる。より新しいビデオコーディング規格、すなわち高効率ビデオコーディング(HEVC)が、ITU-Tビデオコーディングエキスパートグループ(VCEG)およびISO/IECムービングピクチャエキスパートグループ(MPEG)のビデオコーディング共同研究部会(JCT-VC)によって完成された。MV-HEVCと呼ばれるHEVCに対するマルチビュー拡張、SHVCと呼ばれるHEVCに対するスケーラブル拡張、または任意の他の適切なコーディングプロトコルを含む、HEVCに対する様々な拡張が、マルチレイヤビデオコーディングを扱い、同様にJCT-VCによって開発されている。
本明細書において説明される多くの実施形態が、HEVC規格、またはその拡張を使用する例を説明する。しかしながら、本明細書において説明される技法およびシステムは、AVC、MPEG、これらの拡張、または他の適切なコーディング規格などの、他のコーディング規格にも適用可能であり得る。したがって、本明細書において説明される技法およびシステムは特定のビデオコーディング規格を参照して説明されることがあるが、この説明はその特定の規格だけに当てはまると解釈されるべきではないことを当業者は理解するだろう。
ビデオソース102は、ビデオデータを符号化デバイス104に提供することができる。ビデオソース102はソースデバイスの一部であってよく、またはソースデバイス以外のデバイスの一部であってよい。ビデオソース102は、ビデオキャプチャデバイス(たとえば、ビデオカメラ、カメラ電話、ビデオ電話など)、記憶されたビデオを格納するビデオアーカイブ、ビデオデータを提供するビデオサーバもしくはコンテンツプロバイダ、ビデオサーバもしくはコンテンツプロバイダからビデオを受信するビデオフィードインターフェース、コンピュータグラフィックスビデオデータを生成するためのコンピュータグラフィックスシステム、そのようなソースの組合せ、または任意の他の適切なビデオソースを含み得る。
ビデオソース102からのビデオデータは、1つまたは複数の入力ピクチャまたはフレームを含み得る。ピクチャまたはフレームは、ビデオの一部である静止画像である。符号化デバイス104のエンコーダエンジン106(またはエンコーダ)は、ビデオデータを符号化して、符号化されたビデオビットストリームを生成する。HEVCビットストリームは、たとえば、ネットワーク抽象化レイヤ(NAL)ユニットと呼ばれるデータユニットの列を含み得る。ビデオコーディングレイヤ(VCL)NALユニットおよび非VCL NALユニットを含む、NALユニットの2つのクラスがHEVC規格に存在する。VCL NALユニットは、コーディングされたピクチャデータの1つのスライスまたはスライスセグメント(以下で説明される)を含み、非VCL NALユニットは、複数のコーディングされたピクチャに関する制御情報を含む。コーディングされたピクチャおよびコーディングされたピクチャに対応する非VCL NALユニット(もしあれば)は、アクセスユニット(AU)と呼ばれる。
NALユニットは、ビデオ中のピクチャのコーディングされた表現などの、ビデオデータのコーディングされた表現(符号化されたビデオビットストリーム)を形成するビットの列を格納し得る。エンコーダエンジン106は、各ピクチャを複数のスライスへと区分することによって、ピクチャのコーディングされた表現を生成する。スライスは他のスライスと独立であるので、スライス中の情報は、同じピクチャ内の他のスライスからのデータに依存することなくコーディングされる。スライスは、独立のスライスセグメントを含む1つまたは複数のスライスセグメントと、もしあれば、以前のスライスセグメントに依存する1つまたは複数の従属スライスセグメントとを含む、1つまたは複数のスライスセグメントを含む。スライスは次いで、ルーマサンプルおよびクロマサンプルのコーディングツリーブロック(CTB)へと区分される。ルーマサンプルのCTBおよびクロマサンプルの1つまたは複数のCTBは、サンプルのためのシンタックスとともに、コーディングツリーユニット(CTU)と呼ばれる。CTUは、HEVC符号化のための基本処理単位である。CTUは、可変サイズの複数のコーディングユニット(CU)へと分割され得る。CUは、コーディングブロック(CB)と呼ばれるルーマサンプルおよびクロマサンプルのアレイを格納する。
ルーマCBおよびクロマCBはさらに、予測ブロック(PB)へと分割され得る。PBは、インター予測のために同じ動きパラメータを使用するルーマ成分またはクロマ成分のサンプルのブロックである。ルーマPBおよび1つまたは複数のクロマPBは、関連するシンタックスとともに、予測ユニット(PU)を形成する。動きパラメータのセットは、各PUのためのビットストリームにおいてシグナリングされ、ルーマPBおよび1つまたは複数のクロマPBのインター予測のために使用される。CBはまた、1つまたは複数の変換ブロック(TB)へと区分され得る。TBは、同じ2次元変換が予測残差信号をコーディングするために適用される色成分のサンプルの正方形ブロックを表す。変換ユニット(TU)は、ルーマサンプルおよびクロマサンプルのTBと、対応するシンタックス要素とを表す。
CUのサイズは、コーディングノードのサイズに対応し、形状が正方形である。たとえば、CUのサイズは8×8のサンプル、16×16のサンプル、32×32のサンプル、64×64のサンプル、または最大で対応するCTUのサイズまでの任意の他の適切なサイズであり得る。「N×N」という語句は、垂直方向および水平方向のビデオブロックのピクセルの寸法(たとえば、8ピクセル×8ピクセル)を指すために使用される。ブロック中のピクセルは、行および列に配置され得る。いくつかの実施形態では、ブロックは、水平方向において垂直方向と同じ数のピクセルを有しないことがある。CUと関連付けられたシンタックスデータは、たとえば、1つまたは複数のPUへのCUの区分を記述し得る。区分モードは、CUがイントラ予測モード符号化されるか、インター予測モード符号化されるかで異なり得る。PUは、形状が非正方形であるように区分され得る。CUと関連付けられたシンタックスデータはまた、たとえば、CTUに従った1つまたは複数のTUへのCUの区分を記述し得る。TUは、形状が正方形または非正方形であり得る。
HEVC規格によれば、変換ユニット(TU)を使用して変換が実行され得る。TUは異なるCUに対しては異なり得る。TUは、所与のCU内のPUのサイズに基づいてサイズ決定され得る。TUは、PUと同じサイズであることがあり、またはPUよりも小さいことがある。いくつかの例では、CUに対応する残差サンプルは残差4分木(RQT)として知られる4分木構造を使用して、より小さいユニットに細分され得る。RQTのリーフノードは、TUに対応し得る。TUと関連付けられたピクセル差分値は、変換係数を生成するために変換され得る。変換係数は次いで、エンコーダエンジン106によって量子化され得る。
ビデオデータのピクチャがCUへと区分されると、エンコーダエンジン106は、予測モードを使用して各PUを予測する。予測は次いで、残差を得るために元のビデオデータから差し引かれる(以下で説明される)。各CUに対して、予測モードはシンタックスデータを使用してビットストリームの内部でシグナリングされ得る。予測モードは、イントラ予測(またはイントラピクチャ予測)またはインター予測(またはインターピクチャ予測)を含み得る。イントラ予測を使用して、各PUは、たとえば、PUに対する平均値を見出すためのDC予測、平面をPUに合わせるための平面予測、近隣のデータから外挿するための方向予測、または任意の他の適切なタイプの予測を使用して、同じピクチャ中の近隣の画像データから予測される。イントラ予測を使用すると、各PUは、(出力順序で現在のピクチャの前または後の)1つまたは複数の参照ピクチャ中の画像データからの動き補償予測を使用して予測される。
PUは、予測プロセスに関するデータを含み得る。たとえば、PUがイントラ予測を使用して符号化されるとき、PUは、PUのイントラ予測モードを記述するデータを含み得る。別の例として、PUがインター予測を使用して符号化されるとき、PUは、PUの動きベクトルを定義するデータを含み得る。PUの動きベクトルを定義するデータは、たとえば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルの分解能(たとえば、4分の1ピクセル精度もしくは8分の1ピクセル精度)、動きベクトルが指す参照ピクチャ、および/または動きベクトルのための参照ピクチャリスト(たとえば、リスト0、リスト1、もしくはリストC)を記述し得る。
符号化デバイス104は次いで、変換および量子化を実行し得る。たとえば、予測に続いて、ビデオエンジン106は、PUに対応する残差値を計算し得る。残差値はピクセル差分値を備え得る。予測が実行された後で残り得る任意の残差データが、ブロック変換を使用して変換され、この変換は、離散コサイン変換、離散サイン変換、整数変換、ウェーブレット変換、または他の適切な変換関数に基づき得る。いくつかの場合、1つまたは複数のブロック変換(たとえば、サイズ32×32、16×16、8×8、4×4など)が各CU中の残差データに適用され得る。いくつかの実施形態では、TUは、エンコーダエンジン106によって実施される変換と量子化のプロセスのために使用され得る。1つまたは複数のPUを有する所与のCUはまた、1つまたは複数のTUを含み得る。以下でさらに詳細に説明されるように、残差値は、ブロック変換を使用して変換係数へと変換されてよく、次いで、エントロピーコーディングのための直列化された変換係数を生成するためにTUを使用して量子化され走査されてよい。
いくつかの実施形態では、CUのPUを使用するイントラ予測コーディングまたはインター予測コーディングに続いて、エンコーダエンジン106は、CUのTUのための残差データを計算し得る。PUは、空間領域(またはピクセル領域)中のピクセルデータを備え得る。TUは、ブロック変換の適用後の変換領域中の係数を備え得る。前に述べられたように、残差データは、符号化されていないピクチャのピクセルと、PUに対応する予測値との間のピクセル差分値に対応し得る。エンコーダエンジン106は、CUのための残差データを含むTUを形成することができ、次いで、CUのための変換係数を生成するためにTUを変換することができる。
エンコーダエンジン106は、変換係数の量子化を実行し得る。量子化は、係数を表すために使用されるデータの量を減らすために変換係数を量子化することによって、さらなる圧縮をもたらす。たとえば、量子化は、係数の一部またはすべてと関連付けられるビット深度を低減し得る。一例では、nビットの値を伴う係数は、量子化の間にmビットの値に切り捨てられてよく、nはmよりも大きい。
量子化が実行されると、コーディングされたビットストリームは、量子化された変換係数、予測情報(たとえば、予測モード、動きベクトルなど)、区分情報、および他のシンタックスデータなどの任意の他の適切なデータを含む。コーディングされたビットストリームの異なる要素は次いで、エンコーダエンジン106によってエントロピー符号化され得る。いくつかの例では、エンコーダエンジン106は、エントロピー符号化され得る直列化されたベクトルを生成するために、事前に定義された走査順序を利用して量子化された変換係数を走査し得る。いくつかの例では、エンコーダエンジン106は適応走査を実行し得る。量子化された変換係数を走査して1次元ベクトルを形成した後で、エンコーダエンジン106は、1次元ベクトルをエントロピー符号化することができる。たとえば、エンコーダエンジン106は、コンテキスト適応可変長コーディング、コンテキスト適応バイナリ算術コーディング、シンタックスベースコンテキスト適応バイナリ算術コーディング、確率間隔区分エントロピーコーディング、または別の適切なエントロピー符号化技法を使用し得る。
前に説明されたように、HEVCビットストリームはNALユニットのグループを含む。コーディングされたビデオビットストリームを形成するビットの列は、VCL NALユニット中に存在する。非VCL NALユニットは、符号化されたビデオビットストリームに関する高水準の情報を他の情報に加えて有する、パラメータセットを格納し得る。たとえば、パラメータセットは、ビデオパラメータセット(VPS)、シーケンスパラメータセット(SPS)、およびピクチャパラメータセット(PPS)を含み得る。パラメータセットの目標は、ビットレートの効率性、誤り耐性、および、レイヤインターフェースをシステムに提供することである。各スライスは、単一のアクティブなPPS、SPS、およびVPSを参照して、復号デバイス112がスライスを復号するために使用し得る情報にアクセスする。VPS ID、SPS ID、およびPPS IDを含む識別子(ID)が、各パラメータセットのためにコーディングされ得る。SPSはSPS IDおよびVPS IDを含む。PPSはPPS IDおよびSPS IDを含む。各スライスヘッダはPPS IDを含む。IDを使用して、所与のスライスに対してアクティブパラメータセットが識別され得る。
PPSは、所与のピクチャ中のすべてのスライスに適用される情報を含む。これにより、ピクチャ中のすべてのスライスが同じPPSを参照する。異なるピクチャ中のスライスも同じPPSを参照することがある。SPSは、同じコーディングされたビデオシーケンスまたはビットストリーム中のすべてのピクチャに適用される情報を含む。コーディングされたビデオシーケンスは、ランダムアクセスポイントピクチャ(たとえば、瞬時復号リフレッシュ(IDR)ピクチャまたはブロークンリンクアクセス(BLA)ピクチャ、または他の適切なランダムアクセスポイントピクチャ)で開始し、次のランダムアクセスポイントピクチャ(またはビットストリームの終わり)の直前までのすべてのアクセスユニットを含む、一連のアクセスユニットである。SPS中の情報は通常、コーディングされたビデオシーケンス内でピクチャごとに変化しない。コーディングされたビデオシーケンス中のすべてのピクチャが、同じSPSを使用する。VPSは、コーディングされたビデオシーケンスまたはビットストリーム内のすべてのレイヤに適用される情報を含む。VPSは、コーディングされたビデオシーケンス全体に適用されるシンタックス要素を伴うシンタックス構造を含む。いくつかの実施形態では、VPS、SPS、またはPPSは、符号化されたビットストリームとともに帯域内で送信され得る。いくつかの実施形態では、VPS、SPS、またはPPSは、コーディングされたビデオデータを含むNALユニットとは別の送信において帯域外で送信され得る。
符号化デバイス104の出力110は、符号化されたビデオデータを構成するNALユニットを、通信リンク120を通じて受信デバイスの復号デバイス112に送信し得る。復号デバイス112の入力114はNALユニットを受信し得る。通信リンク120は、ワイヤレスネットワーク、有線ネットワーク、または有線ネットワークとワイヤレスネットワークの組合せを使用して送信される信号を含み得る。ワイヤレスネットワークは、任意のワイヤレスインターフェースまたはワイヤレスインターフェースの組合せを含んでよく、任意の適切なワイヤレスネットワーク(たとえば、インターネットまたは他のワイドエリアネットワーク、パケットベースネットワーク、WiFi(商標)、高周波(RF)、UWB、WiFi-Direct、セルラー、ロングタームエボリューション(LTE)、WiMax(商標)など)を含み得る。有線ネットワークは、任意の有線インターフェース(たとえば、ファイバー、イーサネット(登録商標)、電力線イーサネット(登録商標)、同軸ケーブルを通じたイーサネット(登録商標)、デジタル信号線(DSL)など)を含み得る。有線および/またはワイヤレスネットワークは、基地局、ルータ、アクセスポイント、ブリッジ、ゲートウェイ、スイッチなどの様々な機器を使用して実装され得る。符号化されたビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、受信デバイスに送信され得る。
いくつかの例では、符号化デバイス104は、符号化されたビデオデータを記憶装置108に記憶し得る。出力110は、エンコーダエンジン106から、または記憶装置108から、符号化されたビデオデータを取り出し得る。記憶装置108は、様々な分散されたデータ記憶媒体またはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。たとえば、記憶装置108は、ハードドライブ、ストレージディスク、フラッシュメモリ、揮発性メモリもしくは非揮発性メモリ、または符号化されたビデオデータを記憶するための任意の他の適切なデジタル記憶媒体を含み得る。
入力114は、符号化されたビデオデータを受信し、デコーダエンジン116による後の使用のためにビデオデータをデコーダエンジン116または記憶装置118へ提供することができる。デコーダエンジン116は、エントロピー復号(たとえば、エントロピーデコーダを使用した)により、および、符号化されたビデオデータを構成するコーディングされたビデオシーケンスの要素を抽出することにより、符号化されたビデオデータを復号することができる。デコーダエンジン116は次いで大きさを変更し、符号化されたビデオデータに対して逆変換を実行することができる。次いで、残差がデコーダエンジン116の予測段に渡される。デコーダエンジン116は次いで、ピクセルのブロック(たとえば、PU)を予測する。いくつかの例では、予測は逆変換の出力に加算される。
復号デバイス112は、復号されたビデオをビデオ宛先デバイス122に出力することができ、ビデオ宛先デバイス122は、復号されたビデオデータをコンテンツの消費者に表示するためのディスプレイまたは他の出力デバイスを含み得る。いくつかの場合、ビデオ宛先デバイス122は、復号デバイス112を含む受信デバイスの一部であり得る。いくつかの態様では、ビデオ宛先デバイス122は、受信デバイス以外の別のデバイスの一部であり得る。
いくつかの実施形態では、ビデオ符号化デバイス104および/またはビデオ復号デバイス112は、それぞれ、オーディオ符号化デバイスおよびオーディオ復号デバイスと統合され得る。ビデオ符号化デバイス104および/またはビデオ復号デバイス112はまた、1つもしくは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアまたはそれらの任意の組合せなどの、上で説明されたコーディング技法を実施するのに必要な他のハードウェアまたはソフトウェアを含み得る。ビデオ符号化デバイス104およびビデオ復号デバイス112は、それぞれのデバイスにおいて組み合わされたエンコーダ/デコーダ(コーデック)の一部として統合され得る。符号化デバイス104の具体的な詳細の例が、図16を参照して以下で説明される。復号デバイス112の具体的な詳細の例が、図17を参照して以下で説明される。
上で述べられたように、HEVC規格に対する拡張は、MV-HEVCと呼ばれるマルチビュービデオコーディング拡張と、SHVCと呼ばれるスケーラブルビデオコーディング拡張とを含む。MV-HEVC拡張およびSHVC拡張は、階層化されたコーディングという概念を共有しており、このとき、異なるレイヤが符号化されたビデオビットストリームに含まれる。コーディングされたビデオシーケンス中の各レイヤは、固有のレイヤ識別子(ID)によってアドレス指定される。レイヤIDは、NALユニットが関連付けられるレイヤを識別するために、NALユニットのヘッダ中に存在し得る。MV-HEVCでは、異なるレイヤは通常、ビデオビットストリーム中の同じシーンの異なるビューを表す。SHVCでは、空間分解能(またはピクチャ分解能)が異なる、または再構築の忠実度が異なるビデオビットストリームを表す、異なるスケーラブルレイヤが提供される。スケーラブルレイヤは、ベースレイヤ(レイヤID=0)および1つまたは複数のエンハンスメントレイヤ(レイヤID=1、2、...n)を含み得る。ベースレイヤは、HEVCの第1のバージョンのプロファイルに準拠してよく、ビットストリーム中の最低の利用可能なレイヤを表す。エンハンスメントレイヤは、ベースレイヤと比較して、空間分解能、時間分解能すなわちフレームレート、および/または再構築の忠実度(または品質)が向上している。エンハンスメントレイヤは、階層的に編成され、より下のレイヤに依存することがある(または依存しないことがある)。いくつかの例では、異なるレイヤは、単一規格のコーデックを使用してコーディングされ得る(たとえば、すべてのレイヤが、HEVC、SHVC、または他のコーディング規格を使用して符号化される)。いくつかの例では、異なるレイヤは複数規格のコーデックを使用してコーディングされ得る。たとえば、ベースレイヤはAVCを使用してコーディングされ得るが、1つまたは複数のエンハンスメントレイヤはHEVC規格に対するSHVCおよび/またはMV-HEVC拡張を使用してコーディングされ得る。
一般に、レイヤは、VCL NALユニットのセットと、非VCL NALユニットの対応するセットとを含む。NALユニットの各々は、特定のレイヤIDの値に割り当てられる。あるレイヤがより下のレイヤに依存し得るという意味で、レイヤは階層的であり得る。レイヤセットは、自己完結型のビットストリーム内で表されるレイヤのセットを指し、自己完結型とは、レイヤセット内のレイヤが復号プロセスにおいてレイヤセット中の他のレイヤに依存し得るが、復号のためにいずれの他のレイヤにも依存しないことを意味する。したがって、レイヤセット中のレイヤは、ビデオコンテンツを表し得る独立のビットストリームを形成し得る。レイヤセット中のレイヤのセットは、サブビットストリーム抽出プロセスの動作によって、別のビットストリームから取得され得る。レイヤセットは、いくつかのパラメータに従って動作することをデコーダが望むときに復号されるべきレイヤのセットに対応し得る。
ビデオシーケンスを符号化するとき、多くの適用例について、デコーダのバッファ状態に対する制御権があることが有益である。これは、通信および/またはブロードキャストに当てはまる。エンコーダは、送信されたデータが、対応するピクチャの復号時間においてデコーダにおいて利用可能になるように、送信されたデータを提供すべきである。さらに、エンコーダは、デコーダの入力ビットストリームバッファ、ならびに復号されたピクチャが記憶されるピクチャバッファをビットストリームが上書きしないことを規定すべきである。
仮の参照デコーダ(HRD)が、符号化されたビデオシーケンスに対する制御権を試験するために提供される。HRDは一般に、ビデオ圧縮規格に従って符号化されたビデオシーケンスとともに動作可能であり得る。仮の参照デコーダの構成および動作のためのパラメータは、ビデオパラメータセット(VPS)および/またはシーケンスパラメータセット(SPS)において提供され得る。以下で説明されるように、HRDパラメータは、ビットストリームのための複数の動作点に対して提供され得る。このことは、さらなる処理(たとえば、サブビットストリームの抽出)の後のビットストリームの特性についての情報をもたらす。HRDは、生成されたビットストリームを制御するためにエンコーダにおいて適用されてよく、規格の仕様の要件に対する所与のビットストリームの適合を検証するためにも適用されてよい。さらに、HRDによって定義される性能およびタイミングの要件に対する、対象デコーダの実装形態の適合が試験され得る。エンコーダは、ビットストリームのための、またはビットストリームの一部もしくはすべてのレイヤのための、HRDパラメータの一部またはすべてのシグナリングを選択的に省略することができる。このことは、ビデオ圧縮規格に対するビットストリームの適合の検証に関するいくつかの制約をもたらし得る。
HRDパラメータのセットは、マルチレイヤ機能を可能にするために(たとえば、シーケンスパラメータセットまたはビデオパラメータセットにおいて、または他のメッセージングにおいて)提供され、パラメータの各セットは動作点に対応する。動作点は、サブビットストリーム抽出に使用されるパラメータを定義し、ターゲットレイヤのリスト(その動作点のためのレイヤセット)およびターゲット最上位時間レイヤを含む。複数の動作点が所与のビットストリームに適用可能であり得る。動作点は、レイヤセット中のすべてのレイヤを含むか、レイヤセットのサブセットとして形成されるビットストリームであるかのいずれかであり得る。たとえば、ビットストリームの動作点は、レイヤ識別子および時間識別子のセットと関連付けられ得る。レイヤ識別子リストは、動作点に含まれるべきレイヤを識別するために使用され得る。レイヤ識別子リストは、パラメータセット(たとえば、VPS)に含まれ得る。レイヤ識別子リストは、レイヤ識別子(ID)の値のリスト(たとえば、シンタックス要素nuh_layer_idによって示される)を含み得る。いくつかの場合、レイヤIDの値は非負の整数を含むことがあり、各レイヤは固有のレイヤIDの値と関連付けられ得るので、各レイヤIDの値は特定のレイヤを識別する。最高時間ID(たとえば、変数TemporalIdによって特定される)は、時間的サブセットを定義するために使用され得る。いくつかの実施形態では、レイヤ識別子リストおよびターゲット最高時間IDは、ビットストリームから動作点を抽出するための入力として使用され得る。たとえば、NALユニットがある動作点と関連付けられるレイヤ識別子のセットに含まれるレイヤ識別子を有し、NALユニットの時間識別子がその動作点の時間識別子以下であるとき、NALユニットはその動作点と関連付けられる。ターゲット出力レイヤは出力されるべきレイヤであり、出力レイヤセットはターゲット出力レイヤのセットと関連付けられるレイヤセットである。たとえば、出力レイヤセットは規定されたレイヤセットのレイヤを含むレイヤのセットであり、レイヤのセット中の1つまたは複数のレイヤが出力レイヤとして示される。出力動作点は特定の出力レイヤセットに対応する。たとえば、出力動作点は、入力ビットストリーム、ターゲット最高時間識別子(TemporalId)、およびターゲットレイヤ識別子リストを入力として伴い、出力レイヤのセットと関連付けられる、サブビットストリーム抽出プロセスの動作によって入力ビットストリームから作成されるビットストリームを含み得る。
前に説明されたように、パラメータセットは、符号化されたビデオビットストリーム(たとえば、1つまたは複数の非VCL NALユニット)とともに提供される。パラメータセットは、符号化されたビデオビットストリームの様々なパラメータを定義する高水準のシンタックス情報を含む。パラメータセットの一例は、ビデオパラメータセット(VPS)を含む。VPSは、基本部分(または基本VPS)と拡張部分(またはVPS拡張)を含む、2つの部分を有し得る。基本VPSはHEVC規格の最初の版において定義されており、VPS拡張はHEVC規格のより後の版において定義されている。基本VPSは、HEVCベースレイヤ(または互換レイヤ)に関する情報を含み得る。基本VPSは、時間レイヤの最大の数を含む、時間スケーラビリティ情報も含み得る。1つまたは複数のレイヤセットが、基本VPSにおいて定義され得る。たとえば、基本VPSは、ベースレイヤを含むレイヤセットに対応するレイヤセット0を定義し得る。VPS拡張は、ベースレイヤの上の1つまたは複数の追加のレイヤに関する情報を含み得る。たとえば、1つまたは複数の追加のレイヤセットは、基本部分においては定義されていない、VPS拡張において定義され得る。
図2は、ビデオパラメータセットの基本部分(基本VPS202)および拡張部分(VPS拡張204)において定義されるレイヤセットの例を示す。基本VPS202は、レイヤセット0、レイヤセット1、レイヤセット2、およびレイヤセット3を定義する。レイヤセット0はレイヤ0を含む。レイヤセット1は、レイヤ0およびレイヤ1を含む。レイヤセット2は、レイヤ0、レイヤ1、およびレイヤ2を含む。レイヤセット3は、レイヤ0、レイヤ1、レイヤ2、およびレイヤ3を含む。VPS拡張204は、基本VPS202において定義されない追加のレイヤセットを定義する。追加のレイヤセットは、レイヤセット4およびレイヤセット5を含む。追加のレイヤセット4はレイヤ4を含み、追加のレイヤセット5はレイヤ5およびレイヤ6を含む。いくつかの例では、レイヤセット0はベースレイヤであってよく、レイヤ1、2、3、4、5、および6はエンハンスメントレイヤであってよい。たとえば、レイヤ0は、レイヤ識別子(ID)が0に等しいベースレイヤであり得る。ベースレイヤは、互換レイヤとも呼ばれることがある。ベースレイヤは、HEVCの第1のバージョンのプロファイルに準拠し、ビットストリーム中の最低の利用可能なレイヤを表す。レイヤ1、2、3、4、5、および6は、対応するレイヤIDを有するエンハンスメントレイヤを含み得る。たとえば、レイヤ1は1に等しいレイヤIDを有し、レイヤ2は2に等しいレイヤIDを有し、レイヤ3は3に等しいレイヤIDを有し、レイヤ4は4に等しいレイヤIDを有し、レイヤ5は5に等しいレイヤIDを有し、レイヤ6は6に等しいレイヤIDを有する。エンハンスメントレイヤは、ベースレイヤと比較して、空間分解能、時間分解能すなわちフレームレート、および/または再構築の忠実度(または品質)が向上している。いくつかの例では、レイヤ0は7.5Hzというフレームレートおよび64キロバイト毎秒というビットレートを有してよく、レイヤ1は15Hzというフレームレートおよび128キロバイト毎秒というビットレートを有してよく、レイヤ2は15Hzというフレームレートおよび256キロバイト毎秒というビットレートを有してよく、レイヤ3は30Hzというフレームレートおよび512キロバイト毎秒というビットレートを有してよく、レイヤ4は30Hzというフレームレートおよび1メガバイト毎秒というビットレートを有してよく、レイヤ5は60Hzというフレームレートおよび1.5メガバイト毎秒というビットレートを有してよく、レイヤ6は60Hzというフレームレートおよび2メガバイト毎秒というビットレートを有してよい。いくつかの例では、フレームレートはピクチャレートとも呼ばれることがあるので、異なるレイヤ0、1、2、3、4、5、および6も異なるピクチャレートを有し得る。これらの数字は例示としてのみ与えられ、具体的な実装形態に従ってレイヤは他のフレームレートおよびビットレートを有し得ることを、当業者は理解するであろう。
基本VPS202において定義される1つまたは複数のレイヤセットの特性を定義するシグナリング情報が、VPSにおいて提供される。いくつかの例では、シグナリング情報は1つまたは複数のレイヤセットのためのレート情報を定義し得る。レート情報は、たとえば、ビットレート情報、ピクチャレート情報、または、所与のレイヤセット中のレイヤに適用される他の適切なレート情報を含む。一例では、所与のレイヤセットのためのビットレート情報は、所与のレイヤセットのレイヤの平均ビットレートまたは平均ピクチャレートを含み得る。別の例では、ビットレート情報は、所与のレイヤセットのレイヤの最大ビットレートを含み得る。レート情報の他の例が以下で与えられる。いくつかの例では、シグナリング情報は、レイヤセット中のレイヤが出力レイヤセットのターゲット出力レイヤであるかどうかを示すターゲット出力情報を含み得る。たとえば、ターゲット出力情報は、output_layer_flag[i][j]シンタックス要素を含み得る。本明細書において使用される場合、変数[i]および[j]はi番目のレイヤセットのj番目のレイヤを指す。レート情報およびターゲット出力情報は、レイヤセットおよび追加のレイヤセットを含むすべてのレイヤセット(VPSの基本部分および拡張部分において定義される)のためにシグナリングされるべきであり、それは、クライアントがそのような情報に基づいて追加のレイヤセットを要求または消費することを選び得るからである。しかしながら、HEVC規格において定義される現在のシグナリング方式では、シグナリング情報はVPSの基本部分において定義されるレイヤセットだけのためにシグナリングされる。
基本VPS(たとえば、基本VPS202)においてシグナリングされるレイヤセットの数は、VPSのシンタックス要素によって示される。たとえば、図3は、VPS拡張のシンタックス構造300の例を示す。エントリ302は、基本VPSにおいてシグナリングされるレイヤセットの数を示す、vps_num_layer_sets_minus1と名付けられたシンタックス要素306を含む。output_layer_flag[i][j]と名付けられたシンタックス要素304は、レイヤセット中のレイヤが出力レイヤセットのターゲット出力レイヤであるかどうかを示す。vps_num_layer_sets_minus1シンタックス要素306は、(VPS拡張においてシグナリングされる追加のレイヤセットではなく)基本VPSにおいてシグナリングされるレイヤセットの数を示すので、output_layer_flag[i][j]シンタックス要素304は、基本VPSにおいて定義されるレイヤセットだけのためにシグナリングされる。
基本VPSおよびVPS拡張においてシグナリングされるレイヤセット(もしあれば、VPS拡張においてシグナリングされる追加のレイヤセットを含む)の総数は、VPSのシンタックス要素に基づいて導出される変数NumLayerSetsによって示される。本明細書において説明される実施形態は、シグナリング情報(たとえば、レート情報およびターゲット出力情報)が、VPS拡張204において定義される追加のレイヤセットを含むすべてのレイヤセットのためにシグナリングされるように、レイヤセットに関するVPSにおける情報のシグナリングを更新することを含む。たとえば、図4に示されるように、vps_num_layer_sets_minus1シンタックス要素306がVPS拡張から削除されてよく、新たなシンタックス構造400を作成するためにNumLayerSets変数406がエントリ302に追加されてよい。NumLayerSets変数406は基本VPSおよびVPS拡張においてシグナリングされるレイヤセットの総数を示すので、output_layer_flag[i][j]シンタックス要素304は、基本VPSにおいて定義されるレイヤセットおよびVPS拡張において定義される追加のレイヤセットのためにシグナリングされる。
図5は、VPSのシンタックス構造500の別の例を示す。シンタックス構造500は、VPS拡張のビデオ使用可能性情報(VUI)部分の一部であり、これはVPS VUIとも本明細書において呼ばれ得る。VPS VUIシンタックス構造は、出力および表示のために復号されたビデオを準備するのに有用な情報を格納する。VPS VUIは、レート情報、サンプルのアスペクト比、符号化されたビデオの元の色空間および表現、ピクチャタイミング情報、または他の情報などの、符号化されたビデオに関する情報を含み得る。VUIシンタックス構造の様々な部分を含めることは任意選択であり、具体的な実装形態または適用例により要求される通りに決められ得る。いくつかの態様では、対応するVUIパラメータが提供されていない場合に、いくつかのまたはすべてのVUIパラメータに対してデフォルトの値が規定され得る。
図5の例では、VPS VUIのシンタックス構造500は、VPSにおいてシグナリングされる1つまたは複数のレイヤセットに対してビットレート情報が利用可能であるかどうかを示すフラグを含む、bit_rate_present_flag[i][j]シンタックス要素504を含む。たとえば、フラグに対する0または1の値は、1つまたは複数のレイヤセットに対してビットレート情報が利用可能であることを示し得る。VPS VUIのシンタックス構造500はさらに、VPSにおいてシグナリングされる1つまたは複数のレイヤセットに対してピクチャレート情報が利用可能であるかどうかを示すフラグを含む、pic_rate_present_flag[i][j]シンタックス要素506を含む。たとえば、フラグに対する0または1の値は、1つまたは複数のレイヤセットに対してピクチャレート情報が利用可能であることを示し得る。VPS VUIのシンタックス構造500はまた、VPSにおいてシグナリングされる1つまたは複数のレイヤセットの各レイヤセットに対する平均ビットレートを示す、avg_bit_rate[i][j]シンタックス要素508を含む。VPS VUIのシンタックス構造500はさらに、VPSにおいてシグナリングされる1つまたは複数のレイヤセットの各レイヤセットに対する最大ビットレートを示す、max_bit_rateシンタックス要素510を含む。VPS VUIのシンタックス構造500はまた、VPSにおいてシグナリングされる1つまたは複数のレイヤセットのあるレイヤセットが不変のピクチャレートを有するかどうかを示す、constant_pic_rate_idc[i][j]シンタックス要素512を含む。VPS VUIのシンタックス構造500はさらに、VPSにおいてシグナリングされる1つまたは複数のレイヤセットの各レイヤセットに対する平均ピクチャレートを示す、avg_pic_rate[i][j]シンタックス要素514を含む。シンタックス要素504〜514は例であり、シグナリング情報のより多数または少数のセットがVPS VUIのシンタックス構造500において存在し得ることを、当業者は理解するであろう。
シンタックス要素504〜514において提供される情報は、VPS拡張において定義されるレイヤセットのためにシグナリングされ、VPS拡張はシンタックス構造500のエントリ502において提供される。エントリ502は、シグナリングされるレイヤセットの数を示すシンタックス要素を含む。図5に示されるエントリ502は、vps_num_layer_sets_minus1シンタックス要素516を含み、これは、(VPS拡張においてシグナリングされる追加のレイヤセットではなく)基本VPSにおいてシグナリングされるレイヤセットの数を示す。したがって、レート情報シンタックス要素504〜514は、基本VPSにおいて定義されるレイヤセットだけのためにシグナリングされる。図6は、VPS拡張において定義される追加のレイヤセットを含む、すべてのレイヤセットに関する更新されたシグナリング情報を伴うVPS VUIのシンタックス構造600の例を示す。図6の例では、vps_num_layer_sets_minus1シンタックス要素516がVPS VUIから削除され、新たなシンタックス構造600を作成するためにNumLayerSets変数616がエントリ502に追加される。NumLayerSets変数616は基本VPSおよびVPS拡張においてシグナリングされるレイヤセットの総数を示すので、シンタックス要素504〜514においてシグナリングされるレート情報は、基本VPSにおいて定義されるレイヤセットおよびVPS拡張において定義される追加のレイヤセットのためにシグナリングされる。
図7は、ビデオデータを符号化するプロセス700のある実施形態を示す。プロセス700は、ビデオパラメータセットなどのパラメータセットにおいて定義されるレイヤセット(追加のレイヤセットを含む)のための情報をシグナリングするために実施される。いくつかの態様では、プロセス700は、図1または図16に示される符号化デバイス104などの、コンピューティングデバイスまたは装置によって実行され得る。たとえば、コンピューティングデバイスまたは装置は、エンコーダ、またはプロセッサ、マイクロプロセッサ、マイクロコンピュータ、または、プロセス700のステップを実行するように構成されるエンコーダの他のコンポーネントを含み得る。
プロセス700は論理フロー図として示され、その動作は、ハードウェア、コンピュータ命令、またはこれらの組合せで実施され得る動作の列を表す。コンピュータ命令の文脈では、動作は、1つまたは複数のプロセッサによって実行されると列挙された動作を実行する、1つまたは複数のコンピュータ可読記憶媒体に記憶されたコンピュータ実行可能命令を表す。一般に、コンピュータ実行可能命令は、特定の機能を実行し、または特定のデータタイプを実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。動作が説明される順序は限定として見なされることを意図しておらず、任意の数の説明される動作が、プロセスを実施するために任意の順序でかつ/または並列に組み合わされ得る。
加えて、プロセス700は、実行可能な命令により構成された1つまたは複数のコンピュータシステムの制御のもとで実行されてよく、1つまたは複数のプロセッサ上で、ハードウェアによって、またはこれらの組合せで集合的に実行されるコード(たとえば、実行可能命令、1つまたは複数のコンピュータプログラム、または1つまたは複数のアプリケーション)として実装され得る。上で述べられたように、コードは、たとえば、1つまたは複数のプロセッサにより実行可能な複数の命令を備えるコンピュータプログラムの形式で、コンピュータ可読記憶媒体または機械可読記憶媒体に記憶され得る。コンピュータ可読記憶媒体または機械可読記憶媒体は非一時的であり得る。
702において、ビデオデータを符号化するプロセス700は、1つまたは複数のレイヤセットおよび1つまたは複数の追加のレイヤセットを備える符号化されたビデオビットストリームを生成することを含む。前に説明されたように、レイヤセットおよび追加のレイヤセットの各々は、1つまたは複数のレイヤを含む。符号化されたビデオビットストリームは、符号化されたビデオビットストリームのパラメータを定義するビデオパラメータセットを含む。1つまたは複数のレイヤセットはビデオパラメータセットの基本部分において定義され、1つまたは複数の追加のレイヤセットはビデオパラメータセットの拡張部分において定義される。符号化されたビデオビットストリームは、HEVCコーディング技法、または他の適切なコーディング技法を使用して符号化され得る。一例では、ビデオパラメータセット(VPS)の基本部分において定義される1つまたは複数のレイヤセットは、図2に示される基本VPS202において定義されるレイヤセット0、レイヤセット1、レイヤセット2、およびレイヤセット3を含み、1つまたは複数の追加のレイヤセットは、図2に示されるVPS拡張204において定義されるレイヤセット4およびレイヤセット5を含む。1つまたは複数のレイヤセットおよび/または1つまたは複数の追加のレイヤセットは、図2の例に示されるもの以外のレイヤセットを含み得ることを当業者は理解するであろう。
704において、プロセス700は、ビデオパラメータセットにおいて、1つまたは複数のレイヤセットおよび1つまたは複数の追加のレイヤセットに関する情報をシグナリングするための、1つまたは複数のシンタックス要素を提供することを含む。この情報は、ビデオパラメータセットの基本部分において定義される1つまたは複数のレイヤセットのためのレート情報と、ビデオパラメータセットの拡張部分において定義される1つまたは複数の追加のレイヤセットのためのレート情報とを含む。したがって、レート情報は、基本VPSにおいて定義されるレイヤセットと、VPS拡張において定義される追加のレイヤセットの両方に対してシグナリングされる。たとえば、レート情報は、ビデオパラメータセットの基本部分において定義される1つまたは複数のレイヤセットのために、および、VPS VUIのエントリ502にNumLayerSets変数616を挿入することによって1つまたは複数の追加のレイヤセットのためにシグナリングされ得る。いくつかの実施形態では、1つまたは複数のレイヤセットおよび1つまたは複数の追加のレイヤセットの各々の異なるレイヤセットに対して、異なるレート情報がシグナリングされる。たとえば、レート情報の第1のセットは基本VPS202において定義されるレイヤセット0のためにシグナリングされてよく、レート情報の第2のセットはVPS拡張204において定義されるレイヤセット4のためにシグナリングされてよい。
いくつかの実施形態では、レート情報はビットレート情報を含む。いくつかの実施形態では、レート情報はピクチャレート情報を含む。いくつかの例では、レート情報は、図5および図6に示されるシンタックス要素504〜514のいずれかに含まれ得る。たとえば、ビデオパラメータセット中の1つまたは複数のシンタックス要素は、ビットレート情報が追加のレイヤセットに対して利用可能であるかどうかを示すフラグを含む。このフラグは、ビットレート情報が追加のレイヤセットに対して利用可能であることを示すために、0または1という値に設定され得る。1つまたは複数のシンタックス要素はまた、VPSの基本部分において定義されるレイヤセットに対してビットレート情報が利用可能であるかどうかを示すフラグを含み得る。そのようなフラグの例は、図5および図6に示されるbit_rate_present_flag[i][j]シンタックス要素504である。
別の例では、ビデオパラメータセット中の1つまたは複数のシンタックス要素は、ピクチャレート情報が追加のレイヤセットに対して利用可能であるかどうかを示すフラグを含む。このフラグは、ピクチャレート情報が追加のレイヤセットに対して利用可能であることを示すために、0または1という値に設定され得る。1つまたは複数のシンタックス要素はまた、VPSの基本部分において定義されるレイヤセットに対してピクチャレート情報が利用可能であるかどうかを示すフラグを含み得る。そのようなフラグの例は、図5および図6に示されるpic_rate_present_flag[i][j]シンタックス要素506である。
別の例では、ビデオパラメータセット中の1つまたは複数のシンタックス要素は、追加のレイヤセットのための平均ビットレートを示すシンタックス要素を含む。1つまたは複数のシンタックス要素はまた、VPSの基本部分において定義されるレイヤセットに対して平均ビットレートを示す同様のシンタックス要素を含み得る。そのようなシンタックス要素の例は、図5および図6に示されるavg_bit_rate[i][j]シンタックス要素508である。
別の例では、ビデオパラメータセット中の1つまたは複数のシンタックス要素は、追加のレイヤセットのための最大ビットレートを示すシンタックス要素を含む。1つまたは複数のシンタックス要素はまた、VPSの基本部分において定義されるレイヤセットに対して最大ビットレートを示す同様のシンタックス要素を含み得る。そのようなシンタックス要素の例は、図5および図6に示されるmax_bit_rate[i][j]シンタックス要素510である。
別の例では、ビデオパラメータセット中の1つまたは複数のシンタックス要素は、追加のレイヤセットが不変のピクチャレートを有するかどうかを示すシンタックス要素を含む。1つまたは複数のシンタックス要素はまた、VPSの基本部分において定義されるレイヤセットが不変のピクチャレートを有するかどうかを示す同様のシンタックス要素を含み得る。そのようなシンタックス要素の例は、図5および図6に示されるconstant_pic_rate_idc[i][j]シンタックス要素512である。
別の例では、ビデオパラメータセット中の1つまたは複数のシンタックス要素は、追加のレイヤセットのための平均ピクチャレートを示すシンタックス要素を含む。1つまたは複数のシンタックス要素はまた、VPSの基本部分において定義されるレイヤセットに対して平均ピクチャレートを示す同様のシンタックス要素を含み得る。そのようなシンタックス要素の例は、図5および図6に示されるavg_pic_rate[i][j]シンタックス要素514である。
いくつかの実施形態では、1つまたは複数のシンタックス要素は、基本VPSにおいて定義されるレイヤセットと、VPS拡張において定義される追加のレイヤセットの両方に対してターゲット出力情報をシグナリングし得る。たとえば、ビデオパラメータセット中の1つまたは複数のシンタックス要素は、追加のレイヤセット中のレイヤが出力レイヤセットのターゲット出力レイヤであるかどうかを示すフラグを含む。このフラグは、追加のレイヤセット中のレイヤが出力レイヤセットのターゲット出力レイヤであることを示すために、0または1という値に設定され得る。1つまたは複数のシンタックス要素はまた、基本VPSにおいて定義されるレイヤセット中のレイヤが出力レイヤセットのターゲット出力レイヤであるかどうかを示す同様のフラグを含み得る。そのようなフラグの例は、図3および図4に示されるoutput_layer_flag[i][j]シンタックス要素304である。
図8は、ビデオデータを復号するプロセス800のある実施形態を示す。プロセス800は、ビデオパラメータセットなどのパラメータセットにおいて定義されるレイヤセット(追加のレイヤセットを含む)のためのシグナリング情報を受信して復号するために実施される。いくつかの態様では、プロセス800は、図1または図17に示される復号デバイス112などの、コンピューティングデバイスまたは装置によって実行され得る。たとえば、コンピューティングデバイスまたは装置は、デコーダ、またはプロセッサ、マイクロプロセッサ、マイクロコンピュータ、または、プロセス800のステップを実行するように構成されるデコーダの他のコンポーネントを含み得る。
プロセス800は論理フロー図として示され、その動作は、ハードウェア、コンピュータ命令、またはこれらの組合せで実施され得る動作の列を表す。コンピュータ命令の文脈では、動作は、1つまたは複数のプロセッサによって実行されると列挙された動作を実行する、1つまたは複数のコンピュータ可読記憶媒体に記憶されたコンピュータ実行可能命令を表す。一般に、コンピュータ実行可能命令は、特定の機能を実行し、または特定のデータタイプを実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。動作が説明される順序は限定として見なされることを意図しておらず、任意の数の説明される動作が、プロセスを実施するために任意の順序でかつ/または並列に組み合わされ得る。
加えて、プロセス800は、実行可能な命令により構成された1つまたは複数のコンピュータシステムの制御のもとで実行されてよく、1つまたは複数のプロセッサ上で、ハードウェアによって、またはこれらの組合せで集合的に実行されるコード(たとえば、実行可能命令、1つまたは複数のコンピュータプログラム、または1つまたは複数のアプリケーション)として実装され得る。上で述べられたように、コードは、たとえば、1つまたは複数のプロセッサにより実行可能な複数の命令を備えるコンピュータプログラムの形式で、コンピュータ可読記憶媒体または機械可読記憶媒体に記憶され得る。コンピュータ可読記憶媒体または機械可読記憶媒体は非一時的であり得る。
802において、ビデオデータを復号するプロセス800は、1つまたは複数のレイヤセットおよび1つまたは複数の追加のレイヤセットを備える符号化されたビデオビットストリームを取得することを含む。レイヤセットおよび追加のレイヤセットの各々は、1つまたは複数のレイヤを含む。符号化されたビデオビットストリームは、符号化されたビデオビットストリームのパラメータを定義するビデオパラメータセットを含む。1つまたは複数のレイヤセットはビデオパラメータセットの基本部分において定義され、1つまたは複数の追加のレイヤセットはビデオパラメータセットの拡張部分において定義される。符号化されたビデオビットストリームは、HEVCコーディング技法、または他の適切なコーディング技法を使用して符号化され得る。一例では、ビデオパラメータセット(VPS)の基本部分において定義される1つまたは複数のレイヤセットは、図2に示される基本VPS202において定義されるレイヤセット0、レイヤセット1、レイヤセット2、およびレイヤセット3を含み、1つまたは複数の追加のレイヤセットは、図2に示されるVPS拡張204において定義されるレイヤセット4およびレイヤセット5を含む。1つまたは複数のレイヤセットおよび/または1つまたは複数の追加のレイヤセットは、図2の例に示されるもの以外のレイヤセットを含み得ることを当業者は理解するであろう。
804において、プロセス800は、ビデオパラメータセットから1つまたは複数のシンタックス要素を復号するステップを含む。1つまたは複数のシンタックス要素は、ビデオパラメータセットの基本部分において定義される1つまたは複数のレイヤセットのためのレート情報と、ビデオパラメータセットの拡張部分において定義される1つまたは複数の追加のレイヤセットのためのレート情報とを含む。いくつかの実施形態では、1つまたは複数のシンタックス要素は、1つまたは複数のレイヤセットおよび1つまたは複数の追加のレイヤセットの各々の異なるレイヤセットに対して、異なるレート情報を含む。たとえば、レート情報の第1のセットは基本VPS202において定義されるレイヤセット0のためにシグナリングされてよく、レート情報の第2のセットはVPS拡張204において定義されるレイヤセット1のためにシグナリングされてよい。
いくつかの実施形態では、レート情報はビットレート情報を含む。いくつかの実施形態では、レート情報はピクチャレート情報を含む。いくつかの例では、レート情報は、図5および図6に示されるシンタックス要素504〜514のいずれかに含まれ得る。たとえば、ビデオパラメータセット中の1つまたは複数のシンタックス要素は、ビットレート情報が追加のレイヤセットに対して利用可能であるかどうかを示すフラグを含む。このフラグは、ビットレート情報が追加のレイヤセットに対して利用可能であることを示すために、0または1という値に設定され得る。1つまたは複数のシンタックス要素はまた、VPSの基本部分において定義されるレイヤセットに対してビットレート情報が利用可能であるかどうかを示すフラグを含み得る。そのようなフラグの例は、図5および図6に示されるbit_rate_present_flag[i][j]シンタックス要素504である。
別の例では、ビデオパラメータセット中の1つまたは複数のシンタックス要素は、ピクチャレート情報が追加のレイヤセットに対して利用可能であるかどうかを示すフラグを含む。このフラグは、ピクチャレート情報が追加のレイヤセットに対して利用可能であることを示すために、0または1という値に設定され得る。1つまたは複数のシンタックス要素はまた、VPSの基本部分において定義されるレイヤセットに対してピクチャレート情報が利用可能であるかどうかを示すフラグを含み得る。そのようなフラグの例は、図5および図6に示されるpic_rate_present_flag[i][j]シンタックス要素506である。
別の例では、ビデオパラメータセット中の1つまたは複数のシンタックス要素は、追加のレイヤセットのための平均ビットレートを示すシンタックス要素を含む。1つまたは複数のシンタックス要素はまた、VPSの基本部分において定義されるレイヤセットに対して平均ビットレートを示す同様のシンタックス要素を含み得る。そのようなシンタックス要素の例は、図5および図6に示されるavg_bit_rate[i][j]シンタックス要素508である。
別の例では、ビデオパラメータセット中の1つまたは複数のシンタックス要素は、追加のレイヤセットのための最大ビットレートを示すシンタックス要素を含む。1つまたは複数のシンタックス要素はまた、VPSの基本部分において定義されるレイヤセットに対して最大ビットレートを示す同様のシンタックス要素を含み得る。そのようなシンタックス要素の例は、図5および図6に示されるmax_bit_rate[i][j]シンタックス要素510である。
別の例では、ビデオパラメータセット中の1つまたは複数のシンタックス要素は、追加のレイヤセットが不変のピクチャレートを有するかどうかを示すシンタックス要素を含む。1つまたは複数のシンタックス要素はまた、VPSの基本部分において定義されるレイヤセットが不変のピクチャレートを有するかどうかを示す同様のシンタックス要素を含み得る。そのようなシンタックス要素の例は、図5および図6に示されるconstant_pic_rate_idc[i][j]シンタックス要素512である。
別の例では、ビデオパラメータセット中の1つまたは複数のシンタックス要素は、追加のレイヤセットのための平均ピクチャレートを示すシンタックス要素を含む。1つまたは複数のシンタックス要素はまた、VPSの基本部分において定義されるレイヤセットに対して平均ピクチャレートを示す同様のシンタックス要素を含み得る。そのようなシンタックス要素の例は、図5および図6に示されるavg_pic_rate[i][j]シンタックス要素512である。
いくつかの実施形態では、1つまたは複数のシンタックス要素は、基本VPSにおいて定義されるレイヤセットと、VPS拡張において定義される追加のレイヤセットの両方に対してターゲット出力情報をシグナリングし得る。たとえば、ビデオパラメータセット中の1つまたは複数のシンタックス要素は、追加のレイヤセット中のレイヤが出力レイヤセットのターゲット出力レイヤであるかどうかを示すフラグを含む。このフラグは、追加のレイヤセット中のレイヤが出力レイヤセットのターゲット出力レイヤであることを示すために、0または1という値に設定され得る。1つまたは複数のシンタックス要素はまた、基本VPSにおいて定義されるレイヤセット中のレイヤが出力レイヤセットのターゲット出力レイヤであるかどうかを示す同様のフラグを含み得る。そのようなフラグの例は、図3および図4に示されるoutput_layer_flag[i][j]シンタックス要素304である。
パラメータセットにおいて定義されるレイヤセット(追加のレイヤセットを含む)のための情報をシグナリングする上で説明された技法を使用して、基本VPSにおいて定義されるレイヤセットのために、また、VPS拡張において定義される追加のレイヤセットのために、レート情報およびターゲット出力情報がシグナリングされる。
さらなる実施形態では、ある条件のみにおいてパラメータセット中で仮の参照デコーダパラメータをシグナリングするための、技法およびシステムが説明される。仮の参照デコーダパラメータは、マルチレイヤ機能を可能にするためにパラメータセットにおいて提供される。仮の参照デコーダパラメータの異なるセットは、異なる動作点に対応する。仮の参照デコーダパラメータは、様々な方法で使用され得る。たとえば、ビットストリーム適合確認は、仮の参照デコーダパラメータを使用して規範試験を実行することを含み得る。エンコーダの出力に概念的に接続され、コーディングピクチャバッファ、デコーダ、および復号ピクチャバッファを含む、仮の参照デコーダによってビットストリームまたはサブビットストリームが復号され得ることを確認するために、規範試験は仮の参照デコーダパラメータを使用する。エンコーダは、適合性を満たすために、ビットストリームを作成するときに様々な制約が満たされることを確実にしなければならず、このことは、ビットストリームにおいて使用されるツールがパラメータセットにおいてシグナリングされるものと一致することを確実にすること、仮の参照デコーダのコーディングピクチャバッファがオーバーフローまたはアンダーフローしないことを確実にすること、参照のために使用されるものとしてマークされるピクチャが後で参照として使用されないことを確実にすること、または他の要件を含む。デコーダバッファに対して存在するコーディングされたデータユニットが多すぎると、バッファのオーバーフローが発生する。デコーダがいくつかのコーディングデータユニットを処理する時間であるのにバッファが空であるとき、アンダーフローが発生する。
仮の参照デコーダパラメータは、異なる動作点および関連するレイヤセットのために、VPSおよびVPS拡張(たとえば、VPS VUI)においてシグナリングされ得る。VPS VUIにおける仮の参照デコーダパラメータのシグナリングは、ゲーティングフラグによって制御され得る。このフラグの値は、エンコーダによって独立に1または0に等しく設定され得る。一例では、仮の参照デコーダパラメータは、ゲーティングフラグの値が0に設定されるとき、VPS VUIにおいてシグナリングされなくてよい。別の例では、仮の参照デコーダパラメータは、ゲーティングフラグの値が1に設定されるとき、VPS VUIにおいてシグナリングされてよい。値が1に設定されるときに仮の参照デコーダパラメータがシグナリングされないことがあり、値が0に設定されるときに仮の参照デコーダパラメータがシグナリングされることがあることを、当業者は理解するであろう。
ある情報がVPSおよび/またはVPS VUIにおいてシグナリングされるときに、VPS VUIにおいて仮の参照デコーダパラメータをシグナリングするための実施形態が、本明細書において説明される。たとえば、仮の参照デコーダパラメータは、VPS VUI、VPSの基本部分、またはVPS VUIと基本VPSの両方において提供されるタイミング情報に依存する。復号されたビデオシーケンスの正確な速度での再生を可能にするために、タイミング情報が与えられる。仮の参照デコーダパラメータのためのシンタックス構造は、VPS VUIのタイミング情報セクションに置かれる。いくつかの場合、タイミング情報は、クロックレートおよびクロック単位の長さなどの、復号プロセスのためのあるタイミング方式を採用するのに必要なパラメータを定義する。タイミング情報はさらに、ピクチャ順序カウント(予測のために使用される場合は順序と距離に関してピクチャの関係を定義する)が、コーディングされたビデオシーケンスの最初(たとえば、ピクチャ順序カウントがリセットされる場合の瞬時復号リフレッシュ(IDR)ピクチャなどのイントラランダムアクセスピクチャ(IRAP))に対するピクチャの出力時間に比例することを示すフラグを含み得る。フラグによって与えられる指示を使用して、ピクチャ出力のタイミングは、ピクチャ順序カウントから直接導かれ得る。
タイミング情報がVPSに存在しないときに仮の参照デコーダ情報をシグナリングすることは、ビットの非効率な使用であり、処理およびネットワークリソースの使用の無駄につながる。したがって、仮の参照デコーダパラメータは、タイミング情報もVPSまたはVPS VUIにおいてシグナリングされるとき、VPS VUIにおいてシグナリングされ得る。同様に、仮の参照デコーダパラメータは、タイミング情報がVPSまたはVPS VUIにおいてシグナリングされないとき、VPS VUIにおいてシグナリングされなくてよい。いくつかの態様では、エンコーダ(または、エディタ、スプライサなどの他のデバイス)は、ゲーティングフラグを、タイミング情報がVPSまたはVPS VUIに存在するかどうかを示すシンタックス要素の値に依存するように調整することができる。
一例では、ゲーティングフラグは、タイミング情報の存在に応じて、シグナリングされることがあり、またはシグナリングされないことがある。図9Aは、vps_timing_info_present_flagと名付けられるタイミング情報シンタックス要素902を伴う、VPS VUIのシンタックス構造900の例を示す。タイミング情報シンタックス要素902は、VPSまたはVPS VUIにタイミング情報が含まれるかどうかを示す。シンタックス構造900はさらに、vps_vui_bsp_hrd_present_flagと名付けられるゲーティングフラグシンタックス要素904を含む。ゲーティングフラグシンタックス要素904の存在は、タイミング情報シンタックス要素902の値に依存する。タイミング情報シンタックス要素902が0という値に設定されるとき(タイミング情報が存在しないことを示す)、ゲーティングフラグシンタックス要素904は、VPS VUIにおいてシグナリングされなくてよい(この場合、シンタックス構造900は、VPS VUIがデコーダに送信されるときゲーティングフラグシンタックス要素904を含まない)。そのような例では、ゲーティングフラグシンタックス要素904の値は、仮の参照デコーダパラメータがVPS VUIにおいてシグナリングされるべきではないことを示す、0という値であるとエンコーダによって決定される。したがって、エンコーダ(または、エディタ、スプライサなどの他のデバイス)は、VPS VUIにおいて仮の参照デコーダパラメータをシグナリングしないと決定し得る。この例は、シンタックス構造中のタイミング情報シンタックス要素902に、条件906を含めることによって、図9Aにおいて示されている。たとえば、タイミング情報シンタックス要素902が0という値に設定されるとき(タイミング情報が存在しないことを示す)、エンコーダ(またはエディタ、スプライサなどの他のデバイス)は、VPS VUIにおいて仮の参照デコーダパラメータをシグナリングしないと決定し得る。エンコーダ(または他のデバイス)は次いで、シンタックス構造900からゲーティングフラグシンタックス要素904を取り除くことができる。VPS VUIがデコーダ(またはVPS VUIを受信する他のデバイス)によって受信されるとき、デコーダは、ゲーティングフラグシンタックス要素904が存在しないことに基づいて、ゲーティングフラグの値が0という値であると推測する。デコーダは次いで、ゲーティングフラグに対する0という推測された値に基づいて、仮の参照デコーダパラメータがVPS VUIにおいてシグナリングされないと決定する。
別の例では、ゲーティングフラグの値は、タイミング情報の存在に依存し得る。たとえば、タイミング情報シンタックス要素902が0に等しいときに、ゲーティングフラグシンタックス要素904の値も0に等しいものとすることを表すために、制約が加えられ得る。この例は、シンタックス構造900から条件906をなくすことによって、図9Bにおいて示されている。この例では、タイミング情報がVPSまたはVPS VUIに存在するかどうかを示すタイミング情報シンタックス要素は、VPSまたはVPS VUIにおいてより前にシグナリングされる(図9には示されない)。タイミング情報シンタックス要素(図9には示されない)が0という値に設定されるとき(タイミング情報が存在しないことを示す)、エンコーダ(エディタ、スプライサなどの他のデバイス)は、ゲーティングフラグシンタックス要素904を0という値に設定することを強いられることがあり、これは、仮の参照デコーダパラメータがVPS VUIにおいてシグナリングされないことを示す。エンコーダ(または、エディタ、スプライサなどの他のデバイス)は、結果としてVPS VUIにおいて仮の参照デコーダパラメータをシグナリングしないと決定し得る。VPS VUIがデコーダ(またはVPS VUIを受信する他のデバイス)によって受信されるとき、デコーダは、ゲーティングフラグシンタックス要素904の値が0という値に設定されると決定して、仮の参照デコーダパラメータがVPS VUIにおいてシグナリングされないことを学ぶ。
図10は、ビデオデータを符号化するプロセス1000のある実施形態を示す。プロセス1000は、ある条件だけにおいて、仮の参照デコーダパラメータをパラメータセットにおいてシグナリングするために実施される。いくつかの態様では、プロセス1000は、図1または図16に示される符号化デバイス104などの、コンピューティングデバイスまたは装置によって実行され得る。たとえば、コンピューティングデバイスまたは装置は、エンコーダ、またはプロセッサ、マイクロプロセッサ、マイクロコンピュータ、または、プロセス1000のステップを実行するように構成されるエンコーダの他のコンポーネントを含み得る。
プロセス1000は論理フロー図として示され、その動作は、ハードウェア、コンピュータ命令、またはこれらの組合せで実施され得る動作の列を表す。コンピュータ命令の文脈では、動作は、1つまたは複数のプロセッサによって実行されると列挙された動作を実行する、1つまたは複数のコンピュータ可読記憶媒体に記憶されたコンピュータ実行可能命令を表す。一般に、コンピュータ実行可能命令は、特定の機能を実行し、または特定のデータタイプを実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。動作が説明される順序は限定として見なされることを意図しておらず、任意の数の説明される動作が、プロセスを実施するために任意の順序でかつ/または並列に組み合わされ得る。
加えて、プロセス1000は、実行可能な命令により構成された1つまたは複数のコンピュータシステムの制御のもとで実行されてよく、1つまたは複数のプロセッサ上で、ハードウェアによって、またはこれらの組合せで集合的に実行されるコード(たとえば、実行可能命令、1つまたは複数のコンピュータプログラム、または1つまたは複数のアプリケーション)として実装され得る。上で述べられたように、コードは、たとえば、1つまたは複数のプロセッサにより実行可能な複数の命令を備えるコンピュータプログラムの形式で、コンピュータ可読記憶媒体または機械可読記憶媒体に記憶され得る。コンピュータ可読記憶媒体または機械可読記憶媒体は非一時的であり得る。
1002において、ビデオデータを符号化するプロセス1000は、複数のレイヤを備える符号化されたビデオビットストリームを生成することを含む。符号化されたビデオビットストリームは、符号化されたビデオビットストリームのパラメータを定義するビデオパラメータセットを含む。ビデオパラメータセットは、VPS VUIと呼ばれ得るビデオ使用可能性情報を含む。符号化されたビデオビットストリームは、HEVCコーディング技法、または他の適切なコーディング技法を使用して符号化され得る。
1004において、プロセス1000は、ビデオパラメータセットのビデオ使用可能性情報においてタイミング情報がシグナリングされるかどうかを決定することを含む。ある実施形態では、ビデオパラメータセットのビデオ使用可能性情報においてタイミング情報がシグナリングされるかどうかを決定することは、ビデオ使用可能性情報の中の第1のフラグの値を決定することを含む。第1のフラグは、ビデオ使用可能性情報(またはビデオパラメータセットの他の部分)においてタイミング情報がシグナリングされるかどうかを示す。たとえば、第1のフラグは、タイミング情報シンタックス要素(たとえば、タイミング情報シンタックス要素902)を含み得る。タイミング情報がシグナリングされるかどうかを決定するために、タイミング情報シンタックス要素が確認され得る。たとえば、0という値は、タイミング情報がシグナリングされないことを示し得る。別の例では、1という値は、タイミング情報がシグナリングされないことを示し得る。
1006において、プロセス1000は、タイミング情報がビデオ使用可能性情報(またはビデオパラメータセットの他の部分)においてシグナリングされるかどうかに基づいて、ビデオパラメータセットのビデオ使用可能性情報において仮の参照デコーダパラメータをシグナリングするかどうかを決定することを含む。いくつかの例では、プロセス1000は、タイミング情報がビデオ使用可能性情報(またはビデオパラメータセットの他の部分)においてシグナリングされるとき、ビデオ使用可能性情報において仮の参照デコーダパラメータをシグナリングすることを含む。プロセス1000はさらに、タイミング情報がビデオ使用可能性情報(またはビデオパラメータセットの他の部分)においてシグナリングされないとき、ビデオ使用可能性情報において仮の参照デコーダパラメータをシグナリングしないことを含む。たとえば、エンコーダまたは他のネットワークデバイスは、タイミング情報が存在しないときに、ビデオ使用可能性情報において仮の参照デコーダパラメータをシグナリングしないという決定を行い得る。
いくつかの実施形態では、プロセス1000は、第1のフラグの値に基づいて、ビデオ使用可能性情報中の第2のフラグの値を決定することを含む。第2のフラグは、仮の参照デコーダパラメータがビデオ使用可能性情報においてシグナリングされるかどうかを定義する。たとえば、第2のフラグは、ゲーティングフラグシンタックス要素(たとえば、ゲーティングフラグシンタックス要素904)を含み得る。
いくつかの実施形態では、プロセス1000は、ビデオ使用可能性情報において、符号化されたビデオビットストリームに関する情報をシグナリングするための1つまたは複数のシンタックス要素を提供することを含み、この情報は、第2のフラグの値が第1のフラグの値に依存するという条件を含む。たとえば、図9を参照すると、タイミング情報シンタックス要素902が0という値に設定されるとき(タイミング情報が存在しないことを示す)、ゲーティングフラグシンタックス要素904は、VPS VUIにおいてシグナリングされなくてよい(この場合、シンタックス構造900は、ゲーティングフラグシンタックス要素904を含まない)。ゲーティングフラグシンタックス要素904の値は次いで、仮の参照デコーダパラメータがVPS VUIにおいてシグナリングされるべきではないことを示す、0という値であるとエンコーダによって推測される。エンコーダは、VPS VUIにおいて仮の参照デコーダパラメータをシグナリングしないという決定を行い得る。
いくつかの実施形態では、プロセス1000は、ビデオ使用可能性情報において、符号化されたビデオビットストリームに関する情報をシグナリングするための1つまたは複数のシンタックス要素を提供することを含み、この情報は、第1のフラグの値が0に等しいときに第2のフラグの値が0に設定されるべきであるという制約を含む。たとえば、図9に示されるように、ゲーティングフラグシンタックス要素904を伴う条件906は、シンタックス構造900に追加され得る。条件906に基づいて、タイミング情報シンタックス要素902が0という値に設定されるとき(タイミング情報が存在しないことを示す)、エンコーダは、ゲーティングフラグシンタックス要素904を0という値に設定することができ、これは、仮の参照デコーダパラメータがVPS VUIにおいてシグナリングされないことを示す。エンコーダは、結果としてVPS VUIにおいて仮の参照デコーダパラメータをシグナリングしないと決定し得る。
上で説明された技法は、タイミング情報が存在しないとき、仮の参照デコーダ情報のシグナリングを防ぐ。タイミング情報が存在しないときにそのような情報をシグナリングすることは、リソースの非効率な使用、貴重な処理とネットワークリソースの無駄である。エンコーダ(または、エディタ、スプライサなどの他のデバイス)は、タイミング情報が存在することまたは存在しないことに基づいて、仮の参照デコーダパラメータをいつシグナリングするかをインテリジェントに決定し得る。
さらなる実施形態では、パラメータセット中で異なる数のビデオ信号情報シンタックス構造を選択的にシグナリングするための、技法およびシステムが説明される。たとえば、ベースレイヤが符号化されたビデオビットストリームに含まれるか、または外部ソースから復号デバイスに提供されるべきかに基づいて、パラメータセットにおいてシグナリングすべきビデオ信号情報シンタックス構造の数を決定するための実施形態が本明細書において説明される。
図11は、符号化デバイスが、ベースレイヤを含めて、符号化されたビデオビットストリームの様々なレイヤを生成する、例示的な環境1100を示す。環境1100は、HEVCビデオコーディング規格を使用して符号化されたビデオビットストリームを生成する、HEVC符号化デバイス1102を含む。本明細書において説明される技法は、AVC規格およびMPEG規格の1つまたは複数などのHEVC規格とは異なるコーディング規格を使用し得る他の符号化デバイスに適用されることを、当業者は理解するであろう。HEVC符号化デバイス1102は、ベースレイヤと1つまたは複数のエンハンスメントレイヤとを含むHEVC適合ビデオビットストリームを生成し得る。たとえば、HEVC符号化デバイス1102は、ベースレイヤ0とエンハンスメントレイヤ1からレイヤnとを生成し得る。レイヤnは、HEVC符号化デバイス1102が、特定の実装形態または適用例によって決定されるように、かつHEVC規格によって制約されるように、任意の数のエンハンスメントレイヤを生成できるという事実を指す。
受信デバイス1110のHEVC復号デバイス1104は、HEVC符号化デバイス1102からベースレイヤとエンハンスメントレイヤとを受信し得る。図11の例では、ベースレイヤは、HEVCビットストリームにおいてHEVC復号デバイス1104に与えられる。HEVC符号化デバイス1102はまた、HEVC復号デバイス1104が符号化されたビデオビットストリームを適切に復号することを可能にする情報とともに、VPSなどのパラメータセットを、HEVC復号デバイス1104に送信することができる。この情報は、下で説明されるような、ビデオ信号情報を含み得る。
図12は、符号化デバイスが、ベースレイヤではなく、符号化されたビデオビットストリームの様々なエンハンスメントレイヤを生成する、例示的な環境1200を示す。環境1200は、異なるビデオコーディング規格を使用して符号化されたビデオビットストリームを生成する、HEVC符号化デバイス1202およびAVC符号化デバイス1206を含む。本明細書において説明される技法は、HEVCまたはAVCとは異なるコーディング規格を使用し得る他の符号化デバイスに適用されることを、当業者は理解するであろう。HEVC符号化デバイス1202は、1つまたは複数のエンハンスメントレイヤを含むがベースレイヤを含まないHEVC適合ビデオビットストリームを生成し得る。たとえば、HEVC符号化デバイス1202は、エンハンスメントレイヤ1からレイヤnを生成し得る。AVC符号化デバイス1206は、ベースレイヤ0を含めて、ベースレイヤだけを含むAVC適合ビデオビットストリームを生成し得る。HEVC符号化デバイス1202が1つまたは複数のエンハンスメントレイヤを生成するとき、AVC符号化デバイス1206によって生成されるベースレイヤは、レイヤ間予測参照のために使用され得る。
一例では、HEVC復号デバイス1204は、HEVC符号化デバイス1202からエンハンスメントレイヤを受信することができ、AVC復号デバイス1208は、AVC符号化デバイス1206からベースレイヤを受信することができる。別の例では、第1のネットワークエンティティ(たとえば、エディタまたはスプライサ)は、HEVC符号化デバイス1202からのエンハンスメントレイヤを、AVC符号化デバイス1206からのベースレイヤと継ぎ合わせることができる。第1のネットワークエンティティは、(たとえば、ISOベースのメディアファイルフォーマットに従ったファイルフォーマットにて)追加されているシステム時間情報と時間的に同期する方式で、継ぎ合わせを実行することができる。第2のネットワークエンティティ(たとえば、受信デバイス1210などの受信機、ファイルフォーマットパーサ、または他のネットワークエンティティ)は、1つまたは複数のエンハンスメントレイヤのビットストリームをHEVC復号デバイス1204に、ベースレイヤのビットストリームをAVC復号デバイス1208に渡すことができる。いずれの例でも、ベースレイヤのビットストリームは、HEVC復号デバイス1204には提供されない。代わりに、ベースレイヤの復号されたピクチャは、レイヤ間予測参照のためにHEVC復号デバイス1204に(AVC復号デバイス1208から)提供される。HEVC復号デバイス1204の観点からは、ベースレイヤは外部ソースによって外部的に提供される。いくつかの実施形態では、HEVC復号デバイス1204およびAVC復号デバイス1208は別々のデコーダである。いくつかの実施形態では、HEVC復号デバイス1204およびAVC復号デバイス1208は、HEVCビットストリームおよびAVCビットストリームを復号できる多規格デコーダの一部である。
HEVC符号化デバイスは、HEVC適合ビデオビットストリームとともに(たとえば、1つまたは複数の非VCL NALユニットにおいて)ビデオパラメータセット(VPS)を提供し得る。ビデオ信号情報シンタックス構造は、マルチレイヤの符号化されたビデオビットストリームの各レイヤに対してVPSにおいてシグナリングされ、別個のビデオ信号情報シンタックス構造が各レイヤに対してシグナリングされる。ビデオ信号情報シンタックス構造は、VPS拡張のVPS VUIにおいてシグナリングされてよく、出力および表示のために復号されたビデオを準備するために使用され得る。ビデオ信号情報シンタックス構造に含まれるビデオ信号情報は、原色、転送特性、使用される色変換行列の係数、または他の適切な色情報などの、色特性を含み得る。ビデオ信号情報はまた、ソースビデオの元のフォーマット(たとえば、NTSC、PAL、コンポーネント、SECAM、MAC、未指定、または他の適切なビデオフォーマット)を示すビデオ信号タイプ情報と、いくつかの場合には、対応する色フォーマットの定義およびフォーマットの仕様とを含み得る。いくつかの場合、ビデオ信号情報は、ルーマサンプルの位置に対するクロマサンプルの位置を示してよく、これは、表示の間に正しい色表現を提示するために使用され得る。
図13は、HEVC適合ビデオビットストリームとともにHEVC符号化デバイスによって送信され得るVPS1302の例を示す。VPS1302は、符号化されたビデオビットストリームの複数のレイヤのためのビデオ信号情報を含む。ビデオ信号情報は、VPS1302のVPS VUI部分の1つまたは複数のビデオ信号情報シンタックス構造に格納され得る。たとえば、VPS1302は、レイヤID=0であるレイヤ(ベースレイヤに対応する)のためのビデオ信号情報シンタックス構造1304、レイヤID=1であるエンハンスメントレイヤのためのビデオ信号情報シンタックス構造1306、および、レイヤID=nであるエンハンスメントレイヤのためのビデオ信号情報シンタックス構造1308を含む。
いくつかの場合、VPS1302に含めるべき(または含まれる)ビデオ信号情報シンタックス構造の数は、明示的にシグナリングされない。たとえば、VPS1302に含めるべきビデオ信号情報シンタックス構造の数を示すシンタックス要素(たとえば、vps_num_video_signal_info_minus1)は、存在しないことがある。そのような場合、VPS1302に含めるべきビデオ信号情報シンタックス構造の数は、(ベースレイヤが外部的に与えられるか、HEVC符号化されたビデオビットストリームに含まれるかに関係なく)ビットストリーム中のレイヤの総数に等しいと推測され、これにより、各レイヤID値に対して1つのビデオ信号情報シンタックス構造がシグナリングされ、各レイヤがそのレイヤID値に従ってシグナリングされたビデオ信号情報シンタックス構造に割り当てられることになる。ベースレイヤが(たとえば、図12に示されるようにAVC符号化デバイスによって)外部的に与えられるとき、HEVCデコーダにとって無用である信号情報シンタックス構造が送信され、それは、HEVCデコーダがベースレイヤについてその信号情報シンタックス構造を必要としないからである。
VPSにおいてデータをより効率的に提供するために、VPSにおける(たとえば、VPS VUIにおける)ビデオ信号情報シンタックス構造のシグナリングを更新するための技法が説明される。たとえば、ベースレイヤが符号化されたビデオビットストリームに含まれるか、または外部ソースからHEVC復号デバイスに提供されるべきかに基づいて、VPSにおいてシグナリングすべきビデオ信号情報シンタックス構造の数が決定される。VPS VUIの中のビデオ信号情報シンタックス構造の数が明示的にシグナリングされないとき(たとえば、vps_num_video_signal_info_minus1などのシンタックス要素がVPSまたはVPS VUIに存在しないとき)、VPSにおけるビデオ信号情報のシグナリングは更新され得る。たとえば、VPSにおいてシグナリングされるビデオ信号情報シンタックス構造の数は、ベースレイヤがHEVCビットストリーム中にある(図11に示されるように外部的に与えられない)場合、ビットストリームのレイヤの最大の数に等しいと推測される。(図12に示されるように)ベースレイヤが外部的に提供される実施形態では、VPSにおいてシグナリングされるビデオ信号情報シンタックス構造の数は、ビットストリームのレイヤの最大の数から1を引いたものに等しいと推測される。したがって、ベースレイヤが外部ソースから提供されるとき、VPSの中のビデオ信号情報シンタックス構造の数は1だけ減らされる。
いくつかの実施形態では、レイヤのレイヤIDは、どのシンタックス構造が異なるレイヤに適用されるかを示すために、インデックス中のビデオ信号情報シンタックス構造にマッピングされる。そのような実施形態では、VPS中のビデオ信号情報シンタックス構造の数が明示的にシグナリングされないとき、レイヤIDとビデオ信号情報シンタックス構造のインデックスとのマッピングは、ビデオ信号情報シンタックス構造がベースレイヤに割り当てられないように更新される。したがって、ビデオ信号情報シンタックス構造は、HEVC符号化されたビデオビットストリームに含まれるレイヤの各々に割り当てられ、ビデオ信号情報シンタックス構造は、外部ソースからデコーダに提供されるべきベースレイヤには割り当てられない。
VPSにおけるビデオ信号情報シンタックス構造のシグナリングを更新するための上で説明された技法を実施するための、HEVC規格に対する変更は、以下のことを含み得る。
1に等しいvideo_signal_info_idx_present_flagは、シンタックス要素vps_num_video_signal_info_minus1およびvps_video_signal_info_idx[ i ]が存在することを規定する。0に等しいvideo_signal_info_idx_present_flagは、シンタックス要素vps_num_video_signal_info_minus1およびvps_video_signal_info_idx[ i ]が存在しないことを規定する。
vps_num_video_signal_info_minus1に1を足したものは、VPSの中の後続のvideo_signal_info( )シンタックス構造の数を規定する。存在しないとき、vps_num_video_signal_info_minus1の値は、MaxLayersMinus1-( vps_base_layer_internal_flag ? 0 : 1 )に等しいと推測される。
vps_video_signal_info_idx[ i ]は、VPSの中のvideo_signal_info( )構造のリストへの、layer_id_in_nuh[ i ]に等しいnuh_layer_idを伴うレイヤに適用されるvideo_signal_info( )シンタックス構造のインデックスを規定する。vps_video_signal_info_idx[ i ]が存在しないとき、vps_video_signal_info_idx[ i ]は、( video_signal_info_idx_present_flag ? 0 : i )に等しいと推測される。vps_video_signal_info_idx[ i ]の値は、両端を含めて0からvps_num_video_signal_info_minus1の範囲にあるものとする。
存在しないとき、vps_video_signal_info_idx[ i ]の値は次のように推測される。
video_signal_info_idx_present_flagが1に等しい場合、vps_video_signal_info_idx[ i ]は0に等しいと推測される。
それ以外の場合、vps_video_signal_info_idx[ i ]は、i-( vps_base_layer_internal_flag ? 0 : 1)に等しいと推測される。
0に等しいvps_vui_bsp_hrd_present_flagは、ビットストリーム区分HRDパラメータがVPS VUIに存在しないことを規定する。1に等しいvps_vui_bsp_hrd_present_flagは、ビットストリーム区分HRDパラメータがVPS VUIに存在することを規定する。存在しないとき、vps_vui_bsp_hrd_present_flagは0に等しいと推測される。
図14は、ビデオデータを符号化するプロセス1400のある実施形態を示す。プロセス1400は、VPSにおいて異なる数のビデオ信号情報シンタックス構造を選択的にシグナリングすることによって、VPSにおけるビデオ信号情報シンタックス構造のシグナリングを更新するために実施される。いくつかの態様では、プロセス1400は、図1または図16に示される符号化デバイス104などの、コンピューティングデバイスまたは装置によって実行され得る。たとえば、コンピューティングデバイスまたは装置は、エンコーダ、またはプロセッサ、マイクロプロセッサ、マイクロコンピュータ、または、プロセス1400のステップを実行するように構成されるエンコーダの他のコンポーネントを含み得る。
プロセス1400は論理フロー図として示され、その動作は、ハードウェア、コンピュータ命令、またはこれらの組合せで実施され得る動作の列を表す。コンピュータ命令の文脈では、動作は、1つまたは複数のプロセッサによって実行されると列挙された動作を実行する、1つまたは複数のコンピュータ可読記憶媒体に記憶されたコンピュータ実行可能命令を表す。一般に、コンピュータ実行可能命令は、特定の機能を実行し、または特定のデータタイプを実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。動作が説明される順序は限定として見なされることを意図しておらず、任意の数の説明される動作が、プロセスを実施するために任意の順序でかつ/または並列に組み合わされ得る。
加えて、プロセス1400は、実行可能な命令により構成された1つまたは複数のコンピュータシステムの制御のもとで実行されてよく、1つまたは複数のプロセッサ上で、ハードウェアによって、またはこれらの組合せで集合的に実行されるコード(たとえば、実行可能命令、1つまたは複数のコンピュータプログラム、または1つまたは複数のアプリケーション)として実装され得る。上で述べられたように、コードは、たとえば、1つまたは複数のプロセッサにより実行可能な複数の命令を備えるコンピュータプログラムの形式で、コンピュータ可読記憶媒体または機械可読記憶媒体に記憶され得る。コンピュータ可読記憶媒体または機械可読記憶媒体は非一時的であり得る。
1402において、ビデオデータを符号化するプロセス1400は、第1のコーディングプロトコルに従って、符号化されたビデオビットストリームを生成することを含む。符号化されたビデオビットストリームは、1つまたは複数のエンハンスメントレイヤと、符号化されたビデオビットストリームのパラメータを定義するビデオパラメータセットとを含む。いくつかの実施形態では、符号化されたビデオビットストリームは、HEVCコーディング技法、または他の適切なコーディング技法を使用して符号化され得る。
1404において、プロセス1400は、符号化されたビデオビットストリームにおいて提供されるビデオ信号情報シンタックス構造の数を示すシンタックス要素がビデオパラメータセットに存在しないと決定することを含む。たとえば、エンコーダは、ビデオパラメータセットに含めるべきビデオ信号情報シンタックス構造の数を示すシンタックス要素(たとえば、vps_num_video_signal_info_minus1)がビデオパラメータセット(たとえば、VPSまたはVPS VUI)に存在しないと決定し得る。
1406において、プロセス1400は、符号化されたビデオビットストリームにおいて提供されるビデオ信号情報シンタックス構造の数を示すシンタックス要素がビデオパラメータセットに存在しないとき、ビデオパラメータセットに含めるべきビデオ信号情報シンタックス構造の数を決定することを含む。この数は、ベースレイヤが符号化されたビデオビットストリームに含まれるか、または外部ソースからデコーダに提供されるべきかに基づいて、第1の値または第2の値として決定される。いくつかの実施形態では、ビデオパラメータセットに含めるべきビデオ信号情報シンタックス構造の数は、ベースレイヤが符号化されたビデオビットストリームに含まれると決定されるとき、第1の値として決定され、この場合、第1の値は符号化されたビデオビットストリームのレイヤの最大の数に等しい。
いくつかの実施形態では、ビデオパラメータセットに含めるべきビデオ信号情報シンタックス構造の数は、ベースレイヤが外部ソースからデコーダに提供されるべきであると決定されるとき、第2の値として決定され、この場合、第2の値は符号化されたビデオビットストリームのレイヤの最大の数から1を引いた数に等しい。いくつかの実施形態では、ビデオ信号情報シンタックス構造は、符号化されたビデオビットストリームに含まれるレイヤの各々に割り当てられ、ビデオ信号情報シンタックス構造は、外部ソースからデコーダに提供されるべきベースレイヤには割り当てられない。いくつかの実施形態では、外部ソースから提供されるベースレイヤは、第1のコーディングプロトコルとは異なる第2のコーディングプロトコルに従って符号化される。いくつかの例では、第1のコーディングプロトコルは高効率ビデオコーディングプロトコルを含み、第2のコーディングプロトコルはアドバンストビデオコーディングプロトコルを含む。
図15は、ビデオデータを復号するプロセス1500のある実施形態を示す。プロセス1500は、VPSの中のビデオ信号情報シンタックス構造の数を推測するために実施される。いくつかの態様では、プロセス1500は、図1または図17に示される復号デバイス112などの、コンピューティングデバイスまたは装置によって実行され得る。たとえば、コンピューティングデバイスまたは装置は、デコーダ、またはプロセッサ、マイクロプロセッサ、マイクロコンピュータ、または、プロセス1500のステップを実行するように構成されるデコーダの他のコンポーネントを含み得る。
プロセス1500は論理フロー図として示され、その動作は、ハードウェア、コンピュータ命令、またはこれらの組合せで実施され得る動作の列を表す。コンピュータ命令の文脈では、動作は、1つまたは複数のプロセッサによって実行されると列挙された動作を実行する、1つまたは複数のコンピュータ可読記憶媒体に記憶されたコンピュータ実行可能命令を表す。一般に、コンピュータ実行可能命令は、特定の機能を実行し、または特定のデータタイプを実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。動作が説明される順序は限定として見なされることを意図しておらず、任意の数の説明される動作が、プロセスを実施するために任意の順序でかつ/または並列に組み合わされ得る。
加えて、プロセス1500は、実行可能な命令により構成された1つまたは複数のコンピュータシステムの制御のもとで実行されてよく、1つまたは複数のプロセッサ上で、ハードウェアによって、またはこれらの組合せで集合的に実行されるコード(たとえば、実行可能命令、1つまたは複数のコンピュータプログラム、または1つまたは複数のアプリケーション)として実装され得る。上で述べられたように、コードは、たとえば、1つまたは複数のプロセッサにより実行可能な複数の命令を備えるコンピュータプログラムの形式で、コンピュータ可読記憶媒体または機械可読記憶媒体に記憶され得る。コンピュータ可読記憶媒体または機械可読記憶媒体は非一時的であり得る。
1502において、ビデオデータを復号するプロセス1500は、第1のコーディングプロトコルに従って符号化される、符号化されたビデオビットストリームにアクセスすることを含む。符号化されたビデオビットストリームは、1つまたは複数のエンハンスメントレイヤと、符号化されたビデオビットストリームのパラメータを定義するビデオパラメータセットとを含む。いくつかの実施形態では、符号化されたビデオビットストリームは、HEVCコーディング技法、または他の適切なコーディング技法を使用して符号化され得る。
1504において、プロセス1500は、符号化されたビデオビットストリームにおいて提供されるビデオ信号情報シンタックス構造の数を示すシンタックス要素がビデオパラメータセットに存在しないと決定することを含む。たとえば、デコーダは、ビデオパラメータセットに含めるべきビデオ信号情報シンタックス構造の数を示すシンタックス要素(たとえば、vps_num_video_signal_info_minus1)がビデオパラメータセットに存在しないと決定し得る。1506において、プロセス1500は、ベースレイヤが符号化されたビデオビットストリームに含まれるか、または外部ソースから受信されるべきかを決定することを含む。たとえば、ベースレイヤが符号化されたビデオビットストリームに含まれるか、または外部ソースから受信されるべきかの決定は、デコーダに与えられる指示に基づき得る。この指示は、VPSのシンタックス要素を通じて運ばれ得る。一例では、VPSのシンタックス構造は、ベースレイヤが符号化されたビデオビットストリームに含まれることをデコーダに示す値(たとえば、1または0)を伴うフラグを含み得る。別の例では、VPSのシンタックス構造は、ベースレイヤが外部ソースから受信されるべきであることをデコーダに示す値(たとえば、1または0)を伴うフラグを含み得る。
1508において、プロセス1500は、ベースレイヤが符号化されたビデオビットストリームに含まれるか、または外部ソースから受信されるべきかに基づいて、第1の値または第2の値に設定されるべきビデオパラメータセットに含まれるビデオ信号情報シンタックス構造の数を決定するステップを含む。いくつかの実施形態では、プロセス1500は、ベースレイヤが符号化されたビデオビットストリームに含まれると決定されるとき、ビデオ信号情報シンタックス構造の数を第1の値として決定することを含み、この場合、第1の値は符号化されたビデオビットストリームのレイヤの最大の数に等しい。
いくつかの実施形態では、プロセス1500は、ベースレイヤが外部ソースから受信されるべきであると決定されるとき、ビデオ信号情報シンタックス構造の数を第2の値として決定することを含み、この場合、第2の値は符号化されたビデオビットストリームのレイヤの最大の数から1を引いたものに等しい。いくつかの実施形態では、ビデオ信号情報シンタックス構造は、符号化されたビデオビットストリームに含まれるレイヤの各々に割り当てられ、ビデオ信号情報シンタックス構造は、外部ソースから受信されるべきベースレイヤには割り当てられない。いくつかの実施形態では、外部ソースから提供されるベースレイヤは、第1のコーディングプロトコルとは異なる第2のコーディングプロトコルに従って符号化される。いくつかの例では、第1のコーディングプロトコルは高効率ビデオコーディングプロトコルを含み、第2のコーディングプロトコルはアドバンストビデオコーディングプロトコルを含む。
いくつかの態様では、プロセス1500はワイヤレス通信デバイス上で実行可能である。ワイヤレス通信デバイスは、ビデオデータを記憶するように構成されるメモリを含み得る。メモリは、図1に示される記憶装置118を含み得る。ワイヤレス通信デバイスはまた、メモリに記憶されたビデオデータを処理するための命令を実行するように構成されるプロセッサを含み得る。プロセッサは、図1に示されるデコーダエンジン116、またはビデオデータを処理するための別の適切なプロセッサを含み得る。ワイヤレス通信デバイスはまた、符号化されたビデオビットストリームを受信するように構成される受信機を含む。受信機は、復号デバイス112のワイヤレス受信機(図示されず)であってよく、または、復号デバイス112のワイヤレス送受信機(図示されず)の一部であってよい。いくつかの態様では、ワイヤレス通信デバイスは携帯電話であり、符号化されたビデオビットストリームはセルラー通信規格に従って変調される。たとえば、符号化されたビデオビットストリームは、変調器(たとえば、四位相偏移変調器、四位相偏移変調変調器、直交周波数分割多重化変調器、または任意の他の適切な変調器、またはこれらの組合せ)を使用して変調され得る。
上で説明された技法は、ベースレイヤが外部ソースによって提供されるとき、不必要なビデオ信号情報シンタックス構造のシグナリングを防ぐ。ベースレイヤが別のプロトコルに従って符号化されるときでも、そのような情報のシグナリングは、不必要なビデオ信号情報シンタックス構造が必要とされないので非効率さにつながる。
本明細書において論じられるコーディング技法は、例示的なビデオ符号化および復号システム(たとえば、システム100)において実施され得る。システムは、宛先デバイスによって後で復号されるべき符号化されたビデオデータを提供するソースデバイスを含む。具体的には、ソースデバイスは、コンピュータ可読媒体を介して宛先デバイスにビデオデータを提供する。ソースデバイスおよび宛先デバイスは、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、いわゆる「スマート」パッド、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤー、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスのいずれかを備え得る。いくつかの場合、ソースデバイスおよび宛先デバイスは、ワイヤレス通信に対応し得る。
宛先デバイスは、コンピュータ可読媒体を介して、復号されるべき符号化されたビデオデータを受信し得る。コンピュータ可読媒体は、ソースデバイスから宛先デバイスに符号化されたビデオデータを移動することが可能な任意のタイプの媒体またはデバイスを備え得る。1つの例では、コンピュータ可読媒体は、ソースデバイスが符号化されたビデオデータをリアルタイムで宛先デバイスに直接送信することを可能にするための通信媒体を備え得る。符号化されたビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先デバイスに送信され得る。通信媒体は、高周波(RF)スペクトルなどの任意のワイヤレスもしくは有線通信媒体、または、1つもしくは複数の物理的伝送線を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワークのなどのパケットベースネットワーク、またはインターネットなどのグローバルネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイスから宛先デバイスへの通信を支援するために有用であり得る任意の他の機器を含み得る。
いくつかの例では、符号化されたデータは、出力インターフェースから記憶デバイスに出力され得る。同様に、符号化されたデータは、入力インターフェースによって、記憶デバイスからアクセスされ得る。記憶デバイスは、ハードドライブ、ブルーレイディスク、DVD、CD-ROM、フラッシュメモリ、揮発性もしくは不揮発性メモリ、または符号化されたビデオデータを記憶するための任意の他の好適なデジタル記憶媒体などの、種々の分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。さらなる例では、記憶デバイスは、ソースデバイスによって生成された符号化されたビデオを記憶し得るファイルサーバまたは別の中間記憶デバイスに対応し得る。宛先デバイスは、ストリーミングまたはダウンロードを介して記憶デバイスから記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化されたビデオデータを記憶し、その符号化されたビデオデータを宛先デバイスに送信することが可能な、任意のタイプのサーバであり得る。例示的なファイルサーバは、ウェブサーバ(たとえば、ウェブサイトのための)、FTPサーバ、ネットワーク接続ストレージ(NAS)デバイス、またはローカルディスクドライブを含む。宛先デバイスは、インターネット接続を含む、任意の標準的なデータ接続を通じて符号化されたビデオデータにアクセスし得る。これは、ファイルサーバに記憶された符号化されたビデオデータにアクセスするのに好適である、ワイヤレスチャネル(たとえば、Wi-Fi接続)、有線接続(たとえば、DSL、ケーブルモデムなど)、またはその両方の組合せを含み得る。記憶デバイスからの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはそれらの組合せであり得る。
本開示の技法は、必ずしもワイヤレスの適用例または設定に限定されない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、dynamic adaptive streaming over HTTP(DASH)のようなインターネットストリーミングビデオ送信、データ記憶媒体に符号化されたデジタルビデオ、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例のような、種々のマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システムは、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオ電話などの適用例をサポートするために、一方向または双方向のビデオ送信をサポートするように構成され得る。
一例では、ソースデバイスは、ビデオソースと、ビデオエンコーダと、出力インターフェースとを含む。宛先デバイスは、入力インターフェースと、ビデオデコーダと、ディスプレイデバイスとを含み得る。ソースデバイスのビデオエンコーダは、本明細書において開示される技法を適用するように構成され得る。他の例では、ソースデバイスおよび宛先デバイスは、他のコンポーネントまたは構成を含み得る。たとえば、ソースデバイスは、外部のカメラのような外部のビデオソースからビデオデータを受信し得る。同様に、宛先デバイスは、統合されたディスプレイデバイスを含むのではなく、外部のディスプレイデバイスとインターフェースし得る。
上の例示的なシステムは一例にすぎない。ビデオデータを並列に処理するための技法は、任意のデジタルビデオ符号化および/または復号デバイスによって実行され得る。本開示の技法は一般にビデオ符号化デバイスによって実行されるが、本技法は、通常は「コーデック」と呼ばれるビデオエンコーダ/デコーダによっても実行され得る。その上、本開示の技法は、ビデオプロセッサによっても実行され得る。ソースデバイスおよび宛先デバイスは、宛先デバイスへ送信するためのコーディングされたビデオデータをソースデバイスが生成するような、コーディングデバイスの例にすぎない。いくつかの例では、ソースデバイスおよび宛先デバイスは、デバイスの各々がビデオ符号化および復号コンポーネントを含むように、実質的に対称的な方式で動作し得る。よって、例示的なシステムは、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオ電話のために、ビデオデバイス間の一方向または双方向のビデオ送信をサポートし得る。
ビデオソースは、ビデオカメラ、以前にキャプチャされたビデオを含むビデオアーカイブ、および/または、ビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースのような、ビデオキャプチャデバイスを含み得る。さらなる代替形態として、ビデオソースは、ソースビデオ、または、ライブビデオ、アーカイブされたビデオ、およびコンピュータにより生成されたビデオの組合せとして、コンピュータグラフィックスベースのデータを生成することができる。いくつかの場合、ビデオソースがビデオカメラである場合、ソースデバイスおよび宛先デバイスは、いわゆるカメラ電話またはビデオ電話を形成し得る。上で言及されたように、しかしながら、本開示で説明される技法は、ビデオコーディング全般に適用可能であってよく、ワイヤレスおよび/または有線の適用例に適用され得る。各々の場合において、キャプチャされたビデオ、事前にキャプチャされたビデオ、またはコンピュータにより生成されたビデオは、ビデオエンコーダによって符号化され得る。符号化されたビデオ情報は次いで、コンピュータ可読媒体へと出力インターフェースによって出力され得る。
述べられたように、コンピュータ可読媒体は、ワイヤレスブロードキャスト送信もしくは有線ネットワーク送信などの一時的媒体、または、ハードディスク、フラッシュドライブ、コンパクトディスク、デジタルビデオディスク、ブルーレイディスク、もしくは他のコンピュータ可読媒体などの記憶媒体(すなわち、非一時的記憶媒体)を含み得る。いくつかの例では、ネットワークサーバ(図示されず)は、ソースデバイスから符号化されたビデオデータを受信し、符号化されたビデオデータを、たとえばネットワーク送信を介して宛先デバイスに提供することができる。同様に、ディスクスタンピング施設のような、媒体生産施設のコンピューティングデバイスは、ソースデバイスから符号化されたビデオデータを受信し、符号化されたビデオデータを含むディスクを生産することができる。したがって、コンピュータ可読媒体は、様々な例において、様々な形式の1つまたは複数のコンピュータ可読媒体を含むと理解され得る。
宛先デバイスの入力インターフェースは、コンピュータ可読媒体から情報を受信する。コンピュータ可読媒体の情報は、ブロックの特性および/または処理ならびに他のコーディングされたユニット、たとえばピクチャグループ(GOP)を記述するシンタックス要素を含む、ビデオデコーダによっても使用される、ビデオエンコーダによって定義されるシンタックス情報を含み得る。ディスプレイデバイスは、復号されたビデオデータをユーザに対して表示し、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスのような、種々のディスプレイデバイスのいずれかを備え得る。本発明の様々な実施形態が説明されてきた。
符号化デバイス104および復号デバイス112の具体的な詳細がそれぞれ、図16および図17に示されている。図16は、本開示において説明される技法の1つまたは複数を実装し得る例示的な符号化デバイス104を示すブロック図である。符号化デバイス104は、たとえば、本明細書において説明されるシンタックス構造(たとえば、VPS、SPS、PPS、または他のシンタックス要素のシンタックス構造)を生成し得る。符号化デバイス104は、ビデオスライス内のビデオブロックのイントラ予測コーディングおよびインター予測コーディングを実行し得る。前に説明されたように、イントラコーディングは、少なくとも一部、空間予測に依拠して、所与のビデオフレーム内またはピクチャ内の空間的冗長性を低減または除去する。インターコーディングは、少なくとも一部、時間的予測に依拠して、ビデオシーケンスの隣接するまたは周囲のフレーム内の時間的冗長性を低減または除去する。イントラモード(Iモード)は、いくつかの空間ベースの圧縮モードのいずれかを指し得る。片方向予測(Pモード)または双方向予測(Bモード)などのインターモードは、いくつかの時間ベースの圧縮モードのいずれかを指し得る。
符号化デバイス104は、区分ユニット35、予測処理ユニット41、フィルタユニット63、ピクチャメモリ64、加算器50、変換処理ユニット52、量子化ユニット54、およびエントロピー符号化ユニット56を含む。予測処理ユニット41は、動き推定ユニット42と、動き補償ユニット44と、イントラ予測処理ユニット46とを含む。ビデオブロック再構築のために、符号化デバイス104はまた、逆量子化ユニット58、逆変換処理ユニット60、および加算器62を含む。フィルタユニット63は、デブロッキングフィルタ、適応ループフィルタ(ALF)、およびサンプル適応オフセット(SAO)フィルタなどの、1つまたは複数のループフィルタを表すことが意図されている。フィルタユニット63は図16ではループフィルタであるものとして示されているが、他の構成では、フィルタユニット63はポストループフィルタとして実装され得る。後処理デバイス57は、符号化デバイス104によって生成される符号化されたビデオデータに対する追加の処理を実行し得る。本開示の技法は、いくつかの事例では符号化デバイス104によって実施され得る。しかしながら、他の事例では、本開示の技法の1つまたは複数は、後処理デバイス57によって実施され得る。
図16に示されるように、符号化デバイス104はビデオデータを受信し、区分ユニット35はビデオブロックへとデータを区分する。この区分はまた、スライス、スライスセグメント、タイル、または他のより大きい単位への区分、ならびに、たとえば、LCUおよびCUの4分木構造に従ったビデオブロック区分を含み得る。符号化デバイス104は一般に、符号化されるべきビデオスライス内のビデオブロックを符号化するコンポーネントを示す。スライスは、複数のビデオブロックに(および、場合によっては、タイルと呼ばれるビデオブロックのセットに)分割され得る。予測処理ユニット41は、誤差の結果(たとえば、コーディングレートおよび歪みのレベルなど)に基づいて、現在のビデオブロックのための、複数のイントラ予測コーディングモードの1つまたは複数のインター予測コーディングモードの1つなどの、複数の可能なコーディングモードの1つを選択し得る。予測処理ユニット41は、残差ブロックデータを生成するために加算器50に、および、参照ピクチャとして使用するための符号化されたブロックを再構築するために加算器62に、得られたイントラコーディングされたまたはインターコーディングされたブロックを提供し得る。
予測処理ユニット41内のイントラ予測処理ユニット46は、空間的圧縮を提供するために、コーディングされるべき現在のブロックと同じフレームまたはスライス中の1つまたは複数の隣接ブロックに対する現在のビデオブロックのイントラ予測コーディングを実行し得る。予測処理ユニット41内の動き推定ユニット42および動き補償ユニット44は、時間的圧縮を提供するために、1つまたは複数の参照ピクチャ中の1つまたは複数の予測ブロックに対する現在のビデオブロックのインター予測コーディングを実行する。
動き推定ユニット42は、ビデオシーケンスのための所定のパターンに従ってビデオスライスのためのインター予測モードを決定するように構成され得る。所定のパターンは、Pスライス、Bスライス、またはGPBスライスとしてシーケンス中のビデオスライスを指定し得る。動き推定ユニット42および動き補償ユニット44は高度に統合され得るが、概念的な目的のために別々に示されている。動き推定ユニット42によって実行される動き推定は、ビデオブロックに関する動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、参照ピクチャ内の予測ブロックに対する現在のビデオフレームまたはピクチャ内のビデオブロックの予測ユニット(PU)の変位を示し得る。
予測ブロックは、絶対差分和(SAD:sum of absolute difference)、2乗差分和(SSD:sum of square difference)、または他の差分メトリックによって決定され得るピクセル差分の観点で、コーディングされるべきビデオブロックのPUと密接に一致することが見出されたブロックである。いくつかの例では、符号化デバイス104は、ピクチャメモリ64内に記憶された参照ピクチャのサブ整数ピクセル位置のための値を計算し得る。たとえば、符号化デバイス104は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置、または他の分数ピクセル位置の値を補間し得る。したがって、動き推定ユニット42は、フルピクセル位置および分数ピクセル位置に対する動き探索を実行し、分数ピクセル精度で動きベクトルを出力し得る。
動き推定ユニット42は、参照ピクチャの予測ブロックの位置とPUの位置とを比較することによって、インターコーディングされたスライス中のビデオブロックのPUのための動きベクトルを計算する。参照ピクチャは、その各々がピクチャメモリ64に記憶された1つまたは複数の参照ピクチャを識別する、第1の参照ピクチャリスト(リスト0)または第2の参照ピクチャリスト(リスト1)から選択され得る。動き推定ユニット42は、計算された動きベクトルをエントロピー符号化ユニット56および動き補償ユニット44に送る。
動き補償ユニット44によって実行される動き補償は、場合によってはサブピクセル精度で補間を行う動き推定によって決定された動きベクトルに基づいて、予測ブロックを取得または生成することを伴い得る。現在のビデオブロックのPUのための動きベクトルを受信すると、動き補償ユニット44は、参照ピクチャリストにおいて動きベクトルが指す予測ブロックの位置を特定し得る。符号化デバイス104は、コーディングされている現在のビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成することによって、残差ビデオブロックを形成する。ピクセル差分値は、ブロックのための残差データを形成し、ルーマ差分成分とクロマ差分成分の両方を含み得る。加算器50は、この減算演算を実行する1つまたは複数の成分を表す。動き補償ユニット44はまた、ビデオスライスのビデオブロックを復号する際に復号デバイス112によって使用するための、ビデオブロックおよびビデオスライスと関連付けられたシンタックス要素を生成し得る。
イントラ予測処理ユニット46は、上で説明されたように、動き推定ユニット42および動き補償ユニット44によって実行されるインター予測の代替として、現在のブロックをイントラ予測し得る。具体的には、イントラ予測処理ユニット46は、現在のブロックを符号化するために使用するためのイントラ予測モードを決定し得る。いくつかの例では、イントラ予測処理ユニット46は、たとえば、別個の符号化パスの間、様々なイントラ予測モードを使用して現在のブロックを符号化することができ、イントラ予測処理ユニット46は、試験されたモードから、使用すべき適切なイントラ予測モードを選択することができる。たとえば、イントラ予測処理ユニット46は、様々な試験されたイントラ予測モードに対してレート-歪み分析を使用してレート-歪み値を計算することができ、試験されたモードの中から最良のレート-歪み特性を有するイントラ予測モードを選択することができる。レート-歪み分析は、一般に、符号化されたブロックと、符号化されたブロックを生成するために符号化された元の非符号化ブロックとの間の歪み(または誤差)、ならびに、符号化されたブロックを生成するために使用されたビットレート(すなわち、ビット数)を決定する。イントラ予測処理ユニット46は、どのイントラ予測モードがブロックのための最良のレート-歪み値を示すかを決定するために、様々な符号化されたブロックに対する歪みおよびレートから比を計算し得る。
いずれの場合でも、ブロックのためのイントラ予測モードを選択した後、イントラ予測処理ユニット46は、エントロピー符号化ユニット56にブロックのための選択されたイントラ予測モードを示す情報を提供し得る。エントロピー符号化ユニット56は、選択されたイントラ予測モードを示す情報を符号化し得る。符号化デバイス104は、様々なブロックのための符号化コンテキストの定義、ならびに、最確イントラ予測モードの指示、イントラ予測モードインデックステーブル、およびコンテキストの各々に対して使用すべき修正されたイントラ予測モードインデックステーブルを、送信されたビットストリーム構成データに含め得る。ビットストリーム構成データは、複数のイントラ予測モードインデックステーブルと、複数の修正されたイントラ予測モードインデックステーブル(コードワードマッピングテーブルとも呼ばれる)とを含み得る。
予測処理ユニット41が、インター予測またはイントラ予測のいずれかを介して現在のビデオブロックのための予測ブロックを生成した後、符号化デバイス104は、現在のビデオブロックから予測ブロックを減算することによって、残差ビデオブロックを形成する。残差ブロック内の残差ビデオデータは、1つまたは複数のTU内に含まれ、変換処理ユニット52に適用され得る。変換処理ユニット52は、離散コサイン変換(DCT)または概念的に同様の変換などの変換を使用して、残差ビデオデータを残差変換係数に変換する。変換処理ユニット52は、残差ビデオデータをピクセル領域から周波数領域などの変換領域に変換し得る。
変換処理ユニット52は、結果として生じた変換係数を量子化ユニット54に送り得る。量子化ユニット54は、ビットレートをさらに低減するために、変換係数を量子化する。量子化プロセスは、係数の一部またはすべてと関連付けられるビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって変更され得る。いくつかの例では、量子化ユニット54は、次いで、量子化された変換係数を含む行列の走査を実行し得る。代替的には、エントロピー符号化ユニット56が走査を実行し得る。
量子化に続いて、エントロピー符号化ユニット56は、量子化された変換係数をエントロピー符号化する。たとえば、エントロピー符号化ユニット56は、コンテキスト適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)、確率間隔区分エントロピー(PIPE)コーディング、または別のエントロピー符号化技法を実行し得る。エントロピー符号化ユニット56によるエントロピー符号化に続いて、符号化されたビットストリームは、復号デバイス112に送信されてよく、または、復号デバイス112による後の送信または検索のためにアーカイブされてよい。エントロピー符号化ユニット56はまた、コーディングされている現在のビデオスライスに関する動きベクトルおよび他のシンタックス要素を符号化し得る。
逆量子化ユニット58および逆変換処理ユニット60は、参照ピクチャの参照ブロックとして後に使用するためのピクセル領域における残差ブロックを再構築するために、それぞれ、逆量子化および逆変換を適用する。動き補償ユニット44は、参照ピクチャリスト内の参照ピクチャの1つの予測ブロックに残差ブロックを加算することによって、参照ブロックを計算し得る。動き補償ユニット44はまた、動き推定において使用するためのサブ整数ピクセル値を計算するために、1つまたは複数の補間フィルタを再構築された残差ブロックに適用し得る。加算器62は、ピクチャメモリ64に記憶するための参照ブロックを生成するために、動き補償ユニット44によって生成された動き補償された予測ブロックに再構築された残差ブロックを加算する。参照ブロックは、後続のビデオフレームまたはピクチャ内のブロックをインター予測するために、参照ブロックとして動き推定ユニット42および動き補償ユニット44によって使用され得る。
このようにして、図16の符号化デバイス104は、符号化されたビデオビットストリームのためのシンタックスを生成するように構成されるビデオエンコーダの例を表す。符号化デバイス104は、たとえば、上で説明されたように、VPS、SPS、およびPPSパラメータセットを生成し得る。符号化デバイス104は、図7、図8、図10、図14、および図15に関して上で説明されたプロセスを含む、本明細書において説明される技法のいずれかを実行し得る。本開示の技法は全般に、符号化デバイス104に関して説明されているが、上で言及されたように、本開示の技法のいくつかは、後処理デバイス57によっても実施され得る。
図17は、例示的な復号デバイス112を示すブロック図である。復号デバイス112は、エントロピー復号ユニット80と、予測処理ユニット81と、逆量子化ユニット86と、逆変換処理ユニット88と、加算器90と、フィルタユニット91と、ピクチャメモリ92とを含む。予測処理ユニット81は、動き補償ユニット82と、イントラ予測処理ユニット84とを含む。復号デバイス112は、いくつかの例では、図16から符号化デバイス104に関して説明された符号化パスとは全般に逆の復号パスを実行し得る。
復号プロセスの間、復号デバイス112は、符号化デバイス104によって送信される、符号化されたビデオスライスのビデオブロックと関連するシンタックス要素とを表す符号化されたビデオビットストリームを受信する。いくつかの実施形態では、復号デバイス112は、符号化デバイス104から符号化されたビデオビットストリームを受信し得る。いくつかの実施形態では、復号デバイス112は、サーバ、媒体認識ネットワーク要素(MANE)、ビデオエディタ/スプライサ、または、上で説明された技法の1つまたは複数を実施するように構成される他のそのようなデバイスなどの、ネットワークエンティティ79から符号化されたビデオビットストリームを受信し得る。ネットワークエンティティ79は、符号化デバイス104を含むことがあり、含まないことがある。本開示において説明される技法のいくつかは、ネットワークエンティティ79が符号化されたビデオビットストリームを復号デバイス112に送信する前に、ネットワークエンティティ79によって実施され得る。いくつかのビデオ復号システムでは、ネットワークエンティティ79および復号デバイス112は別個のデバイスの一部であり得るが、他の事例では、ネットワークエンティティ79に関して説明される機能は、復号デバイス112を備える同じデバイスによって実行され得る。
復号デバイス112のエントロピー復号ユニット80は、量子化された係数と、動きベクトルと、他のシンタックス要素とを生成するためにビットストリームをエントロピー復号する。エントロピー復号ユニット80は、予測処理ユニット81に動きベクトルと他のシンタックス要素とを転送する。復号デバイス112は、ビデオスライスレベルおよび/またはビデオブロックレベルにおいてシンタックス要素を受信し得る。エントロピー復号ユニット80は、VPS、SPS、およびPPSなどの1つまたは複数のパラメータセットの中の、固定長シンタックス要素と可変長シンタックス要素の両方を処理し構文解析し得る。
ビデオスライスがイントラコーディングされた(I)スライスとしてコーディングされるとき、予測処理ユニット81のイントラ予測処理ユニット84は、シグナリングされたイントラ予測モードと、現在のフレームまたはピクチャの以前に復号されたブロックからのデータとに基づいて、現在のビデオスライスのビデオブロックのための予測データを生成し得る。ビデオフレームがインターコーディングされた(すなわち、B、P、またはGPB)スライスとしてコーディングされるとき、予測処理ユニット81の動き補償ユニット82は、エントロピー復号ユニット80から受信された動きベクトルと他のシンタックス要素とに基づいて、現在のビデオスライスのビデオブロックのための予測ブロックを生成する。予測ブロックは、参照ピクチャリスト内の参照ピクチャの1つから生成され得る。復号デバイス112は、ピクチャメモリ92に記憶された参照ピクチャに基づいて、デフォルトの構成技法を使用して、参照フレームリスト、リスト0およびリスト1を構築し得る。
動き補償ユニット82は、動きベクトルと他のシンタックス要素とを構文解析することによって、現在のビデオスライスのビデオブロックのための予測情報を決定し、復号されている現在のビデオブロックのための予測ブロックを生成するために予測情報を使用する。たとえば、動き補償ユニット82は、ビデオスライスのビデオブロックをコーディングするために使用された予測モード(たとえば、イントラまたはインター予測)と、インター予測スライスタイプ(たとえば、Bスライス、Pスライス、またはGPBスライス)と、スライスのための1つまたは複数の参照ピクチャリストのための構築情報と、スライスの各々のインターコーディングされたビデオブロックのための動きベクトルと、スライスの各々のインターコーディングされたビデオブロックのためのインター予測状態と、現在のビデオスライス中のビデオブロックを復号するための他の情報とを決定するために、パラメータセットの中の1つまたは複数のシンタックス要素を使用し得る。
動き補償ユニット82はまた、補間フィルタに基づいて補間を実行し得る。動き補償ユニット82は、ビデオブロックの符号化の間に符号化デバイス104によって使用されるような補間フィルタを使用して、参照ブロックのサブ整数ピクセルに対して補間された値を計算し得る。この場合、動き補償ユニット82は、符号化デバイス104によって使用される補間フィルタを、受信されたシンタックス要素から決定することができ、その補間フィルタを使用して予測ブロックを生成することができる。
逆量子化ユニット86は、ビットストリームにおいて提供されエントロピー復号ユニット80によって復号された、量子化された変換係数を逆量子化(inverse quantize)、すなわち逆量子化(de-quantize)する。逆量子化プロセスは、量子化の程度を決定し、同様に、適用されるべき逆量子化の程度を決定するための、ビデオスライス中の各ビデオブロックに対する、符号化デバイス104によって計算された量子化パラメータの使用を含み得る。逆変換処理ユニット88は、ピクセル領域における残差ブロックを生成するために、変換係数に逆変換(たとえば、逆DCTまたは他の適切な逆変換)、逆整数変換、または概念的に同様の逆変換プロセスを適用する。
動き補償ユニット82が、動きベクトルと他のシンタックス要素とに基づいて現在のビデオブロックのための予測ブロックを生成した後、復号デバイス112は、逆変換処理ユニット88からの残差ブロックを、動き補償ユニット82によって生成された対応する予測ブロックと加算することによって、復号されたビデオブロックを形成する。加算器90は、この加算演算を実行する1つまたは複数のコンポーネントを表す。望まれる場合、(コーディングループ中またはコーディングループ後のいずれかの)ループフィルタも、ピクセル遷移を平滑化するために、または別様にビデオ品質を改善するために使用され得る。フィルタユニット91は、デブロッキングフィルタ、適応ループフィルタ(ALF)、およびサンプル適応オフセット(SAO)フィルタなどの、1つまたは複数のループフィルタを表すことが意図されている。フィルタユニット91は図17ではループフィルタであるものとして示されているが、他の構成では、フィルタユニット91はポストループフィルタとして実装され得る。次いで、所与のフレームまたはピクチャ中の復号されたビデオブロックは、ピクチャメモリ92に記憶され、参照ピクチャメモリ92は、後続の動き補償のために使用される参照ピクチャを記憶する。ピクチャメモリ92はまた、図1に示されるビデオ宛先デバイス122などのディスプレイデバイス上で後に提示するための復号されたビデオを記憶する。
前述の説明では、適用例の態様は、特定の実施形態を参照して説明されるが、本発明はそのように限定されないことを当業者は認識するであろう。したがって、適用例の説明のための実施形態が本明細書において詳細に説明されているが、発明の概念は別様に具現化され利用されてよく、添付の特許請求の範囲は、従来技術により制限されるようなものを除き、そのような変更を含むものとして解釈されることを意図している。上で説明された発明の様々な特徴および態様は、個別にまたは一緒に使用され得る。さらに、実施形態は、本明細書のより広い趣旨および範囲から逸脱することなく、本明細書において説明されたもの以外の任意の数の環境および適用例において利用され得る。したがって、本明細書および図面は、限定ではなく例示であると見なされるべきである。例示を目的に、方法は特定の順序で説明された。代替的な実施形態では、方法は説明されたものとは異なる順序で実行され得ることを理解されたい。
コンポーネントがある動作を実行する「ように構成される」ものとして説明されている場合、そのような構成は、たとえば、動作を実行するように電子回路もしくは他のハードウェアを設計することによって、動作を実行するようにプログラム可能電子回路(たとえば、マイクロプロセッサ、もしくは他の適切な電子回路)をプログラムすることによって、または、これらの任意の組合せで、達成され得る。
本明細書において開示される実施形態に関して説明される様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、ファームウェア、またはこれらの組合せとして実装され得る。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的なコンポーネント、ブロック、モジュール、回路、およびステップが、全般にそれらの機能に関してこれまで説明されてきた。そのような機能がハードウェアとして実装されるか、ソフトウェアとして実装されるかは、具体的な適用例およびシステム全体に課される設計制約によって決まる。当業者は、具体的な適用例ごとに様々な方法で説明された機能を実装することができるが、そのような実装の決定は、本発明の範囲からの逸脱を引き起こすと解釈されるべきではない。
本明細書において説明された技法はまた、電子ハードウェア、コンピュータソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。そのような技法は、汎用コンピュータ、ワイヤレス通信デバイスハンドセット、またはワイヤレス通信デバイスハンドセットおよび他のデバイスにおける適用例を含む複数の用途を有する集積回路デバイスなどの、様々なデバイスのいずれかにおいて実装され得る。モジュールまたはコンポーネントとして説明された任意の特徴が、集積論理デバイス内で一緒に、または個別であるが相互動作可能な論理デバイスとして別々に実装され得る。ソフトウェアで実装された場合、本技法は、実行されると上で説明された方法の1つまたは複数を実行する命令を含むプログラムコードを備えるコンピュータ可読データ記憶媒体によって、少なくとも部分的に実現され得る。コンピュータ可読データ記憶媒体は、パッケージング材料を含み得るコンピュータプログラム製品の一部を形成し得る。コンピュータ可読媒体は、同期型ダイナミックランダムアクセスメモリ(SDRAM)などのランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、不揮発性ランダムアクセスメモリ(NVRAM)、電気消去可能プログラマブル読取り専用メモリ(EEPROM)、フラッシュメモリ、磁気または光学データ記憶媒体などのような、メモリまたはデータ記憶媒体を備え得る。本技法は、追加または代替として、伝搬される信号または波のような、命令またはデータ構造の形態でプログラムコードを搬送または伝達し、コンピュータによってアクセスされ、読み取られ、かつ/または実行され得る、コンピュータ可読通信媒体によって、少なくとも部分的に実現され得る。
プログラムコードは、1つまたは複数のデジタル信号プロセッサ(DSP)などの1つまたは複数のプロセッサ、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルロジックアレイ(FPGA)、または他の等価の集積回路もしくはディスクリート論理回路を含み得るプロセッサによって実行され得る。そのようなプロセッサは、本開示において説明された技法のいずれかを実行するように構成され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替的に、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成としても実装され得る。したがって、本明細書において使用される「プロセッサ」という用語は、本明細書において説明される技法の実装に適した、前述の構造、前述の構造または任意の他の構造もしくは装置の任意の組合せのいずれかを指し得る。さらに、いくつかの態様では、本明細書において説明された機能は、符号化および復号のために構成された専用のソフトウェアモジュールもしくはハードウェアモジュール内で提供されてよく、または複合ビデオエンコーダ/デコーダ(コーデック)に組み込まれてよい。