本開示のいくつかの態様および実施形態が以下で与えられる。これらの態様および実施形態の一部は独立に適用されてよく、それらの一部は当業者には明らかなように組合せで適用されてよい。以下の説明では、説明の目的で、本発明の実施形態の完全な理解をもたらすために、具体的な詳細が記載される。しかしながら、様々な実施形態は、これらの具体的な詳細を伴わずに実践され得ることが明らかであろう。図面および説明は、限定的であることを意図していない。
以下の説明は例示的な実施形態のみを与え、本開示の範囲、適用性、または構成を限定することを意図していない。むしろ、例示的な実施形態の以下の説明は、例示的な実施形態を実装するのに役立つ説明を当業者に与える。添付の特許請求の範囲に記載される本発明の趣旨および範囲から逸脱することなく、要素の機能および構成に様々な変更が行われ得ることを理解されたい。
実施形態の完全な理解をもたらすために、以下の説明において具体的な詳細が与えられている。しかしながら、実施形態がこれらの具体的な詳細を伴わずに実践され得ることが、当業者によって理解されよう。たとえば、不必要な詳細によって実施形態を不明瞭にしないように、回路、システム、ネットワーク、プロセス、および他のコンポーネントは、ブロック図の形式のコンポーネントとして示され得る。他の事例では、実施形態を不明瞭することを避けるために、周知の回路、プロセス、アルゴリズム、構造、および技法は、不要な詳細を伴わずに示され得る。
また、個々の実施形態は、フローチャート、フロー図、データフロー図、構造図またはブロック図として描かれているプロセスとして記述され得ることに留意されたい。フローチャートは、動作を逐次プロセスとして説明し得るが、動作の多くは、並列にすなわち同時に実行され得る。加えて、動作の順序は並べ替えられ得る。プロセスは、動作が完了すると終了されるが、図面に含まれない追加のステップを有し得る。プロセスは、方法、関数、プロシージャ、サブルーチン、サブプログラムなどに相当し得る。プロセスが関数に相当するとき、その終了は、その関数が呼出し関数またはメイン関数に戻ることに相当し得る。
「コンピュータ可読媒体」という用語は、限定はされないが、ポータブルまたは非ポータブル記憶デバイス、光記憶デバイス、ならびに、命令および/またはデータを記憶する、格納する、または搬送することが可能な様々な他の媒体を含む。データが記憶されることが可能であり、ワイヤレスに、または有線接続を通じて伝播する搬送波および/または一時的な電気信号を含まない非一時的媒体を、コンピュータ可読媒体は含み得る。非一時的媒体の例は、限定はされないが、磁気ディスクまたはテープ、コンパクトディスク(CD)またはデジタル多目的ディスク(DVD)のような光学記憶媒体、フラッシュメモリ、メモリまたはメモリデバイスを含み得る。コンピュータ可読媒体は、プロシージャ、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または命令、データ構造もしくはプログラムステートメントの任意の組合せを表し得るコードおよび/または機械実行可能命令を記憶していてよい。コードセグメントは、情報、データ、引数、パラメータ、もしくはメモリ内容を渡すことおよび/または受け取ることによって、別のコードセグメントまたはハードウェア回路に結合され得る。情報、引数、パラメータ、データなどは、メモリ共有、メッセージパッシング、トークンパッシング、ネットワーク送信などを含む、任意の適切な手段を介して渡されてよく、転送されてよく、または送信されてよい。
さらに、実施形態は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはこれらの任意の組合せによって実装され得る。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードで実装されるとき、必要なタスク(たとえば、コンピュータプログラム製品)を実行するためのプログラムコードまたはコードセグメントが、コンピュータ可読媒体または機械可読媒体に記憶され得る。プロセッサは、必要なタスクを実行することができる。
ビデオエンコーダ、デコーダ、および他のコーディング処理デバイスを使用するビデオコーディングのいくつかのシステムおよび方法が、本明細書において説明される。たとえば、コーディングの1つまたは複数のシステムおよび方法は、高効率ビデオコーディング(HEVC)規格を使用して動作するコーデックなどの、マルチレイヤコーデックにおけるシーケンス終了ネットワーク抽象化レイヤユニットの仕様を改善するコーディングのシステムおよび方法を対象とする。
消費者がデジタルビデオデータを消費することをより多くのデバイスおよびシステムが可能にするにつれて、効率的なビデオコーディング技法の必要性がますます重要になっている。デジタルビデオデータ中に存在する大量のデータを扱うのに必要な記憶と送信の要件を下げるために、ビデオコーディングが必要とされる。様々なビデオコーディング技法が、より低いビットレートを使用する形式へとビデオデータを圧縮しながら、高いビデオ品質を維持するために使用され得る。
図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ドラフト仕様は、http://phenix.it-sudparis.eu/jct/doc_end_user/documents/17_Valencia/wg11/JCTVC-Q1003-v1.zipから入手可能である。MV-HEVCのワーキングドラフトは、http://phenix.it-sudparis.eu/jct2/doc_end_user/documents/8_Valencia/wg11/JCT3V-H1002-v5.zipから入手可能である。SHVCのワーキングドラフトは、http://phenix.it-sudparis.eu/jct/doc_end_user/documents/17_Valencia/wg11/JCTVC-Q1008-v2.zipから入手可能である。
本明細書において説明される多くの実施形態が、HEVC規格、またはその拡張を使用する例を説明する。しかしながら、本明細書において説明される技法およびシステムは、AVC、MPEG、これらの拡張、または他の適切なコーディング規格などの、他のコーディング規格にも適用可能であり得る。したがって、本明細書において説明される技法およびシステムは特定のビデオコーディング規格を参照して説明されることがあるが、この説明はその特定の規格だけに当てはまると解釈されるべきではないことを当業者は理解するだろう。
ビデオソース102は、ビデオデータを符号化デバイス104に提供することができる。ビデオソース102はソースデバイスの一部であってよく、またはソースデバイス以外のデバイスの一部であってよい。ビデオソース102は、ビデオキャプチャデバイス(たとえば、ビデオカメラ、カメラ電話、ビデオ電話など)、記憶されたビデオを格納するビデオアーカイブ、ビデオデータを提供するビデオサーバもしくはコンテンツプロバイダ、ビデオサーバもしくはコンテンツプロバイダからビデオを受信するビデオフィードインターフェース、コンピュータグラフィックスビデオデータを生成するためのコンピュータグラフィックスシステム、そのようなソースの組合せ、または任意の他の適切なビデオソースを含み得る。
ビデオソース102からのビデオデータは、1つまたは複数の入力ピクチャまたはフレームを含み得る。ピクチャまたはフレームは、ビデオの一部である静止画像である。符号化デバイス104のエンコーダエンジン106(またはエンコーダ)は、ビデオデータを符号化して、符号化されたビデオビットストリームを生成する。いくつかの例では、符号化されたビデオビットストリーム(または「ビットストリーム」)は、一連の1つまたは複数のコーディングされたビデオシーケンスである。コーディングされたビデオシーケンス(CVS)は、ベースレイヤ中のランダムアクセスポイントピクチャを有しある特性を伴うアクセスユニット(AU)から、ベースレイヤ中のランダムアクセスポイントピクチャを有しある特性を伴う次のAUの直前までの、一連のAUを含む。たとえば、CVSを開始するランダムアクセスポイントピクチャのいくつかの特性は、1に等しいRASLフラグ(たとえば、NoRaslOutputFlag)を含み得る。そうではない場合、ランダムアクセスポイントピクチャ(0に等しいRASLフラグを伴う)はCVSを開始しない。アクセスユニット(AU)は、1つまたは複数のコーディングされたピクチャと、同じ出力時間を共有するコーディングされたピクチャに対応する制御情報とを含む。HEVCビットストリームは、たとえば、ネットワーク抽象化レイヤ(NAL)ユニットと呼ばれるデータユニットを含む1つまたは複数のCVSを含み得る。ビデオコーディングレイヤ(VCL)NALユニットおよび非VCL NALユニットを含む、NALユニットの2つのクラスがHEVC規格に存在する。VCL NALユニットは、コーディングされたピクチャデータの1つのスライスまたはスライスセグメント(以下で説明される)を含み、非VCL NALユニットは、1つまたは複数のコーディングされたピクチャに関する制御情報を含む。HEVC AUは、コーディングされたピクチャデータを格納するVCL NALユニットと、(もしあれば)コーディングされたピクチャデータに対応する非VCL NALユニットとを含む。
NALユニットは、ビデオ中のピクチャのコーディングされた表現などの、ビデオデータのコーディングされた表現(たとえば、符号化されたビデオビットストリーム、ビットストリームのCVSなど)を形成するビットの列を格納し得る。エンコーダエンジン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つまたは複数の参照ピクチャ中の画像データからの動き補償予測を使用して予測される。ピクチャ間予測またはピクチャ内予測を使用したピクチャエリアをコーディングするかどうかの決定は、たとえば、CUレベルにおいて行われ得る。
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は、コンテキスト適応可変長コーディング、コンテキスト適応バイナリ算術コーディング、シンタックスベースコンテキスト適応バイナリ算術コーディング、確率間隔区分エントロピーコーディング、または別の適切なエントロピー符号化技法を使用し得る。
符号化デバイス104の出力110は、符号化されたビデオデータを構成するNALユニットを、通信リンク120を通じて受信デバイスの復号デバイス112に送信し得る。復号デバイス112の入力114はNALユニットを受信し得る。通信リンク120は、ワイヤレスネットワーク、有線ネットワーク、または有線ネットワークとワイヤレスネットワークの組合せを使用して送信される信号を含み得る。ワイヤレスネットワークは、任意のワイヤレスインターフェースまたはワイヤレスインターフェースの組合せを含んでよく、任意の適切なワイヤレスネットワーク(たとえば、インターネットまたは他のワイドエリアネットワーク、パケットベースネットワーク、WiFi(商標)、高周波(RF)、UWB、WiFi-Direct、セルラー、ロングタームエボリューション(LTE)、WiMax(商標)など)を含み得る。有線ネットワークは、任意の有線インターフェース(たとえば、ファイバー、イーサネット(登録商標)、電力線イーサネット(登録商標)、同軸ケーブルを通じたイーサネット(登録商標)、デジタル信号線(DSL)など)を含み得る。有線および/またはワイヤレスネットワークは、基地局、ルータ、アクセスポイント、ブリッジ、ゲートウェイ、スイッチなどの様々な機器を使用して実装され得る。符号化されたビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、受信デバイスに送信され得る。
いくつかの例では、符号化デバイス104は、符号化されたビデオデータを記憶装置108に記憶し得る。出力110は、エンコーダエンジン106から、または出力110から、符号化されたビデオデータを取り出し得る。記憶装置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の具体的な詳細の例が、図9を参照して以下で説明される。復号デバイス112の具体的な詳細の例が、図10を参照して以下で説明される。
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の値に割り当てられる。あるレイヤがより下のレイヤに依存し得るという意味で、レイヤは階層的であり得る。レイヤセットは、自己完結型のビットストリーム内で表されるレイヤのセットを指し、自己完結型とは、レイヤセット内のレイヤが復号プロセスにおいてレイヤセット中の他のレイヤに依存し得るが、復号のためにいずれの他のレイヤにも依存しないことを意味する。したがって、レイヤセット中のレイヤは、ビデオコンテンツを表し得る独立のビットストリームを形成し得る。レイヤセット中のレイヤのセットは、サブビットストリーム抽出プロセスの動作によって、別のビットストリームから取得され得る。レイヤセットは、いくつかのパラメータに従って動作することをデコーダが望むときに復号されるべきレイヤのセットに対応し得る。
前に説明されたように、HEVCビットストリームは、VCL NALユニットと非VCL NALユニットとを含む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ユニットとは別の送信において帯域外で送信され得る。
VCL NALユニットは、コーディングされたビデオビットストリームを形成するコーディングされたピクチャデータを含む。下のTable A(表1)に示されるように、様々なタイプのVCL NALユニットがHEVC規格において定義されている。
最初のHEVC規格において定義されるように、シングルレイヤビットストリームでは、AUに格納されるVCL NALユニットは、同じNALユニットタイプ値を有し、NALユニットタイプ値は、AUのタイプとAU内のコーディングされたピクチャのタイプとを定義する。たとえば、特定のAUのVCL NALユニットは、瞬時復号リフレッシュ(IDR)NALユニット(値19)を含んでよく、AUをIDR AUにし、AUのコーディングされたピクチャをIDRピクチャにする。所与のタイプのVCL NALユニットは、VCL NALユニットに格納されるピクチャ、またはその一部(たとえば、VCL NALユニット中のピクチャのスライスまたはスライスセグメント)に関連する。先行ピクチャ、後発ピクチャ、およびイントラランダムアクセスポイントピクチャ(IRAP)を含む、ピクチャの3つのクラスがHEVC規格において定義される。マルチレイヤビットストリームでは、AU内のピクチャのVCL NALユニットは、同じNALユニットタイプ値と同じタイプのコーディングされたピクチャとを有する。たとえば、タイプIDRのVCL NALユニットを格納するピクチャは、AU中のIDRピクチャであると言われる。別の例では、AUが、ベースレイヤ(0に等しいレイヤID)におけるIRAPピクチャであるピクチャを格納するとき、AUはIRAP AUである。
図2は、IRAPピクチャI1と、IRAPピクチャI1に関連付けられる先行ピクチャおよび後発ピクチャとを含む、符号化されたビデオビットストリームのピクチャの例である。ピクチャは矢印202の方向に出力順序で直線的に表示されており、数字1〜8(I1、B2、B3、B4、P5、B6、B7、B8)はピクチャの復号順序を示す。IRAPピクチャは、復号が開始し得るビットストリーム中の点を与える。たとえば、復号は、出力順序においてIRAPピクチャ以後のピクチャが、復号順序においてIRAPピクチャに先行するすべてのピクチャが(たとえば、ビットストリームの継ぎ合わせなどが原因で)ビットストリームから廃棄される場合であっても出力され得るように、IRAPピクチャにおいて開始し得る。IRAPピクチャにおいて復号を開始することが可能であるので、IRAPピクチャはビットストリーム中のいずれの他のピクチャにも依存しない。たとえば、IRAPピクチャは、時間的サブレイヤ0に属し、参照データとしていずれの他のピクチャのコンテンツも使用することなくコーディングされる(たとえば、イントラ予測コーディングが使用される)。ビットストリームの最初のピクチャはIRAPピクチャであり、他のIRAPピクチャもビットストリームに存在し得る。マルチレイヤビットストリームでは、0よりも大きいレイヤID(ベースレイヤ以外のレイヤ)を有するIRAPピクチャは、レイヤ間予測を使用することができる。たとえば、IRAPピクチャは、同じアクセスユニットに属しより低いレイヤIDを有するピクチャに基づいて、レイヤ間予測を使用することができる。
ピクチャB2、B3、およびB4は、IRAPピクチャI1の先行ピクチャを含む。先行ピクチャは、復号順序においてIRAPピクチャに後続するが出力順序においてIRAPピクチャに先行するピクチャである。図2に示されるように、先行ピクチャB2、B3、およびB4は、復号順序においてIRAPピクチャI1の後にあり、出力順序においてIRAPピクチャI1の前に来る。いくつかの実施形態では、先行ピクチャは、上のTable A(表1)に示される先行ピクチャNALユニットタイプ6〜9の1つを使用する。
ピクチャP5、B6、B7、およびB8は、IRAPピクチャI1の後発ピクチャを含む。後発ピクチャは、復号順序および出力順序においてIRAPピクチャに後続するピクチャである。図2に示されるように、後発ピクチャP5、B6、B7、およびB8は、復号順序において、かつ出力順序においてもIRAPピクチャI1に後続する。後発ピクチャは、上のTable A(表1)に示される後発ピクチャNALユニットタイプ0〜5の1つを使用する。
先行ピクチャおよび後発ピクチャは、復号順序において最も近いIRAPピクチャ(図2のピクチャI1)と関連付けられる。いくつかの実施形態では、IRAPピクチャおよびその関連する後発ピクチャおよび先行ピクチャの復号順序は、先行ピクチャおよび後発ピクチャに対するある条件に基づいて定義される。たとえば、後発ピクチャは、関連するIRAPピクチャおよび同じIRAPピクチャの他の後発ピクチャに依存する。IRAPピクチャと関連付けられる後発ピクチャは、いずれの先行ピクチャにも依存せず、また、前のIRAPピクチャのいずれの後発ピクチャにも依存しない。IRAPピクチャと関連付けられる先行ピクチャは、同じIRAPピクチャと関連付けられる後発ピクチャに(復号順序において)先行する。これらの条件、およびここに列挙されない同様の他の条件に基づいて、IRAPピクチャI1およびその関連する後発ピクチャおよび先行ピクチャの復号順序は、IRAPピクチャI1、続いて後発ピクチャB2、B3、B4、続いて先行ピクチャP5、B6、B7、B8である。
様々なタイプの後発ピクチャ、先行ピクチャ、およびIRAPピクチャが利用可能である。たとえば、後発ピクチャは、時間的サブレイヤアクセス(TSA)ピクチャ、ステップごとの時間的サブレイヤアクセス(STSA)ピクチャ、および通常の後発ピクチャ(TRAIL)を含む。TSAピクチャは時間的サブレイヤ切替点を示し、この時間的サブレイヤ切替点において、任意のより高いサブレイヤまでの切替えが発生し得る。STSAピクチャは時間的サブレイヤ切替点を示し、この時間的サブレイヤ切替点において、STSAピクチャと同じ時間的レイヤ識別子を伴うサブレイヤへの切替えが発生し得る。TSAピクチャおよびSTSAピクチャは、0よりも大きい時間識別子を伴う時間的サブレイヤに属する。TRAILピクチャは、任意の時間的サブレイヤに属すことが可能であり、時間的サブレイヤ切替点を示さない。マルチレイヤビットストリームでは、0よりも大きいレイヤIDを伴うレイヤに属するSTSAピクチャは、0に等しい時間的サブレイヤを伴う時間的サブレイヤにも属し得る。
先行ピクチャタイプは、ランダムアクセス復号可能先行(RADL)ピクチャと、ランダムアクセススキップ先行(RASL)ピクチャとを含む。RADLピクチャは、RADLピクチャが関連付けられるIRAPピクチャにおいてランダムアクセスが実行されるときに復号可能である、先行ピクチャである。いくつかの実施形態では、RADLピクチャは、予測を目的に、関連するIRAPピクチャと、同様にIRAPピクチャに関連付けられる他のRADLピクチャとのみを参照する。RASLピクチャは、関連するIRAPピクチャからランダムアクセスが実行されるときに復号可能ではない可能性のある先行ピクチャである。RASLピクチャは、RASLピクチャが参照のために使用するピクチャが復号順序においてIRAPピクチャに先行するとき、復号可能ではない。IRAPピクチャにおいてランダムアクセスを実行するデコーダは、復号順序においてIRAPピクチャに先行するピクチャを復号せず、したがってRASLピクチャも復号しないので、RASLピクチャは復号可能ではない。RASLピクチャは、他のタイプのピクチャ(たとえば、IRAPピクチャ、他のRASLピクチャ、RADLピクチャなど)を参照することができる。いくつかの例では、RASLピクチャだけが他のRASLピクチャに依存することがあり、この場合、RASLピクチャに依存するあらゆるピクチャがRASLピクチャである。
瞬時復号リフレッシュ(IDR)ピクチャ、クリーンランダムアクセス(CRA)ピクチャ、およびブロークンリンクアクセス(BLA)ピクチャを含む異なるタイプのIRAPピクチャが、ビデオデータをコーディングするために使用される。IDRピクチャは、デコーダにおいて復号プロセスを完全にリフレッシュまたは再初期化し、新たなCVSを開始する、イントラピクチャ(I-ピクチャ)である。いくつかの例では、IDRピクチャおよび復号順序においてIRAPピクチャに後続する任意のピクチャは、復号順序においてIDRピクチャの前に来るいずれのピクチャにも依存し得ない。いくつかの場合、RASLピクチャは、IDRピクチャと関連付けられることが許容されない。CRAピクチャはI-ピクチャでもある。CRAピクチャは、デコーダをリフレッシュせず、新たなCVSを開始せず、CRAピクチャの先行ピクチャが、復号順序においてCRAピクチャの前に来るピクチャに依存することを可能にする。いくつかの例では、CRAピクチャは、関連するRADLピクチャとRASLピクチャとを有し得る。ランダムアクセスは、CRAピクチャ、復号順序においてCRAピクチャの前に来るいずれのピクチャにも依存しないCRAピクチャと関連付けられる先行ピクチャ、および復号順序と出力順序の両方においてCRAに後続するすべての関連するピクチャを復号することによって、CRAピクチャにおいて行われ得る。いくつかの場合、CRAピクチャは、関連する先行ピクチャを有しないことがある。マルチレイヤの場合、0よりも大きいレイヤIDを伴うレイヤに属するIDRまたはCRAピクチャはP-ピクチャまたはB-ピクチャであり得るが、これらのピクチャは、IDRピクチャまたはCRAピクチャと同じアクセスユニットに属し、IDRピクチャまたはCRAピクチャを格納するレイヤよりも小さいレイヤIDを有する、他のピクチャからのレイヤ間予測だけを使用できる。
IRAPピクチャは、ビットストリームを一緒に継ぎ合わせる能力を提供する。たとえば、エンコーダ、ビットストリームエディタ(または「エディタ」)、スプライサ、または他のネットワークデバイスが、IRAPピクチャを使用してビットストリームを一緒に継ぎ合わせることができる。ビットストリームの継ぎ合わせは、ある圧縮されたビデオビットストリームから別の圧縮されたビデオビットストリームへのシームレスな切替えを可能にする。たとえば、継ぎ合わせは、第1の圧縮されたビデオビットストリームの第1のIRAP AUおよびすべての後続のAUを、第2の圧縮されたビデオビットストリームの第2のIRAP AUおよび後続のAUで置き換えることによって行われる。CRAピクチャは、(前に説明されたように、ランダムアクセスに加えて)圧縮されたビデオビットストリームを継ぎ合わせるために使用され得る。たとえば、第1および第2のIRAP AUはCRAピクチャを含み得る。いくつかの実施形態では、IDRピクチャは、圧縮されたビデオビットストリームを継ぎ合わせるために使用され得る。いくつかの場合、第1のAUがIRAPピクチャを格納すべきであるとは限らない。マルチレイヤビットストリームでは、継ぎ合わせは、第2のAUがベースレイヤに属するIRAPピクチャを格納するときに行われ得る。
いくつかの場合、継ぎ合わせが行われた後で、復号順序においてCRAピクチャに後続するRASLピクチャは、継ぎ合わせ後にはもはやビットストリーム中にない1つまたは複数のピクチャをRASLピクチャが参照する場合には、復号可能ではないことがある。いくつかの例では、エンコーダ、エディタ、スプライサ、または他のデバイスは、継ぎ合わせの間にRASLピクチャを廃棄することができる。他の例では、ピクチャ順序カウントのタイムライン、ならびに、RASLピクチャが依存し得るCRAピクチャに(復号順序において)先行するピクチャからの予測が、継ぎ合わせが行われるときには壊れていることを示すために、ブロークンリンク継ぎ合わせオプションが使用され得る。
BLAピクチャと呼ばれる第3のタイプのIRAPピクチャは、関連するRASLピクチャが復号されるべきかどうかをデコーダが決定できるように、継ぎ合わせ動作がいつ行われたかをデコーダに知らせるために使用される。継ぎ合わせの間、継ぎ合わせのために使用される新たなビットストリーム中のCRAピクチャは、BLAピクチャとして扱われる。ブロークンリンク継ぎ合わせが実行されるとき、RASLピクチャは維持されてよく、そのようなBLAピクチャに遭遇するデコーダは、BLAピクチャと関連付けられるRASLピクチャを廃棄することができる。デコーダがCRAピクチャに遭遇する場合、デコーダは、CRAピクチャと関連付けられるRASLピクチャを復号する。デコーダがBLAピクチャまたはCRAピクチャに遭遇するとき、デコーダは、BLAピクチャおよびCRAピクチャとそれぞれ関連付けられるすべてのRADLピクチャを復号する。BLAピクチャは、デコーダにおいて復号プロセスをリフレッシュまたは再初期化し、新たなCVSを開始する。いくつかの実施形態では、継ぎ合わせが行われていないときでもBLAピクチャが使用され得る。
ビットストリームをデコーダに送信するエンコーダ、エディタ、または他のデバイスは、CRAピクチャがBLAピクチャとして扱われるべきであることをデコーダに示し得る。一例では、継ぎ合わせの間、継ぎ合わせのために使用される新たなビットストリーム中のCRAピクチャは、BLAピクチャと名称変更される。たとえば、デバイス(エディタ、スプライサ、または他のネットワークエンティティ)は、CRA NALユニットタイプをBLA NALユニットタイプに変更することができる。この事例では、デバイスは、ビットストリームのビットを変更してNALユニットタイプを変更する。
別の例では、CRAピクチャがBLAピクチャとし扱われるべきであることをデコーダに示すBLAフラグが提供され得る。一例では、BLAフラグはHandleCraAsBlaFlagであり得る。BLAフラグは、特定のCRAピクチャをBLAピクチャとして扱うようにデコーダに知らせるために、ある値に設定され得る。いくつかの実施形態では、CRAピクチャがBLAピクチャとして扱われるべきであることをデコーダに示すために、BLAフラグは1という値に設定され得る。BLAフラグの値が0である場合、デコーダはCRAピクチャを(BLAピクチャではなく)CRAピクチャとして扱う。他の実施形態では、CRAピクチャがBLAピクチャとして扱われるべきであることを示すために、BLAフラグは0という値に設定され得る。いくつかの場合、BLAフラグは、符号化されたビデオビットストリームとともに帯域内で送信される(たとえば、1つまたは複数の非VCL NALユニットにおいてHEVCコーデックによって送信される)。いくつかの場合、BLAフラグは、符号化されたビデオビットストリームを提供するコーデック以外のデバイスによって送信され得る外部的に規定される指示である。たとえば、外部ソース(たとえば、AVCコーデック、エディタ、スプライサ、または他のデバイス)が、帯域外通信においてBLAフラグを送信し得る。
図3は、BLAフラグを伴う符号化されたビデオビットストリーム300の例を示す。符号化されたビデオビットストリーム300は、アクセスユニットNからN+9を含む。アクセスユニットNからN+9は、(たとえば、レイヤID=0である)第1のレイヤL0および(たとえば、レイヤID=1である)第2のレイヤL1の中の様々なピクチャを含む。いくつかの実施形態では、第1のレイヤL0はベースレイヤを含んでよく、第2のレイヤL1はエンハンスメントレイヤを含んでよい。矢印302によって示されるように、アクセスユニットNからN+9は復号順序で示されている。アクセスユニットN、N+1、N+2、N+5、N+7、N+8、およびN+9は、レイヤL0とL1の両方の中の後発ピクチャを格納する。アクセスユニットN+3およびN+4は、レイヤL0の中の先行ピクチャとレイヤL1の中の後発ピクチャとを含む。先行ピクチャはRASLピクチャを含み得る。アクセスユニットN+6は、レイヤL0の中の後発ピクチャとレイヤL1の中のCRAピクチャとを含む。アクセスユニットN+2は、レイヤL0の中のBLAフラグが1という値に設定されたCRAピクチャと、レイヤL1の中の後発ピクチャとを含む。ビットストリーム300を受信して復号すると、デコーダは、N+2アクセスユニット中のCRAピクチャをBLAピクチャとして扱うことができる。
再初期化フラグは、復号プロセスがIRAP AUの特定のIRAPピクチャにおいてリフレッシュまたは再初期化されるべきであることをデコーダに示し得る。一例では、再初期化フラグはNoClrasOutputFlagであり得る。いくつかの実施形態では、再初期化フラグは、符号化されたビデオビットストリームのすべてのレイヤにわたって復号が再初期化されるようにし得る。再初期化フラグは、復号プロセスを再初期化することをデコーダに示すある値であるものとして導出され得る。いくつかの実施形態では、再初期化フラグの1という値は、復号プロセスが再初期化されるべきであることをデコーダに示し得る。再初期化フラグの値が0であるものとしてデコーダによって導出される場合、デコーダは、復号順序においてより前にあり、(たとえば、RASLピクチャ、クロスレイヤRASLピクチャなどを復号するときに)IRAP AUよりも前に復号されるピクチャを参照し続ける。他の実施形態では、再初期化フラグの0という値は、復号が再初期化されるべきであることを示し得る。いくつかの場合、再初期化フラグは、復号プロセスの一部としてデコーダによって導出され得る。たとえば、再初期化フラグは、符号化されたビデオビットストリームにおいて提供され得る。いくつかの場合、再初期化フラグは、外部ソースによってデコーダに対して指定され得る。たとえば、再初期化フラグは、符号化されたビデオビットストリームとは別に帯域外通信において提供され得る。外部ソースは、エンコーダ(HEVCプロトコル以外のコーディングプロトコルを使用する)、デコーダ(HEVCプロトコル以外のコーディングプロトコルを使用する)、エディタ、スプライサ、または、再初期化フラグを提供する他のネットワークデバイスを含み得る。一例では、デコーダ(HEVCプロトコル以外のコーディングプロトコルを使用する)は、再初期化フラグを復号することができ、再初期化フラグをHEVCデコーダに提供することができる。
デコーダは、再初期化フラグの値を決定することができ、決定された値に基づいて復号プロセスを再初期化することができる。デコーダは、新たな予測境界を開始し、IRAP AUにおけるピクチャから始めて、復号順序においてIRAP AUに後続するピクチャへと続けることによって、復号プロセスを再初期化することができる。いくつかの場合、復号順序においてIRAP AUに先行するピクチャは、復号プロセスが再初期化された後、参照のために利用可能ではない。たとえば、デコーダは、IRAP AUにおいて復号プロセスを再初期化し、復号順序においてIRAP AUに先行するすべてのピクチャを廃棄することができる。他の場合、再初期化が、少なくとも一部、1つまたは複数のRASLピクチャまたは1つまたは複数のクロスレイヤランダムアクセススキップ先行(CL-RAS)ピクチャを廃棄することによって実行される。CL-RASピクチャは、IRAP AUと関連付けられ、0よりも大きいレイヤIDを伴うレイヤ(ベースレイヤ以外のレイヤ)に属するピクチャである。いくつかの場合、CL-RASピクチャは、復号がIRAP AUから開始または再初期化するとき、正しく復号可能ではないことがある。そのような場合、CL-RASピクチャは、これらのピクチャの1つまたは複数が、復号順序においてIRAP AUに先行するので利用不可能であるピクチャを(直接または間接的に)参照し得るので、正しく復号可能ではないことがある。
いくつかの実施形態では、BLAフラグは、(図3に示されるように)ベースレイヤに属するCRAピクチャがBLAピクチャとして扱われるべきであることを示す値に設定されるとき、再初期化フラグは、BLAピクチャとして扱われるCRAピクチャを格納するIRAP AUにおいて復号プロセスが再初期化されるべきであることを示す値として、デコーダによって導出される。たとえば、アクセスユニットN+2が、1に設定されたBLAフラグ(CRAピクチャをBLAピクチャとして扱うようにデコーダに示す)を伴うCRAピクチャを含むと決定すると、デコーダは、N+2アクセスユニットにおいて1に等しいものとして再初期化フラグを導出する。そのような実施形態では、デコーダは、CRAピクチャのBLAフラグが1に設定されるという決定に基づいて、N+2アクセスユニットにおいて復号プロセスを再初期化する。
いくつかの実施形態では、AUはシーケンス終了(EOS)NALユニットを格納し得る。いくつかの例では、EOS NALユニットは、特定のCVSの最後のNALユニットとしてそのNALユニットを示すために、ビットストリームに挿入され得る。いくつかの例では、EOS NALユニットは、レイヤ特有の方式で使用され得る。そのような例では、EOS NALユニットは、レイヤ識別子(ID)を割り当てられ得る。特定のレイヤIDを割り当てられたEOS NALユニットは、そのレイヤIDが同様に割り当てられる特定のレイヤに対するシーケンスの終了としてそのNALユニットを示すために使用される。いくつかの場合、EOS NALユニットを伴うアクセスユニットの直後のアクセスユニットは、IRAPピクチャを格納する。
図4は、EOS NALユニットと、復号順序においてEOS NALユニットに後続するCRAピクチャとを伴う、符号化されたビデオビットストリーム400の例を示す。符号化されたビデオビットストリーム400は、アクセスユニットNからN+9を含む。アクセスユニットNからN+9は、(たとえば、レイヤID=0である)第1のレイヤL0および(たとえば、レイヤID=1である)第2のレイヤL1の中の様々なピクチャを含む。いくつかの実施形態では、第1のレイヤL0はベースレイヤを含んでよく、第2のレイヤL1はエンハンスメントレイヤを含んでよい。矢印402によって示されるように、アクセスユニットNからN+9は復号順序で示されている。アクセスユニットN、N+1、N+5、N+7、N+8、およびN+9は、レイヤL0とL1の両方の中の後発ピクチャを格納する。アクセスユニットN+3およびN+4は、レイヤL0の中の先行ピクチャとレイヤL1の中の後発ピクチャとを含む。先行ピクチャはRASLピクチャを含み得る。アクセスユニットN+2は、レイヤL0の中のCRAピクチャとレイヤL1の中の後発ピクチャとを含む。アクセスユニットN+6は、レイヤL0の中の後発ピクチャとレイヤL1の中のCRAピクチャとを含む。アクセスユニットN+1の中の後発ピクチャに加えて、EOS NALユニットは、NALユニットのシーケンスの終了(たとえば、CVS全体の終了、またはレイヤL0に対するシーケンスの終了)を示すために、アクセスユニットN+1に挿入される。
図5は、EOS NALユニットと、復号順序においてEOS NALユニットに後続するIDRピクチャとを伴う、符号化されたビデオビットストリーム500の別の例を示す。符号化されたビデオビットストリーム500は、アクセスユニットNからN+9を含む。アクセスユニットNからN+9は、(たとえば、レイヤID=0である)第1のレイヤL0および(たとえば、レイヤID=1である)第2のレイヤL1の中の様々なピクチャを含む。いくつかの実施形態では、第1のレイヤL0はベースレイヤを含んでよく、第2のレイヤL1はエンハンスメントレイヤを含んでよい。矢印502によって示されるように、アクセスユニットNからN+9は復号順序で示されている。アクセスユニットN、N+1、N+3、N+4、N+8、およびN+9は、レイヤL0とL1の両方の中の後発ピクチャを格納する。アクセスユニットN+6およびN+7は、レイヤL0の中の後発ピクチャとレイヤL1の中の先行ピクチャとを含む。先行ピクチャはRASLピクチャを含み得る。アクセスユニットN+2は、レイヤL0の中のIDRピクチャとレイヤL1の中の後発ピクチャとを含む。アクセスユニットN+5は、レイヤL0の中の後発ピクチャとレイヤL1の中のCRAピクチャとを含む。アクセスユニットN+1の中の後発ピクチャに加えて、EOS NALユニットは、NALユニットのシーケンスの終了(たとえば、CVS全体の終了、またはレイヤL0に対するシーケンスの終了)を示すために、アクセスユニットN+1に挿入される。
EOS NALユニットに後続するIRAPピクチャは、新たな復号プロセスの始まりとして扱われるべきであり、再初期化フラグは、復号が再初期化されるべきであることを示す値として導出されるべきである。しかしながら、HEVC規格によれば、IRAPピクチャ(たとえば、CRAピクチャまたはIDRピクチャ)がEOS NALユニットに後続するとき、再初期化フラグは、1に等しいものとしてデコーダによって導出されない。たとえば、図3に関して上で説明されたように、レイヤID(たとえば、nuh_layer_id)が0に等しいCRAピクチャが1という値を伴うBLAフラグを有するとき、再初期化フラグの値は1に等しいものとして導出される。しかしながら、図4および図5に示されるように、レイヤIDが0に等しいCRAピクチャまたはIDRピクチャは、(アクセスユニットN+2のCRAピクチャによって示されるように)復号順序においてEOS NALユニットの後にある最初のピクチャであり、再初期化フラグの値は、CRAピクチャまたはIDRピクチャに対して1に等しいものとして導出されない。
さらに、EOS NALユニットを使用する1つの目的は、時間的予測の連鎖の終了を示すことである。たとえば、図5に示されるように、N+1アクセスユニット中のEOS NALユニットは、ビットストリーム500中での継ぎ合わせの点の指示を可能にする。いくつかの例では、N+2アクセスユニット中のIDRピクチャ中のフラグの値は、継ぎ合わせの点を示すように設定され得る。しかしながら、フラグが再初期化を示すように設定されず、復号が再初期化されるべきであることを示す値に等しいものとして再初期化フラグが導出されない場合(それは現在のHEVC規格に従わない)、時間的予測の連鎖はデコーダによって再初期化されない。
本明細書において説明される実施形態は、IRAPピクチャがEOS NALユニットに後続するときに、復号がIRAPピクチャにおいて再初期化されるべきであることを示す値であるものとしてデコーダが再初期化フラグを導出するように、復号プロセスを修正することを含む。IRAPピクチャは、CRAピクチャ(図4に示されるような)またはIDRピクチャ(図5に示されるような)を含み得る。デコーダは、復号順序においてEOS NALユニットに後続するIRAPピクチャを格納するアクセスユニット以降の、レイヤのいくつかまたはすべてにわたって復号を再初期化することができる。
いくつかの例では、再初期化フラグの値は、復号順序においてEOS NALユニットの後にある最初のピクチャであるCRAピクチャに対して、(復号プロセスの再初期化を示す)1に等しいものとして導出される。いくつかの場合、再初期化フラグの値は、復号順序においてEOS NALユニットの後にある最初のピクチャである、レイヤIDが0に等しいCRAピクチャに対して、1として導出され得る。そのような例では、復号順序においてEOS NALユニットに後続する最初のIRAP AUに格納されるCRAピクチャ(たとえば、任意のレイヤIDに対する、または0に等しいレイヤIDを伴う)および1に等しいBLAフラグを伴うCRAピクチャは、デコーダがBLAピクチャを扱うのと同じ方法でデコーダによって扱われる。いくつかの例では、復号はすべてのレイヤに対して再初期化され得る。他の例では、復号は、CRAピクチャのレイヤID以上のレイヤIDを伴うレイヤだけに対して再初期化され得る。
ある例として図4を使用すると、アクセスユニットN+2中のCRAピクチャは、復号順序においてアクセスユニットN+1のEOS NALユニットに後続する最初のピクチャである。デコーダは、アクセスユニットN+2がCRAピクチャを格納することと、アクセスユニットN+2が復号順序においてEOS NALユニットの後にある最初のピクチャを含むこととを決定し得る。デコーダは次いで、復号がCRAピクチャにおいて再初期化されるべきであることを示す値(たとえば、1という値)として、CRAピクチャに対する再初期化フラグを導出することができる。いくつかの実施形態では、デコーダはさらに、上記の決定を基礎として、CRAピクチャが0に等しいレイヤIDを有する(CRAピクチャがベースレイヤL0の中にあることを示す)ことに基づいて再初期化フラグの値を導出することができる。そのような実施形態では、デコーダは、0以外の数に等しいレイヤIDをCRAピクチャが有する場合(たとえば、1つまたは複数のエンハンスメントレイヤ中のCRAピクチャ)、復号順序においてEOS NALユニットに後続するCRAピクチャに対して、再初期化フラグの値を1(または復号が再初期化されるべきであることを示す他の値)であるものとして導出しなくてよい。
いくつかの例では、復号順序においてEOS NALユニット(継ぎ合わせの点を示し得る)の後にある最初のアクセスユニットがIDRピクチャを格納するIRAPアクセスユニットであるとき、IDRピクチャに対する再初期化フラグの値は、(復号プロセスの再初期化を示す)1に等しいものとして導出される。いくつかの場合、再初期化フラグの値は、復号順序においてEOS NALユニットの後にある最初のアクセスユニットである、レイヤIDが0に等しいIDRピクチャに対して、1に等しいものとして導出される。いくつかの例では、復号は、再初期化フラグが1に等しいものとして導出されるとき、すべてのレイヤに対して再初期化され得る。他の例では、復号は、IDRピクチャのレイヤID以上のレイヤIDを伴うレイヤだけに対して再初期化され得る。
例として図5を参照すると、アクセスユニットN+2は、IDRピクチャを格納し、復号順序においてアクセスユニットN+1のEOS NALユニットに後続する最初のアクセスユニットである。デコーダは、アクセスユニットN+2がIDRピクチャを格納することと、アクセスユニットN+2が復号順序においてEOS NALユニットの後にある最初のピクチャを含むこととを決定し得る。デコーダは次いで、復号がIDRピクチャにおいて再初期化されるべきであることを示す値(たとえば、1という値)として、IDRピクチャに対する再初期化フラグを導出することができる。いくつかの実施形態では、デコーダはさらに、上記の決定を基礎として、IDRピクチャが0に等しいレイヤIDを有する(CRAピクチャがベースレイヤL0の中にあることを示す)ことに基づいて再初期化フラグの値を導出することができる。そのような実施形態では、デコーダは、0以外の数に等しいレイヤIDをIDRピクチャが有する場合(たとえば、1つまたは複数のエンハンスメントレイヤ中のIDRピクチャ)、復号順序においてEOS NALユニットに後続するIDRピクチャに対して、再初期化フラグの値を1(または復号が再初期化されるべきであることを示す他の値)であるものとして導出しなくてよい。
上で説明された技法を実装するHEVC規格に対する変更の例は、以下のことを含み得る。
現在のピクチャがIRAPピクチャであり、0に等しいnuh_layer_idを有するとき、次のことが当てはまる。
変数NoClrasOutputFlagが次のように規定される。
現在のピクチャがビットストリーム中で最初のピクチャである場合、NoClrasOutputFlagは1に等しく設定される。
そうではなく、現在のピクチャが1に等しいHandleCraAsBlaFlagを伴うBLAピクチャまたはCRAピクチャである場合、NoClrasOutputFlagは1に等しく設定される。
そうではなく、現在のピクチャがCRAピクチャであり、現在のアクセスユニットが復号順序においてシーケンス終了NALユニットに後続する最初のアクセスユニットである場合、NoClrasOutputFlagは1に等しく設定される。
そうではなく、現在のピクチャが1に等しいcross_layer_bla_flagを伴うIDRピクチャである場合、NoClrasOutputFlagは1に等しく設定される。
そうではなく、本明細書において規定されない何らかの外部手段がNoClrasOutputFlagを設定するのに利用可能である場合、NoClrasOutputFlagはその外部手段によって設定される。
それ以外の場合、NoClrasOutputFlagは0に等しく設定される。
NoClrasOutputFlagが1に等しいとき、変数LayerInitializedFlag[ i ]は、両端を含めて0からvps_max_layer_idまでのiのすべての値に対して0に等しく設定され、変数FirstPicInLayerDecodedFlag[ i ]は、両端を含めて0からvps_max_layer_idまでのiのすべての値に対して0に等しく設定される。
代替的に、NoClrasOutputFlagの導出は、次のように修正される。
現在のピクチャがIRAPピクチャであり、0に等しいnuh_layer_idを有するとき、次のことが当てはまる。
変数NoClrasOutputFlagが次のように規定される。
現在のピクチャがビットストリーム中で最初のピクチャである場合、NoClrasOutputFlagは1に等しく設定される。
そうではなく、現在のピクチャが1に等しいHandleCraAsBlaFlagを伴うBLAピクチャまたはCRAピクチャである場合、NoClrasOutputFlagは1に等しく設定される。
そうではなく、現在のピクチャがIRAPピクチャであり、現在のアクセスユニットが復号順序においてシーケンス終了NALユニットに後続する最初のアクセスユニットである場合、NoClrasOutputFlagは1に等しく設定される。
そうではなく、現在のピクチャが1に等しいcross_layer_bla_flagを伴うIDRピクチャである場合、NoClrasOutputFlagは1に等しく設定される。
そうではなく、本明細書において規定されない何らかの外部手段がNoClrasOutputFlagを設定するのに利用可能である場合、NoClrasOutputFlagはその外部手段によって設定される。
それ以外の場合、NoClrasOutputFlagは0に等しく設定される。
代替的に、HandleCraAsBlaFlagの導出は、次のように修正される。
現在のピクチャがIRAPピクチャであるとき、変数HandleCraAsBlaFlagは以下で規定されるように導出される。
現在のピクチャがCRAピクチャであり、復号順序においてシーケンス終了NALユニットに後続する最初のピクチャである場合、変数HandleCraAsBlaFlagは1に等しく設定される。
そうではなく、本明細書において規定されない何らかの外部手段が現在のピクチャに対して変数HandleCraAsBlaFlagをある値に設定するのに利用可能である場合、変数HandleCraAsBlaFlagはその外部手段によって提供される値に等しく設定される。
それ以外の場合、変数HandleCraAsBlaFlagは0に等しく設定される。
図6は、ビデオデータを復号するプロセス600のある実施形態を示す。プロセス600は、シーケンス終了ネットワーク抽象化レイヤユニットのビューにおける復号を再初期化するために実施される。いくつかの態様では、プロセス600は、図1または図10に示される復号デバイス112などの、コンピューティングデバイスまたは装置によって実行され得る。たとえば、コンピューティングデバイスまたは装置は、デコーダ、またはプロセッサ、マイクロプロセッサ、マイクロコンピュータ、または、プロセス600のステップを実行するように構成されるデコーダの他のコンポーネントを含み得る。
プロセス600は論理フロー図として示され、その動作は、ハードウェア、コンピュータ命令、またはこれらの組合せで実施され得る動作の列を表す。コンピュータ命令の文脈では、動作は、1つまたは複数のプロセッサによって実行されると列挙された動作を実行する、1つまたは複数のコンピュータ可読記憶媒体に記憶されたコンピュータ実行可能命令を表す。一般に、コンピュータ実行可能命令は、特定の機能を実行し、または特定のデータタイプを実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。動作が説明される順序は限定として見なされることを意図しておらず、任意の数の説明される動作が、プロセスを実施するために任意の順序でかつ/または並列に組み合わされ得る。
加えて、プロセス600は、実行可能な命令により構成された1つまたは複数のコンピュータシステムの制御のもとで実行されてよく、1つまたは複数のプロセッサ上で、ハードウェアによって、またはこれらの組合せで集合的に実行されるコード(たとえば、実行可能命令、1つまたは複数のコンピュータプログラム、または1つまたは複数のアプリケーション)として実装され得る。上で述べられたように、コードは、たとえば、1つまたは複数のプロセッサにより実行可能な複数の命令を備えるコンピュータプログラムの形式で、コンピュータ可読記憶媒体または機械可読記憶媒体に記憶され得る。コンピュータ可読記憶媒体または機械可読記憶媒体は非一時的であり得る。
602において、ビデオデータを復号するプロセス600は、複数のレイヤを備える符号化されたビデオビットストリームにアクセスすることを含む。符号化されたビデオビットストリームは複数のアクセスユニットを含み、第1のアクセスユニットはシーケンス終了ネットワーク抽象化レイヤユニットを含み、第2のアクセスユニットはイントラランダムアクセスポイントピクチャを含み、第1のアクセスユニットの後にある復号順序において次の後続のアクセスユニットである。いくつかの例では、符号化されたビデオビットストリームは図4に示されるビットストリーム400を含む。そのような例では、第1のアクセスユニットはN+1アクセスユニットを含み、第2のアクセスユニットはN+2アクセスユニットを含み、第2のアクセスユニットのイントラランダムアクセスポイントピクチャはクリーンランダムアクセス(CRA)ピクチャを含む。いくつかの例では、符号化されたビデオビットストリームは図5に示されるビットストリーム500を含む。そのような例では、第1のアクセスユニットはN+1アクセスユニットを含み、第2のアクセスユニットはN+2アクセスユニットを含み、第2のアクセスユニットのイントラランダムアクセスポイントピクチャは瞬時復号リフレッシュ(IDR)ピクチャを含む。符号化されたビデオビットストリームは、本明細書において説明されたもの以外の符号化されたビデオビットストリームを含み得ることを、当業者は理解するであろう。
604において、プロセス600は、第2のアクセスユニットが、第1のアクセスユニットのシーケンス終了ネットワーク抽象化レイヤユニットの後にある復号順序において次の後続のアクセスユニットであることに基づいて、第2のアクセスユニットにおいて復号を再初期化することを含む。いくつかの実施形態では、プロセス600は、第2のアクセスユニットが、第1のアクセスユニットのシーケンス終了ネットワーク抽象化レイヤユニットの後にある復号順序において次の後続のアクセスユニットであることに基づいて、第2のアクセスユニットにおいて複数のレイヤの各々の復号を再初期化することを含み得る。たとえば、復号は符号化されたビデオビットストリームのレイヤのすべてに対して再初期化される。
いくつかの実施形態では、第1のアクセスユニットは、符号化されたビデオビットストリームのベースレイヤ中のシーケンス終了ネットワーク抽象化レイヤユニットを含み、第2のアクセスユニットは、ベースレイヤ中のイントラランダムアクセスポイントピクチャを含む。これらの実施形態では、第2のアクセスユニットが、ベースレイヤ中にあり、かつ、第1のアクセスユニットのシーケンス終了ネットワーク抽象化レイヤユニットの後にある復号順序において次の後続のアクセスユニットであることに基づいて、復号が第2のアクセスユニットにおいて再初期化される。
いくつかの実施形態では、第2のアクセスユニットのフラグ(たとえば、再初期化フラグ)は、第2のアクセスユニットが、第1のアクセスユニットのシーケンス終了ネットワーク抽象化レイヤユニットの後にある復号順序において次の後続のアクセスユニットであるとき、ある値に設定され、またはある値であるものとして導出される。フラグのこの値は、復号が第2のアクセスユニットにおいて再初期化されるべきであることを示す。いくつかの例では、このフラグはNoClrasOutputFlagを含み、この値は1という値である。いくつかの例では、この値は0という値である。
いくつかの実施形態では、第2のアクセスユニットにおいて復号を再初期化するステップは、第2のアクセスユニットと関連付けられる、1つまたは複数のランダムアクセススキップ先行ピクチャ、または、1つまたは複数のクロスレイヤランダムアクセススキップ先行ピクチャを廃棄するステップを含む。
図7は、ビデオデータを処理するプロセス700のある実施形態を示す。プロセス700は、復号プロセスがデコーダにおいて再初期化されるように、シーケンス終了ネットワーク抽象化レイヤユニットを含む符号化されたビデオビットストリームを生成するために実施される。いくつかの態様では、プロセス700は、ビットストリームエディタ、ビットストリームスプライサ、または、図1もしくは図9に示される符号化デバイス104などのエンコーダなどの、コンピューティングデバイスまたは装置によって実行され得る。たとえば、コンピューティングデバイスまたは装置は、ビットストリームエディタ、ビットストリームスプライサ、エンコーダ、または、プロセッサ、マイクロプロセッサ、マイクロコンピュータ、もしくは、プロセス700のステップを実行するように構成されるそのようなデバイスの他のコンポーネントを含み得る。
プロセス700は論理フロー図として示され、その動作は、ハードウェア、コンピュータ命令、またはこれらの組合せで実施され得る動作の列を表す。コンピュータ命令の文脈では、動作は、1つまたは複数のプロセッサによって実行されると列挙された動作を実行する、1つまたは複数のコンピュータ可読記憶媒体に記憶されたコンピュータ実行可能命令を表す。一般に、コンピュータ実行可能命令は、特定の機能を実行し、または特定のデータタイプを実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。動作が説明される順序は限定として見なされることを意図しておらず、任意の数の説明される動作が、プロセスを実施するために任意の順序でかつ/または並列に組み合わされ得る。
加えて、プロセス700は、実行可能な命令により構成された1つまたは複数のコンピュータシステムの制御のもとで実行されてよく、1つまたは複数のプロセッサ上で、ハードウェアによって、またはこれらの組合せで集合的に実行されるコード(たとえば、実行可能命令、1つまたは複数のコンピュータプログラム、または1つまたは複数のアプリケーション)として実装され得る。上で述べられたように、コードは、たとえば、1つまたは複数のプロセッサにより実行可能な複数の命令を備えるコンピュータプログラムの形式で、コンピュータ可読記憶媒体または機械可読記憶媒体に記憶され得る。コンピュータ可読記憶媒体または機械可読記憶媒体は非一時的であり得る。
702において、ビデオデータを処理するプロセス700は、複数のレイヤを備える第1の符号化されたビデオビットストリームを取得することを含み、第1の符号化されたビデオビットストリームは複数のアクセスユニットを含む。第1の符号化されたビデオビットストリームは、HEVC、AVC、MPEG、または他の適切なビデオコーディング技法などのコーディング技法を使用してコーディングされ得る。
704において、プロセス700は、複数のレイヤを備える第2の符号化されたビデオビットストリームを取得することを含み、第2の符号化されたビデオビットストリームは複数のアクセスユニットを含む。第2の符号化されたビデオビットストリームは、HEVC、AVC、MPEG、または他の適切なビデオコーディング技法などのコーディング技法を使用してコーディングされ得る。
706において、プロセス700は、第1の符号化されたビデオビットストリーム中のアクセスユニットを第2の符号化されたビデオビットストリーム中のアクセスユニットと組み合わせることによって、および、シーケンス終了ネットワーク抽象化レイヤユニットを第1の符号化されたビデオビットストリームの第1のアクセスユニットに挿入することによって、第3の符号化されたビデオビットストリームを生成することを含む。第2の符号化されたビデオビットストリームの第2のアクセスユニットは、イントラランダムアクセスポイントピクチャを含み、シーケンス終了ネットワーク抽象化レイヤユニットを伴う第1のアクセスユニットの後にある復号順序において次の後続のアクセスユニットである。いくつかの例では、第3の符号化されたビデオビットストリームは、第1の符号化されたビデオビットストリームおよび第2の符号化されたビデオビットストリームのイントラランダムアクセスポイントピクチャにおいて、第1の符号化されたビデオビットストリームおよび第2の符号化されたビデオビットストリームを一緒に継ぎ合わせることによって、生成され得る。たとえば、この継ぎ合わせは、イントラランダムアクセスポイントピクチャを格納するアクセスユニットおよび第1の符号化されたビデオビットストリームのすべての後続のアクセスユニットを、イントラランダムアクセスポイントピクチャを格納する第2のアクセスユニットおよび第2の符号化されたビデオビットストリームの後続のアクセスユニットで置き換えることによって、行われ得る。プロセス700は、第3の符号化されたビデオビットストリームの復号が第2のアクセスユニットにおいて再初期化されるように、シーケンス終了ネットワーク抽象化レイヤユニットを第1のアクセスユニットに挿入する。復号の再初期化は、第2のアクセスユニットが、第1のアクセスユニットのシーケンス終了ネットワーク抽象化レイヤユニットの後にある復号順序において次の後続のアクセスユニットであることに基づいて、行われる。
いくつかの実施形態では、第3の符号化されたビデオビットストリームを生成するステップは、第3の符号化されたビデオビットストリームが復号されるべきであると決定するステップを含み、第3の符号化されたビデオビットストリームは、第1のアクセスユニット以前の第1の符号化されたビデオビットストリーム中のアクセスユニットと、続いて、第2のアクセスユニット以後の第2の符号化されたビデオビットストリーム中のアクセスユニットとを含む。第3の符号化されたビデオビットストリームを生成するステップはさらに、第2の符号化されたビデオビットストリームの復号が、イントラランダムアクセスポイントピクチャを含む第2のアクセスユニットにおいて再初期化されるべきであると決定するステップと、第1のアクセスユニット以前の第1の符号化されたビデオビットストリーム中のアクセスユニットを、第2のアクセスユニット以降の第2の符号化されたビデオビットストリーム中のアクセスユニットと組み合わせることによって、および、シーケンス終了ネットワーク抽象化レイヤユニットを第1のアクセスユニットに挿入することによって、第3の符号化されたビデオビットストリームを生成するステップとを含む。
708において、プロセス700は、第3の符号化されたビデオビットストリームを送信するステップを含み、第3の符号化されたビデオビットストリームの復号は、第2のアクセスユニットが、第1のアクセスユニットのシーケンス終了ネットワーク抽象化レイヤユニットの後にある復号順序において次の後続のアクセスユニットであることに基づいて、第2のアクセスユニットにおいて再初期化される。いくつかの実施形態では、第3の符号化されたビデオビットストリームの複数のレイヤの各レイヤの復号は、第2のアクセスユニットが、第1のアクセスユニットのシーケンス終了ネットワーク抽象化レイヤユニットの後にある、復号順序において次の後続のアクセスユニットであることに基づいて、第2のアクセスユニットにおいて再初期化される。たとえば、復号は符号化されたビデオビットストリームのレイヤのすべてに対して再初期化される。
いくつかの実施形態では、第1の符号化されたビデオビットストリームおよび第2の符号化されたビデオビットストリームは、上で説明されたように、一緒に継ぎ合わされる別々の符号化されたビデオビットストリームである。いくつかの実施形態では、第1の符号化されたビデオビットストリームおよび第2の符号化されたビデオビットストリームは、同じ符号化されたビデオビットストリームであり、第2のアクセスユニットは、同じ符号化されたビデオビットストリームにおいて第1のアクセスユニットの後にある復号順序において後続のアクセスユニットである。たとえば、第1の符号化されたビデオビットストリームは、時間t1から時間t3までのビットストリームの第1の部分であってよく、第2の符号化されたビデオビットストリームは、時間t2からt4までの同じビットストリームの第2の部分であってよく、ここでt1<t2<t3<t4である。第1の部分および第2の部分は、たとえば、ユーザが符号化されたビデオビットストリームにおいて時間t2まで時間的に戻ってシークするとき、一緒に継ぎ合わされ、または縫い合わされ得る。たとえば、符号化されたビデオビットストリームの第1の部分および第2の部分は、時間t3におけるイントラランダムアクセスポイントピクチャを格納するアクセスユニットおよびすべての後続のアクセスユニットを、時間t2におけるイントラランダムアクセスポイントピクチャを格納するアクセスユニットおよび後続のアクセスユニットで置き換えることによって、継ぎ合わされ得る。
いくつかの実施形態では、第2のアクセスユニットのイントラランダムアクセスポイントピクチャは、瞬時復号リフレッシュピクチャを含む。いくつかの実施形態では、第2のアクセスユニットのイントラランダムアクセスポイントピクチャは、クリーンランダムアクセスピクチャを含む。
いくつかの実施形態では、シーケンス終了ネットワーク抽象化レイヤユニットは、第3の符号化されたビデオビットストリームのベースレイヤ中の第1のアクセスユニットに挿入され、第2のアクセスユニットは、ベースレイヤ中のイントラランダムアクセスポイントピクチャを含む。これらの実施形態では、第2のアクセスユニットが、ベースレイヤ中にあり、かつ、第1のアクセスユニットのシーケンス終了ネットワーク抽象化レイヤユニットの後にある復号順序において次の後続のアクセスユニットであることに基づいて、復号が第2のアクセスユニットにおいて再初期化される。
いくつかの実施形態では、第2のアクセスユニットのフラグ(たとえば、再初期化フラグ)は、第2のアクセスユニットが、第1のアクセスユニットのシーケンス終了ネットワーク抽象化レイヤユニットの後にある復号順序において次の後続のアクセスユニットであるとき、ある値に設定される。フラグのこの値は、復号が第2のアクセスユニットにおいて再初期化されるべきであることを示す。いくつかの例では、このフラグはNoClrasOutputFlagを含み、この値は1という値である。いくつかの例では、この値は0という値である。
いくつかの実施形態では、第2のアクセスユニットにおいて復号を再初期化するステップは、第2のアクセスユニットと関連付けられる、1つまたは複数のランダムアクセススキップ先行ピクチャ、または、1つまたは複数のクロスレイヤランダムアクセススキップ先行ピクチャを廃棄するステップを含む。
シーケンス終了ネットワーク抽象化レイヤユニットを使用する上で説明された技法を使用して、デコーダによって使用される復号プロセスは、符号化されたビデオビットストリームのいくつかの部分における復号をより効果的に再初期化するように修正され得る。たとえば、復号プロセスは、復号順序においてEOS NALユニットに後続する最初のピクチャであるCRAピクチャの復号が、1(またはCRAピクチャがBLAピクチャとして扱われるべきであることを示す他の値)に等しいBLAフラグを伴うCRAピクチャと同様に定義されるように、修正される(たとえば、再初期化フラグの導出)。さらに、すべてのレイヤの復号が、復号順序においてEOS NALユニットを格納するアクセスユニットに後続するアクセスユニットにおいて再初期化される(たとえば、再初期化フラグが1に等しく設定される)ように、修正される。そのような修正により、システムエンティティがビットストリーム中のいずれのシンタックス要素を変更することも必要ではなくなり、かつ、この目的で外部の手段によってフラグが提供されることが必要ではなくなるので、継ぎ合わせ動作が簡略化される。
さらなる実施形態では、RASLフラグの値がある状況だけにおいてある値として導出されるように、復号プロセスを修正するための技法およびシステムが説明される。いくつかの例では、IRAPピクチャは、対応するRASLフラグ(たとえば、NoRaslOutputFlag)を有し得る。IRAPピクチャが1に等しいRASLフラグを有するとき、そのIRAPと関連付けられるRASLピクチャは出力されず、正しく復号されないことがあり、それは、RASLピクチャが、(たとえば、継ぎ合わせ、ランダムアクセス、またはピクチャがビットストリーム中にもはや存在しないようにする他の機能の後で)ビットストリーム中に存在しないピクチャへの参照を含んでいることがあるからである。いくつかの場合、RASLフラグは、RASLピクチャが正しく復号可能ではないことを示すために、0に設定され得る。
図8は、EOS NALユニットと、復号順序においてEOS NALユニットに後続するIDRピクチャとを伴う、符号化されたビデオビットストリーム800の例を示す。符号化されたビデオビットストリーム800は、アクセスユニットNからN+9を含む。アクセスユニットNからN+9は、(たとえば、レイヤID=0である)第1のレイヤL0および(たとえば、レイヤID=1である)第2のレイヤL1の中の様々なピクチャを含む。いくつかの実施形態では、第1のレイヤL0はベースレイヤを含んでよく、第2のレイヤL1はエンハンスメントレイヤを含んでよい。矢印802によって示されるように、アクセスユニットNからN+9は復号順序で示されている。アクセスユニットN、N+1、N+8、およびN+9は、レイヤL0とL1の両方の中の後発ピクチャを格納する。アクセスユニットN+3およびN+4は、レイヤL0の中の後発ピクチャを格納し、レイヤL1の中のピクチャを格納しない。アクセスユニットN+6およびN+7は、レイヤL0の中の後発ピクチャとレイヤL1の中の先行ピクチャとを含む。先行ピクチャはRASLピクチャまたはRADLピクチャを含み得る。アクセスユニットN+2は、レイヤL0の中のIDRピクチャを含み、レイヤL1の中のピクチャを含まない。いくつかの例では、アクセスユニットN+2は、CRAピクチャまたはBLAピクチャなどの異なるIRAPピクチャを含み得る。アクセスユニットN+5は、レイヤL0の中の後発ピクチャとレイヤL1の中のCRAピクチャとを含む。アクセスユニットN+1の中の後発ピクチャに加えて、EOS NALユニットは、NALユニットのシーケンスの終了(たとえば、CVS全体の終了、またはレイヤL0に対するシーケンスの終了)を示すために、アクセスユニットN+1に挿入される。
いくつかの例では、特定のレイヤIDを伴う現在のピクチャが、IDRピクチャ、BLAピクチャ、ビットストリーム中でその特定のレイヤIDを伴う復号順序において最初のピクチャ、または、復号順序においてEOS NALユニットに後続するその特定のレイヤIDを伴う最初のピクチャであるとき、RASLフラグは1に設定され得る(たとえば、1という値であるものとしてデコーダによって導出され得る)。HEVC規格によれば、EOS NALユニットは、復号順序においてEOS NALユニットの後にある最初のアクセスユニット中のピクチャの復号に影響を与え、その最初のアクセスユニットの後にある後続のアクセスユニットにも影響を与える。たとえば、特定のレイヤのIRAPピクチャが、EOS NALユニットに後続するそのレイヤ中の最初のピクチャである場合、ピクチャのRASLフラグは、そのIRAPピクチャが、復号順序においてEOS NALユニットの直後にないアクセスユニットに格納されるときであっても、1に等しい。たとえば、図8に示されるビットストリーム800において、アクセスユニットN+1におけるEOSの存在により、アクセスユニットN+5の中のCRAピクチャは、1に等しいRASLフラグを有しなければならなくなる。
EOS NALユニットに後続する最初の後続のアクセスユニット中のピクチャの復号だけに直接影響を与えるようにEOS NALユニットを制約するための実施形態が、本明細書において説明される。たとえば、EOS NALユニットが、復号順序においてEOS NALユニットを格納するアクセスユニットに後続する最初のアクセスユニットに属するピクチャの復号だけに直接影響を与えるように、復号プロセスが修正される(たとえば、RASLフラグの導出)。たとえば、RASLフラグは、復号順序においてEOS NALユニットを格納するアクセスユニットの後にある次の後続のアクセスユニットだけに対して、1であるものとして導出される。したがって、次の後続のアクセスユニットと関連付けられるRASLピクチャだけが、正しく復号可能ではないものとして示される。いくつかの実施形態では、EOS NALユニットが、復号順序においてEOS NALユニットを格納するアクセスユニットに後続する最初のアクセスユニットに属する、0に等しいレイヤID(たとえば、ベースレイヤ)を伴うピクチャの復号だけに直接影響を与えるように、復号プロセスが修正される(たとえば、RASLフラグの導出)。
例として図8を使用すると、EOS NALユニットに対する制約は、アクセスユニットN+2が継ぎ合わせの点(たとえば、2つのビットストリームが一緒に継ぎ合わされる点、同じビットストリームの2つの部分が一緒に継ぎ合わされる点など)ではない場合に、アクセスユニットN+6およびN+7におけるRASLピクチャが正しく復号され得る(たとえば、N+6アクセスユニットおよびN+7アクセスユニットにおける先行ピクチャがRADLピクチャとして標識され得る)ので、効果的である。AU N+2が継ぎ合わせの点である場合、HEVC規格におけるLayerInitializedFlagに基づくRASLフラグの現在の導出は、アクセスユニットN+5の中のCRAピクチャが1に等しいものとして導出されるRASLフラグを有することを確実にする。
RASLフラグに関する上で説明された技法を実装するHEVC規格に対する変更の例は、以下のことを含み得る。
現在のピクチャがIRAPピクチャであるとき、次のことが当てはまる。
nuh_layer_idという特定の値を伴う現在のピクチャが、IDRピクチャ、BLAピクチャ、復号順序においてビットストリーム中でそのnuh_layer_idという特定の値を伴う最初のピクチャ、または、復号順序においてシーケンス終了NALユニットに後続する最初のアクセスユニット中の、そのnuh_layer_idという特定の値を伴うピクチャを格納するアクセスユニットである場合、変数NoRaslOutputFlagは1に等しく設定される。
そうではなく、LayerInitializedFlag[ nuh_layer_id ]が0に等しく、LayerInitializedFlag[ refLayerId ]が、RefLayerId[ nuh_layer_id ][ j ]に等しいrefLayerIdのすべての値に対して1に等しく、ここでjが両端を含めて0からNumDirectRefLayers[ nuh_layer_id ]-1の範囲にある場合、変数NoRaslOutputFlagは1に等しく設定される。
それ以外の場合、変数NoRaslOutputFlagはHandleCraAsBlaFlagに等しく設定される。
本明細書において論じられるコーディング技法は、例示的なビデオ符号化および復号システム(たとえば、システム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の具体的な詳細がそれぞれ、図9および図10に示されている。図9は、本開示において説明される技法の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は図9ではループフィルタであるものとして示されているが、他の構成では、フィルタユニット63はポストループフィルタとして実装され得る。後処理デバイス57は、符号化デバイス104によって生成される符号化されたビデオデータに対する追加の処理を実行し得る。本開示の技法は、いくつかの事例では符号化デバイス104によって実施され得る。しかしながら、他の事例では、本開示の技法の1つまたは複数は、後処理デバイス57によって実施され得る。
図9に示されるように、符号化デバイス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(または、いくつかの例ではモード選択ユニット40)は、試験されたモードから使用すべき適切なイントラ予測モードを選択することができる。たとえば、イントラ予測処理ユニット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によって使用され得る。
このようにして、図9の符号化デバイス104は、符号化されたビデオビットストリームのためのシンタックスを生成するように構成されるビデオエンコーダの例を表す。符号化デバイス104は、たとえば、上で説明されたように、VPS、SPS、およびPPSパラメータセットを生成し得る。符号化デバイス104は、図6および図7に関して上で説明されたプロセスを含む、本明細書において説明される技法のいずれかを実行し得る。本開示の技法は全般に、符号化デバイス104に関して説明されているが、上で言及されたように、本開示の技法のいくつかは、後処理デバイス57によっても実施され得る。
図10は、例示的な復号デバイス112を示すブロック図である。復号デバイス112は、エントロピー復号ユニット80と、予測処理ユニット81と、逆量子化ユニット86と、逆変換処理ユニット88と、加算器90と、フィルタユニット91と、ピクチャメモリ92とを含む。予測処理ユニット81は、動き補償ユニット82と、イントラ予測処理ユニット84とを含む。復号デバイス112は、いくつかの例では、図9から符号化デバイス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は図10ではループフィルタであるものとして示されているが、他の構成では、フィルタユニット91はポストループフィルタとして実装され得る。次いで、所与のフレームまたはピクチャ中の復号されたビデオブロックは、ピクチャメモリ92に記憶され、参照ピクチャメモリ92は、後続の動き補償のために使用される参照ピクチャを記憶する。ピクチャメモリ92はまた、図1に示されるビデオ宛先デバイス122などのディスプレイデバイス上で後に提示するための復号されたビデオを記憶する。
前述の説明では、適用例の態様は、特定の実施形態を参照して説明されるが、本発明はそのように限定されないことを当業者は認識するであろう。したがって、適用例の説明のための実施形態が本明細書において詳細に説明されているが、発明の概念は別様に具現化され利用されてよく、添付の特許請求の範囲は、従来技術により制限されるようなものを除き、そのような変更を含むものとして解釈されることを意図している。上で説明された発明の様々な特徴および態様は、個別にまたは一緒に使用され得る。さらに、実施形態は、本明細書のより広い趣旨および範囲から逸脱することなく、本明細書において説明されたもの以外の任意の数の環境および適用例において利用され得る。したがって、本明細書および図面は、限定ではなく例示であると見なされるべきである。例示を目的に、方法は特定の順序で説明された。代替的な実施形態では、方法は説明されたものとは異なる順序で実行され得ることを理解されたい。
コンポーネントがある動作を実行する「ように構成される」ものとして説明されている場合、そのような構成は、たとえば、動作を実行するように電子回路もしくは他のハードウェアを設計することによって、動作を実行するようにプログラム可能電子回路(たとえば、マイクロプロセッサ、もしくは他の適切な電子回路)をプログラムすることによって、または、これらの任意の組合せで、達成され得る。
本明細書において開示される実施形態に関して説明される様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、ファームウェア、またはこれらの組合せとして実装され得る。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的なコンポーネント、ブロック、モジュール、回路、およびステップが、全般にそれらの機能に関してこれまで説明されてきた。そのような機能がハードウェアとして実装されるか、ソフトウェアとして実装されるかは、具体的な適用例およびシステム全体に課される設計制約によって決まる。当業者は、具体的な適用例ごとに様々な方法で説明された機能を実装することができるが、そのような実装の決定は、本発明の範囲からの逸脱を引き起こすと解釈されるべきではない。
本明細書において説明された技法はまた、電子ハードウェア、コンピュータソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。そのような技法は、汎用コンピュータ、ワイヤレス通信デバイスハンドセット、またはワイヤレス通信デバイスハンドセットおよび他のデバイスにおける適用例を含む複数の用途を有する集積回路デバイスなどの、様々なデバイスのいずれかにおいて実装され得る。モジュールまたはコンポーネントとして説明された任意の特徴が、集積論理デバイス内で一緒に、または個別であるが相互動作可能な論理デバイスとして別々に実装され得る。ソフトウェアで実装された場合、本技法は、実行されると上で説明された方法の1つまたは複数を実行する命令を含むプログラムコードを備えるコンピュータ可読データ記憶媒体によって、少なくとも部分的に実現され得る。コンピュータ可読データ記憶媒体は、パッケージング材料を含み得るコンピュータプログラム製品の一部を形成し得る。コンピュータ可読媒体は、同期型ダイナミックランダムアクセスメモリ(SDRAM)などのランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、不揮発性ランダムアクセスメモリ(NVRAM)、電気消去可能プログラマブル読取り専用メモリ(EEPROM)、フラッシュメモリ、磁気または光学データ記憶媒体などのような、メモリまたはデータ記憶媒体を備え得る。本技法は、追加または代替として、伝搬される信号または波のような、命令またはデータ構造の形態でプログラムコードを搬送または伝達し、コンピュータによってアクセスされ、読み取られ、かつ/または実行され得る、コンピュータ可読通信媒体によって、少なくとも部分的に実現され得る。
プログラムコードは、1つまたは複数のデジタル信号プロセッサ(DSP)などの1つまたは複数のプロセッサ、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルロジックアレイ(FPGA)、または他の等価の集積回路もしくはディスクリート論理回路を含み得るプロセッサによって実行され得る。そのようなプロセッサは、本開示において説明された技法のいずれかを実行するように構成され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替的に、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成としても実装され得る。したがって、本明細書において使用される「プロセッサ」という用語は、本明細書において説明される技法の実装に適した、前述の構造、前述の構造または任意の他の構造もしくは装置の任意の組合せのいずれかを指し得る。さらに、いくつかの態様では、本明細書において説明された機能は、符号化および復号のために構成された専用のソフトウェアモジュールもしくはハードウェアモジュール内で提供されてよく、または複合ビデオエンコーダ/デコーダ(コーデック)に組み込まれてよい。