本開示のいくつかの態様および実施形態が以下に提供される。当業者には明らかなように、これらの態様および実施形態のうちのいくつかは独立に適用されてよく、それらのうちのいくつかは組み合わせて適用されてよい。以下の説明では、説明のために、本発明の実施形態の完全な理解を与えるために具体的な詳細が説明される。しかしながら、これらの具体的な詳細なしに様々な実施形態が実践され得ることは明らかであろう。図面および説明は、限定的であることを意図しない。
後に続く説明は、例示的な実施形態のみを提供し、本開示の範囲、適用性、または構成を限定することを意図しない。むしろ、後に続く例示的な実施形態の説明は、例示的な実施形態を実装することを可能にする説明を当業者に提供する。添付の特許請求の範囲に記載した本発明の趣旨および範囲から逸脱することなく、様々な変更が要素の機能および構成に加えられ得ることを理解されたい。
実施形態を十分に理解してもらうために、以下の説明において具体的な詳細が与えられる。しかしながら、実施形態がこれらの具体的な詳細なしに実践され得ることが、当業者によって理解されよう。たとえば、回路、システム、ネットワーク、プロセス、および他の構成要素は、不必要な詳細で実施形態を不明瞭にしないために、ブロック図の形態として示されることがある。他の場合には、周知の回路、プロセス、アルゴリズム、構造、および技法は、実施形態を不明瞭にすることを避けるために、不要な詳細なしに示されることがある。
また、個々の実施形態が、フローチャート、フロー図、データフロー図、構造図、またはブロック図として示されるプロセスとして説明され得ることに留意されたい。フローチャートは、動作を逐次プロセスとして説明し得るが、動作の多くは、並列または同時に実行され得る。加えて、動作の順序は並べ替えられてよい。プロセスは、その動作が完了したときに終了するが、図面に含まれない追加のステップを有する場合がある。処理は、方法、関数、手順、サブルーチン、サブプログラムなどに相当する場合がある。プロセスが関数に相当するとき、その終了は、関数が呼出し関数またはメイン関数に戻ることに相当し得る。
「コンピュータ可読媒体」という用語は、限定はしないが、ポータブルまたは非ポータブルの記憶デバイス、光記憶デバイス、ならびに命令および/またはデータを記憶するか、包含するか、または搬送することができる様々な他の媒体を含む。コンピュータ可読媒体は、データがそこに記憶され得るとともに、ワイヤレスに、またはワイヤード接続を介して伝搬する搬送波および/または一時的な電子信号を含まない非一時的媒体を含み得る。非一時的媒体の例は、限定はしないが、磁気ディスクもしくは磁気テープ、コンパクトディスク(CD)もしくはデジタル多用途ディスク(DVD)などの光記憶媒体、フラッシュメモリ、メモリ、またはメモリデバイスを含み得る。コンピュータ可読媒体は、手順、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または命令、データ構造、もしくはプログラムステートメントの任意の組合せを表し得る、その上に記憶されたコードおよび/または機械実行可能命令を有し得る。コードセグメントは、情報、データ、引数、パラメータ、またはメモリ内容を渡すことおよび/または受け取ることによって、別のコードセグメントまたはハードウェア回路に結合され得る。情報、引数、パラメータ、データなどは、メモリ共有、メッセージパッシング、トークンパッシング、ネットワーク送信などを含む、任意の適切な手段を介して渡されてもよく、転送されてもよく、または送信されてもよい。
さらに、実施形態は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはこれらの任意の組合せによって実装されてよい。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードで実装されるとき、必要なタスクを実行するためのプログラムコードまたはコードセグメント(たとえば、コンピュータプログラム製品)は、コンピュータ可読媒体または機械可読媒体に記憶され得る。プロセッサが、必要なタスクを実行し得る。
ビデオエンコーダおよびビデオデコーダを使用するビデオコーディングのいくつかのシステムおよび方法が、本明細書で説明される。たとえば、1つまたは複数のシステムおよび方法は、利用不可能なレイヤ、レイヤセット、および動作点、ならびにマルチレイヤビデオコーディングにおける表現フォーマットパラメータでの制約を処理すること対象とする。
より多くのデバイスおよびシステムが、デジタルビデオデータを消費するための能力を消費者に提供し、効率的なビデオコーディング技法に対する必要がより重要となっている。デジタルビデオデータの中に存在する大量のデータを処理するのに必要なストレージおよび送信要件を低減するために、ビデオコーディングが必要である。高いビデオ品質を維持しながらより低いビットレートを使用する形態にビデオデータを圧縮するために、様々なビデオコーディング技法が使用され得る。
図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)によって確定された。HEVCの様々な拡張は、マルチレイヤビデオコーディングを取り扱い、同様にJCT-VCによって策定されており、MV-HEVCと呼ばれるHEVCのマルチビュー拡張、およびSHVCと呼ばれるHEVCのスケーラブル拡張、または任意の他の適切なコーディングプロトコルを含む。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-H1002v5.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(すなわち、エンコーダ)は、ビデオデータを符号化して符号化ビデオビットストリームを生成する。HEVCビットストリームは、たとえば、ネットワーク抽象化レイヤ(NAL)ユニットと呼ばれるデータ単位のシーケンスを含み得る。HEVC規格では、ビデオコーディングレイヤ(VCL)NALユニットおよび非VCL NALユニットを含む、NALユニットの2つのクラスが存在する。VCL NALユニットは、コード化ピクチャデータの1つのスライスまたはスライスセグメント(以下で説明する)を含み、非VCL NALユニットは、複数のコード化ピクチャに関係する制御情報を含む。コード化ピクチャ、およびコード化ピクチャに対応する非VCL NALユニットは(もしあれば)、アクセスユニット(AU)と呼ばれる。
NALユニットは、ビデオの中のピクチャのコーディングされた表現などの、ビデオデータのコーディングされた表現を形成するビットのシーケンス(符号化ビデオビットストリーム)を含み得る。エンコーダエンジン106は、各ピクチャを複数のスライスに区分することによって、ピクチャのコーディングされた表現を生成する。スライスは他のスライスとは無関係であって、スライスの中の情報は、同じピクチャ内の他のスライスからのデータへの依存関係なしにコーディングされる。スライスは、独立したスライスセグメントと、存在する場合、前のスライスセグメントに依存する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よりも小さくてもよい。いくつかの例では、CUに対応する残差サンプルは、残差4分木(RQT)と呼ばれる4分木構造を使用して、より小さいユニットに細分され得る。RQTのリーフノードは、TUに対応し得る。TUに関連付けられたピクセル差分値が変換されて、変換係数を生成し得る。変換係数は、次いで、エンコーダエンジン106によって量子化され得る。
ビデオデータのピクチャがCUに区分されると、エンコーダエンジン106は、予測モードを使用して各PUを予測する。予測は、次いで、残差(以下で説明する)を得るために元のビデオデータから減算される。CUごとに、予測モードが、ビットストリームの内部でシンタックスデータを使用してシグナリングされ得る。予測モードは、イントラ予測(または、イントラピクチャ予測)またはインター予測(または、インターピクチャ予測)を含み得る。イントラ予測を使用すると、たとえば、PUに関する平均値を見つけるためのDC予測、平坦面をPUに適合させるための平面予測、隣接データから補外するための方向予測、または任意の他の適切なタイプの予測を使用して、同じピクチャの中の隣接画像データから各PUが予測される。インター予測を使用すると、1つまたは複数の(出力順序において現在のピクチャの前または後の)参照ピクチャの中の画像データからの動き補償予測を使用して、各PUが予測される。ピクチャエリアを、インターピクチャ予測を使用してコーディングすべきか、それともイントラピクチャ予測を使用してコーディングすべきかという決定は、たとえば、CUレベルにおいて行われ得る。
PUは、予測プロセスに関連するデータを含み得る。たとえば、PUがイントラ予測を使用して符号化されるとき、PUは、PU用のイントラ予測モードを記述するデータを含み得る。別の例として、PUがインター予測を使用して符号化されるとき、PUは、PU用の動きベクトルを定義するデータを含み得る。PU用の動きベクトルを定義するデータは、たとえば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルの解像度(たとえば、1/4ピクセル精度または1/8ピクセル精度)、動きベクトルが指す参照ピクチャ、および/または動きベクトル用の参照ピクチャリスト(たとえば、リスト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を形成し得、次いで、TUを変換してCUに関する変換係数を生成し得る。
エンコーダエンジン106は、変換係数の量子化を実行し得る。量子化は、変換係数を量子化することによってさらなる圧縮をもたらして、変換を表すために使用されるデータの量を低減する。たとえば、量子化は、係数の一部またはすべてに関連するビット深度を低減し得る。一例では、nビット値を有する係数は、nがmよりも大きいものとして、量子化の間にmビット値に切り捨てられ得る。
量子化が実行されると、コード化ビットストリームは、量子化変換係数、予測情報(たとえば、予測モード、動きベクトルなど)、区分情報、および他のシンタックスデータなどの任意の他の適切なデータを含む。コード化ビットストリームの様々な要素が、次いで、エンコーダエンジン106によってエントロピー符号化され得る。いくつかの例では、エンコーダエンジン106は、エントロピー符号化され得るシリアル化ベクトルを生成するために、事前定義された走査順序を利用して量子化変換係数を走査し得る。いくつかの例では、エンコーダエンジン106は適応走査を実行し得る。量子化変換係数を走査して1次元ベクトルを形成した後、エンコーダエンジン106は、1次元ベクトルをエントロピー符号化し得る。たとえば、エンコーダエンジン106は、コンテキスト適応型可変長コーディング、コンテキスト適応型バイナリ算術コーディング、シンタックスベースコンテキスト適応型バイナリ算術コーディング、確率間隔区分エントロピーコーディング、または別の適切なエントロピー符号化技法を実行し得る。
前に説明したように、HEVCビットストリームは、NALユニットのグループを含む。コード化ビデオビットストリームを形成するビットのシーケンスは、VCL NALユニットの中に存在する。非VCL NALユニットは、他の情報に加えて、符号化ビデオビットストリームに関係する高レベル情報を有するパラメータセットを含み得る。たとえば、パラメータセットは、ビデオパラメータセット(VPS)、シーケンスパラメータセット(SPS)、およびピクチャパラメータセット(PPS)を含み得る。パラメータセットの目的は、ビットレート効率、エラーレジリエンシー、およびシステムレイヤインターフェースを提供することである。各スライスは、復号デバイス112がスライスを復号するために使用し得る情報にアクセスするために、単一のアクティブなPPS、SPS、およびVPSを参照する。識別子(ID)は、パラメータセットごとにコーディングされてよく、VPS ID、SPS ID、およびPPS 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ユニットを、受信デバイスの復号デバイス112へ通信リンク120を介して送り得る。復号デバイス112の入力部114は、NALユニットを受信し得る。通信リンク120は、ワイヤレスネットワーク、有線ネットワーク、または有線ネットワークとワイヤレスネットワークの組合せを使用して送信される信号を含み得る。ワイヤレスネットワークは、任意のワイヤレスインターフェースまたはワイヤレスインターフェースの組合せを含んでよく、任意の適切なワイヤレスネットワーク(たとえば、インターネットまたは他のワイドエリアネットワーク、パケットベースのネットワーク、WiFi(登録商標)、無線周波数(RF)、UWB、WiFiダイレクト、セルラー、ロングタームエボリューション(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の具体的な詳細の一例が、図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値が割り当てられる。レイヤが下位レイヤに依存することがあるという意味で、レイヤは階層的であり得る。レイヤセットは、自蔵式であるビットストリーム内で表されるレイヤのセットを参照し、自蔵式とは、レイヤセット内のレイヤが、復号プロセスにおいてレイヤセットの中の他のレイヤに依存し得るが、いかなる他のレイヤにも復号のために依存しないことを意味する。したがって、レイヤセットの中のレイヤは、ビデオコンテンツを表すことができる独立したビットストリームを形成することができる。レイヤセットの中のレイヤのセットは、サブビットストリーム抽出プロセス(以下で説明する)の動作によって、別のビットストリームから取得され得る。レイヤセットは、デコーダがいくつかのパラメータに従って動作しようと希望するときに復号されるべきレイヤのセットに相当し得る。
マルチレイヤ機能を可能にするために、仮定的参照デコーダパラメータのセットが(たとえば、ビデオパラメータセットのシーケンスの中で、または他のメッセージングにおいて)提供され、パラメータの各セットが動作点に対応する。動作点は、サブビットストリーム抽出のために使用されるパラメータを定義し、ターゲットレイヤのリスト(その動作点のレイヤセット)およびターゲット最上位時間レイヤを含む。複数の動作点が所与のビットストリームに適用可能であり得る。動作点は、レイヤセットの中のすべてのレイヤを含み得るか、またはレイヤセットのサブセットとして形成されるビットストリームであり得る。たとえば、ビットストリームの動作点は、レイヤ識別子および時間識別子のセットに関連付けられ得る。レイヤ識別子リストが、動作点に含まれるべきレイヤを識別するために使用され得る。レイヤ識別子リストは、パラメータセット(たとえば、VPS)に含まれ得る。レイヤ識別子リストは、レイヤ識別子(ID)値(たとえば、シンタックス要素nuh_layer_idによって示される)のリストを含み得る。場合によっては、レイヤID値は非負整数を含んでよく、各レイヤは、各レイヤID値が特定のレイヤを識別するように、固有のレイヤID値に関連付けられ得る。最大時間ID(たとえば、変数TemporalIdによって識別される)は、時間サブセットを定義するために使用され得る。いくつかの実施形態では、レイヤ識別子リストおよびターゲット最大時間IDが、ビットストリームから動作点を抽出するための入力として使用され得る。たとえば、NALユニットが、動作点に関連付けられたレイヤ識別子のセットに含まれるレイヤ識別子を有し、NALユニットの時間識別子が動作点の時間識別子以下であるとき、NALユニットは動作点に関連付けられている。ターゲット出力レイヤは、出力されるべきレイヤであり、出力レイヤセットは、ターゲット出力レイヤのセットに関連付けられたレイヤセットである。たとえば、出力レイヤセットは、レイヤのセットの中の1つまたは複数のレイヤが出力レイヤであると示される、規定されたレイヤセットのレイヤを含むレイヤのセットである。出力動作点は、特定の出力レイヤセットに対応する。たとえば、出力動作点は、入力ビットストリーム、ターゲット最大時間識別子(TemporalId)、および
ターゲットレイヤ識別子リストを入力として用いるサブビットストリーム抽出プロセスの動作によって入力ビットストリームから作り出され、出力レイヤのセットに関連付けられたビットストリームを含み得る。
図2は、レイヤセット0、レイヤセット1、レイヤセット2、およびレイヤセット3を含むレイヤセットの一例を示すブロック図である。異なる動作点が、レイヤセット0、1、2、および3の各々に関連付けられ得る。レイヤセット0はレイヤ0を含む。レイヤセット1はレイヤ0およびレイヤ1を含む。レイヤセット2はレイヤ0、レイヤ1、およびレイヤ2を含む。レイヤセット3は、レイヤ0、レイヤ1、レイヤ2、およびレイヤ3を含む。レイヤ0はベースレイヤであり得、レイヤ1、2、および3はエンハンスメントレイヤであり得る。たとえば、レイヤ0は、フレームレートが7.5Hz、ビットレートが毎秒64キロバイトであってよく、レイヤ1は、フレームレートが15Hz、ビットレートが毎秒128キロバイトであってよく、レイヤ2は、フレームレートが15Hz、ビットレートが毎秒256キロバイトであってよく、レイヤ3は、フレームレートが30Hz、ビットレートが毎秒512キロバイトであってよく、レイヤ4(図に示さず)は、フレームレートが30Hz、ビットレートが毎秒1メガバイトであってよい。当業者なら、これらの数が単に一例として提供され、レイヤが特定の実装形態に従って他のフレームレートおよびビットレートを有してよいことを諒解されよう。
コーディング技法におけるスケーラビリティにより、ビットストリームのコード化データ単位(たとえば、NALユニット)が除去されることが可能になって、結果として生じる、ターゲットデコーダにとって有効な別のビットストリームを形成するサブビットストリームを取得する。サブビットストリームはビットストリームのソースコンテンツを表すが、フレームレート(すなわち、時間分解能)、空間解像度、および/またはビデオ忠実度は、元のビットストリームのそれらよりも低い。時間スケーラビリティにより、スケーラブルなフレームレートを有するビットストリームおよび対応するサブビットストリームが可能になり、動き補償依存関係が構造化され、その結果、完全なピクチャがビットストリームからドロップされ(dropped)得る。空間スケーラビリティにより、スケーラブルな空間解像度またはピクチャサイズを有するビットストリームおよび関連するサブビットストリームが可能になり、その場合、ビデオは複数の空間解像度でコーディングされ得る。場合によっては、高解像度をコーディングするためのビットレートを低減するために、低解像度のデータが使用されて高解像度のデータまたはサンプルを予測し得る。スケーラビリティはまた、ビデオ品質に基づいて実現され得、ビデオは単一の空間解像度で異なる品質でコーディングされる。場合によっては、高品質をコーディングするためのビットレートを低減するために、低品質のデータが使用されて高品質のデータを予測し得る。異なるスケーラビリティの組合せも使用され得る。
いくつかの例では、1つまたは複数のレイヤまたは時間サブレイヤは、異なる特性(たとえば、フレームレート、空間解像度、ビデオ忠実度、または他の適切な特性)を有するサブビットストリームを取得するために、ビットストリームから除去され得る。たとえば、レイヤまたはサブレイヤをビットストリームから除去するために、サブビットストリーム抽出プロセスが使用され得る。レイヤまたはサブレイヤは、様々な理由で除去され得る。たとえば、データを復号デバイスへ送信するのに必要なデータの量を少なくするために、ビットストリームはレイヤを除去することによって編集され得る。レイヤまたはサブレイヤがビットストリームから除去された結果として、サブビットストリームは、元のビットストリームよりも少ないレイヤまたはサブレイヤを有する。各サブビットストリームは、レイヤセットおよび対応する動作点に関連付けられる。場合によっては、不完全レイヤセットおよび(完全に、または部分的に)利用不可能な動作点は、1つまたは複数のレイヤがビットストリームから除去されることに起因し得る。
図3は、レイヤを除去するとレイヤセット3が不完全レイヤセットになることを示すブロック図である。不完全レイヤセットは、サブビットストリームを作り出すためにレイヤまたは時間サブレイヤがビットストリームから抽出または除去されるときに発生し得る。レイヤまたはサブレイヤが除去されると、抽出されたレイヤを含んでいたレイヤセットは、消失したレイヤのために不完全になる。図3において、レイヤ3がビットストリームから除去され、その結果、レイヤセット3は不完全レイヤセットになり、そのレイヤセットにとって対応する動作点は完全には利用可能でなくなる。サブビットストリームは、以下でより詳細に説明するように、完全には利用可能でない、または少なくとも部分的に利用可能でないと見なされる動作点にそのように対応し得る。残りのレイヤセット0、1、および2は完全なままであり、対応する動作点は完全に、または少なくとも部分的に利用可能なままである。
サブビットストリームを取得するためにレイヤまたはサブレイヤがビットストリームから除去されると、もはやビットストリームの中に存在せず、したがって、いかなるデータも含まない、除去されたレイヤまたはサブレイヤの機能およびパラメータを記述する情報が(たとえば、1つまたは複数のパラメータセットの中に)存在し得る。たとえば、HEVCにおけるVPSは、いくつかのレイヤまたはサブレイヤがビットストリームから除去されるとき、VPS自体は変更される必要がないように設計されている。言い換えれば、VPSは、サブビットストリーム抽出プロセスの後、もはやビットストリームの中に存在しないレイヤ、サブレイヤ、レイヤセット、出力レイヤセット、動作点、および出力動作点を記述する情報を含むことがある。VPSのこの機能にかかわらず、各サブビットストリームは、いくつかの特性がサブビットストリームによって遭遇されるとき、ビデオコーディング規格に適合することが必要とされる。適合をテストするために、スケーラブルなビットストリームまたはマルチレイヤビットストリームを生成するとき、特定の動作点に対応する各レイヤセットが適合サブビットストリームであることを確認するために、ビットストリーム適合検査がエンコーダによって実行される。ビットストリーム適合検査は、仮定的参照デコーダパラメータを使用する規範的テストを実行することを含み得る。規範的テストは、仮定的参照デコーダパラメータを使用して、エンコーダの出力に概念的に接続されるとともにコード化ピクチャバッファ、デコーダ、および復号ピクチャバッファを含む仮定的参照デコーダによって、ビットストリームまたはサブビットストリームが復号され得ることを検査する。エンコーダは、適合を満たすビットストリームを作り出すときに、ビットストリームの中で使用されるツールがパラメータセットの中でシグナリングされるそれらと整合することを確認すること、仮定的参照デコーダのコード化ピクチャバッファがオーバーフローまたはアンダーフローしないことを確認すること、参照用に使用されるものとしてマークされたピクチャが後で参照として使用されないことを確認すること、または他の要件を含む、様々な制約が満たされていることを確認しなければならない。デコーダバッファにとってあまりに多くのコード化データ単位が存在するとき、バッファオーバーフローが発生する。デコーダがいくつかのコード化データ単位を処理するための時間であるがバッファが空であるとき、アンダーフローが発生する。
HEVC規格によれば、レイヤセットに関連付けられた動作点または出力動作点にサブビットストリームが対応し、それに対してレイヤセットがVPSによって規定されるTemporalIdのターゲット最大値、すなわち、OpTidが6以下であるとき、サブビットストリームは適合ビットストリームでなければならない。利用可能でない(たとえば、不完全レイヤセットに起因して)動作点にサブビットストリームが対応するのを必要とすることは、不完全レイヤセットを有するサブビットストリームにとって非適合決定を引き起こし、必要でない場合がある処理およびオーバーヘッドにつながる。一例では、ベースレイヤは、JCTVC-R0010v1での仕様テキストにおけるようにレイヤセットから除外されることが許容され得、そのようなサブビットストリームは、ゼロレイヤ(VCL NALユニットがない)を含み得る。この例では、ベースレイヤは、符号化ビットストリームを生成するために使用されるエンコーダ以外の外部ソースによって提供され得る(たとえば、ベースレイヤがAVCコーディングされ、符号化ビットストリームがHEVCコーディングされる)。サブビットストリームは、ベースレイヤだけを含むレイヤセット0を取得するために符号化ビットストリームから抽出され得る。その結果、サブビットストリームが、ベースレイヤだけを得るために符号化ビットストリームから抽出され、サブビットストリームの中にビデオデータを残さない(ベースレイヤが外部ソースから提供されるので)。空の、または部分的に空のサブビットストリームが適合ビットストリームであることを必要とすることは、コーディングプロセスにおける非効率につながる。さらに、ビットストリーム適合テストにおいて、HEVCにおけるVPSの中で規定されるレイヤセットに対応する各動作点がテストされ、SHVC/MV-HEVCにおけるVPSの中で規定される出力レイヤセットに対応する各出力動作点がテストされる。しかしながら、(HEVCにおける)動作点に対するすべてのサブレイヤもしくはすべてのレイヤ、または(SHVC/MV-HEVCにおける)出力動作点が利用可能であるとは限らないとき、ビットストリーム適合テストは実行されるべきでない。
本明細書で開示するいくつかの実施形態では、ビットストリーム適合検査は、サブビットストリームの少なくとも1つのレイヤがビデオデータを含むかどうかに基づいて、サブビットストリームに対して選択的に実行されてよい。そのような実施形態では、ビットストリーム適合検査は、サブビットストリームのレイヤまたはサブレイヤのうちの1つまたはすべての中にビデオデータを含むサブビットストリームだけで実行されてよい。
たとえば、いくつかの実施形態では、完全に利用可能な動作点(または、出力動作点)に対応するサブビットストリームだけが、適合ビットストリームであることを必要とする。そのような実施形態では、符号化デバイス104は、完全に利用可能な動作点を(たとえば、パラメータセットの中の情報、サブビットストリームの中に存在するデータ、または符号化デバイス104にとって利用可能な他の適切な情報に基づいて)決定してよい。符号化デバイス104は、完全に利用可能な動作点に対応するサブビットストリームに対してビットストリーム適合検査を実行するだけでよい。動作点に対応するレイヤセットに含まれる各レイヤにとってVCL NALユニットが利用可能である場合、動作点は完全に利用可能である(ビットストリームの中に存在するか、または外部の手段によって提供されるかのいずれか)と見なされ得る。いくつかの例では、レイヤセットに含まれる各レイヤにとってVCL NALユニットが利用可能である場合、またビットストリームの中のすべてのVCL NALユニットの時間IDの最大値が動作点の対応する時間ID、すなわち、OpTid以上である場合、動作点は完全に利用可能であると見なされ得る。図3に示す例では、レイヤセット1のレイヤ3にとってVCL NALユニットが利用可能でないので、レイヤセット3は完全に利用可能であると見なされない。場合によっては、ベースレイヤが外部の手段によって提供されるとき、対応するレイヤセットがレイヤセット0(ベースレイヤだけを含む)であるべき動作点に対して例外が実施されてよく、その場合、そのような動作点は完全に利用可能であるとは限らないと見なされ得る。
いくつかの実施形態では、少なくとも部分的に利用可能な動作点(または、出力動作点)に対応するサブビットストリームだけが、適合ビットストリームであることを必要とする。そのような実施形態では、符号化デバイス104は、少なくとも部分的に利用可能な動作点を(たとえば、パラメータセットの中の情報、サブビットストリームの中に存在するデータ、または符号化デバイス104にとって利用可能な他の適切な情報に基づいて)決定してよい。符号化デバイス104は、少なくとも部分的に利用可能な動作点に対応するサブビットストリームに対してビットストリーム適合検査を実行するだけでよい。動作点に対応するレイヤセットに含まれる少なくとも1つのレイヤに対してVCL NALユニットが利用可能である場合、動作点は少なくとも部分的に利用可能である(ビットストリームの中に存在するか、または外部の手段によって提供されるかのいずれか)と見なされ得る。図3に示す例では、レイヤ0、1、または2のうちの1つに対してVCL NALユニットが利用可能である場合、レイヤセット3は少なくとも部分的に利用可能であると見なされ得る。いくつかの例では、ベースレイヤが外部の手段によって提供されるとき、レイヤセットがレイヤセット0(ベースレイヤだけを含む)であるべき動作点に対して例外が実施されてよく、その場合、そのような動作点は少なくとも部分的に利用可能でないと見なされる。
図4は、ビデオデータを符号化するプロセス400の一実施形態を示す。プロセス400は、ビットストリーム適合検査を選択的に実行するために実施される。いくつかの態様では、プロセス400は、図1に示す符号化デバイス104または図9に示すエンコーダ20などの、コンピューティングデバイスまたは装置によって実行され得る。たとえば、コンピューティングデバイスまたは装置は、エンコーダ、もしくはプロセッサ、マイクロプロセッサ、マイクロコンピュータ、またはプロセス400のステップを実行するように構成されているエンコーダの他の構成要素を含み得る。
プロセス400は、論理フロー図として図示され、その動作は、ハードウェア、コンピュータ命令、またはそれらの組合せで実施され得る動作のシーケンスを表す。コンピュータ命令のコンテキストでは、動作は、1つまたは複数のプロセッサによって実行されたとき、説明される動作を実行する1つまたは複数のコンピュータ可読記憶媒体に記憶されたコンピュータ実行可能命令を表す。一般に、コンピュータ実行可能命令は、特定の機能を実行し、または特定のデータタイプを実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。動作が説明される順序は、限定として解釈されることを意図せず、説明される任意の数の動作は、プロセスを実施するために任意の順序で、かつ/または並列に組み合わされてよい。
さらに、プロセス400は、実行可能命令とともに構成された1つまたは複数のコンピュータシステムの制御下で実行されてよく、ハードウェアまたはその組合せによって1つまたは複数のプロセッサ上で集合的に実行するコード(たとえば、実行可能命令、1つもしくは複数のコンピュータプログラム、または1つもしくは複数のアプリケーション)として実装されてよい。上述のように、コードは、たとえば、1つまたは複数のプロセッサによって実行可能な複数の命令を備えるコンピュータプログラムの形態で、コンピュータ可読記憶媒体または機械可読記憶媒体に記憶され得る。コンピュータ可読記憶媒体または機械可読記憶媒体は非一時的であってよい。
402において、ビデオデータを符号化するプロセス400は、複数のレイヤを備える符号化ビデオビットストリームを生成することを含み、符号化ビデオビットストリームは、符号化ビデオビットストリームのパラメータを定義するパラメータセットを含む。いくつかの実施形態では、ビデオデータは、1つまたは複数のビデオコーディングレイヤネットワーク抽象化レイヤユニット(VCL NALユニット)を含むか、またはそれに含まれる。一例では、VCL NALユニットは、図2に示すレイヤ0、1、2、および3を構成し得る。パラメータセットは、ビデオパラメータセットまたはシーケンスパラメータセットを含み得る。
404において、プロセス400は、符号化ビデオビットストリームの第1のサブビットストリームを記述する情報、および符号化ビデオビットストリームの第2のサブビットストリームを記述する情報を含む、パラメータセットの1つまたは複数のパラメータを決定することを含み、第1のサブビットストリームは、ビデオデータを有する1つまたは複数のレイヤを含み、第2のサブビットストリームは、ビデオデータを有しない1つまたは複数のレイヤを含む。第1のサブビットストリームは、第1のレイヤセットおよび対応する第1の動作点、たとえば、図2に示すレイヤセット0、1、または2に対応し得る。第2のサブビットストリームは、第2のレイヤセットおよび対応する第2の動作点、たとえば、図2に示すレイヤセット3に対応し得る。いくつかの実施形態では、第1のサブビットストリームの1つまたは複数のレイヤのビデオデータは、第1のサブビットストリームの中に存在する。いくつかの実施形態では、第1のサブビットストリームの1つまたは複数のレイヤのビデオデータは、符号化ビデオビットストリームを生成するために使用されるエンコーダ以外の外部ソースから提供される。たとえば、第1のサブビットストリームは、ベースレイヤだけを含むレイヤセット0に対応し得る。ベースレイヤは、いくつかの例では、外部ソースからデコーダに提供され得る。第2のサブビットストリームは、符号化ビデオビットストリームから少なくとも1つのレイヤを除去することによって、符号化ビデオビットストリームから生成され得る。たとえば、サブビットストリーム抽出プロセスが、第2のサブビットストリームを生成するために使用され得る。
406において、プロセス400は、第1のサブビットストリームまたは第2のサブビットストリームの少なくとも1つのレイヤがビデオデータを含むかどうかに基づいて、第1のサブビットストリームまたは第2のサブビットストリームに対してビットストリーム適合検査を実行することを含む。たとえば、プロセス400は、第1のサブビットストリームの1つまたは複数のレイヤがビデオデータを有することに基づいて、第1のサブビットストリームに対してビットストリーム適合検査を実行することを含み得る。第2のサブビットストリームの1つまたは複数のレイヤがビデオデータを有しないことに基づいて、第2のサブビットストリームに対してビットストリーム適合検査が実行されない。したがって、第1のサブビットストリームの1つまたは複数のレイヤがビデオデータを有するので、第1のサブビットストリームに対してビットストリーム適合検査が実行され、第2のサブビットストリームの1つまたは複数のレイヤがビデオデータを有しないので、第2のサブビットストリームに対してビットストリーム性能検査が実行されない。
いくつかの実施形態では、プロセス400は、第1のサブビットストリームの1つまたは複数のレイヤのすべてがビデオデータを有するとき、第1のサブビットストリームに対してビットストリーム適合検査を実行することを含む。そのような場合、上記で説明したように、サブビットストリームが完全に利用可能な動作点に対応するときのみ、サブビットストリームに対してビットストリーム適合検査が実行される。
いくつかの実施形態では、プロセス400は、第1のサブビットストリームの1つまたは複数のレイヤのうちの少なくとも1つがビデオデータを有するとき、第1のサブビットストリームに対してビットストリーム適合検査を実行することを含む。そのような場合、上記で説明したように、サブビットストリームが少なくとも部分的に利用可能な動作点に対応するときのみ、サブビットストリームに対してビットストリーム適合検査が実行される。
いくつかの実施形態では、プロセス400は、第1のサブビットストリームの中のビデオデータの時間識別子の最大値が、第1のサブビットストリームの対応する時間識別子の値以上であるかどうかに基づいて、第1のサブビットストリームに対してビットストリーム適合検査を実行することを含む。そのような実施形態では、動作点に対応するレイヤセットに含まれる各レイヤにとってVCL NALユニットが利用可能であるとき(ビットストリームの中に存在するか、または外部の手段によって提供されるかのいずれか)、また同様にビットストリームの中のすべてのVCL NALユニットのTemporalIdの最大値が動作点の対応する時間ID、すなわち、OpTid以上であるとき、ビットストリーム適合テストが実行される。
いくつかの実施形態では、第1のサブビットストリームが復号されるのに必要なコーディング要件に第1のサブビットストリームが適合することを確実にするために、ビットストリーム適合検査が第1のサブビットストリームに対して規範的テストを実行することを含む。規範的テストは、前に説明したように、仮定的参照デコーダパラメータを使用して実行され得る。
上記で説明した技法を使用すると、ビットストリーム適合検査は、完全に、または少なくとも部分的に利用可能な動作点に対応するサブビットストリームに限定され得る。そのような技法により、空の、または部分的に空のサブビットストリームに対する不必要な適合テストが回避されることが可能になる。
さらなる実施形態では、パラメータセットの中のシンタックス構造に最小値を割り当てるための技法およびシステムが説明される。前に説明したように、符号化ビットストリームの中のNALユニットは、他の情報に加えて、符号化ビデオビットストリームに関係する高レベル情報を有するパラメータセットを含み得る。パラメータセットに含まれ得る情報の1つのセットは、プロファイル、ティア、およびレベルのパラメータまたは制約を含む。プロファイル、ティア、およびレベルのパラメータは、パラメータセット(たとえば、VPSまたはSPS)のシンタックス構造に含まれ得、profile_tier_level()シンタックス構造を含み得る。プロファイル、ティア、およびレベルは、ビットストリームにおける制約、およびビットストリームを復号するのに必要な機能における限定を含む。プロファイル、ティア、およびレベルはまた、個々のデコーダ実装間の相互運用性ポイント(interoperability point)を示すために使用され得る。プロファイル、ティア、およびレベルのパラメータの例は、ベースレイヤを復号するために受信デバイスによって必要とされるコーディングツール、ビットストリーム特性、バッファ特性、または他のパラメータにおける制約を含む。
プロファイルは、そのプロファイルに適合するすべてのデコーダによってサポートされるべき機能および限定のサブセットを定義する。HEVC規格において定義されるプロファイルは、メインプロファイル、メイン10プロファイル、メイン静止画プロファイル、フォーマット範囲拡張プロファイル、およびフォーマット範囲拡張高スループットプロファイルを含む。
レベルおよびティアは、プロファイルが従わなければならない追加の制約を規定し得る。たとえば、ティアのレベルは、所与のコーディング仕様(たとえば、HEVC)のシンタックス要素によって採られ得る値における限定のセットを規定し得る。ティアおよびレベルの定義の同じセットが、すべてのプロファイルとともに使用されるが、個々の実装は、サポートされるプロファイルごとに異なるティア、およびティア内で異なるレベルをサポートし得る。任意の所与のプロファイルに対して、ティアのレベルは、概して、特定のデコーダ処理負荷およびメモリ機能に対応する。レベルおよびティアによって定義される制約の例は、許容されるスライスの最大数、許容されるタイルの最大数、最大ビットレート、最大サンプルレート、最大ピクチャサイズ、最小圧縮率、復号ピクチャバッファの機能における制約、または他の適切な制約を含み得る。下位のティアおよびレベルは、上位のティアおよびレベルよりも大きく制約される。HEVC規格によれば、2つのティアが定義される。ティアは、メインティア(main tier)およびハイティア(high tier)を含み、メインティアはハイティアよりも下位のティアである。ハイティアは、より高いビットレートを必要とする適用例のために使用され得る。所与のティア/レベルに適合するデコーダは、そのティア/レベルに対して、かつすべての下位のティア/レベルに対して符号化されているすべてのビットストリームを復号できなければならない。プロファイル、ティア、およびレベルの限定の特定の例が、HEVCコーディング規格において見られることがあり、http://phenix.it-sudparis.eu/jct/doc_end_user/documents/17_Valencia/wg11/JCTVC-Q1003-v1.zipから入手可能である。
いくつかの実施形態では、パラメータセットの中のプロファイル、ティア、レベルのシンタックス構造に最小値を割り当てるための技法およびシステムが説明される。最小値は、いくつかの状況が起こるときに割り当てられ得る。たとえば、第1のコーディングプロトコルに従ってビデオデータを符号化するエンコーダ(たとえば、符号化デバイス104、エンコーダ20など)は、符号化ビデオビットストリームを生成し得る。エンコーダは、受信デバイスの中のデコーダ(たとえば、復号デバイス112、デコーダ30など)に符号化ビデオビットストリームを提供し得る。いくつかの例では、受信デバイスが、エンコーダから符号化ビデオビットストリームを直接受信し得る。いくつかの例では、受信デバイスは、サーバ、メディア認識型ネットワーク要素(MANE)、ビデオエディタ/スプライサ、またはそのような他のデバイスなどのネットワークエンティティから、符号化ビデオビットストリームを受信し得る。ビデオデータのベースレイヤは、第1のコーディングプロトコルと異なる第2のコーディングプロトコルに従って符号化され得る。一例では、第1のコーディングプロトコルはHEVC規格に基づいてよく、第2のコーディングプロトコルはAVC規格に基づいてよい。ベースレイヤは、第1のコーディングプロトコルを使用して第1の符号化ビデオビットストリームを生成したエンコーダ以外の外部ソースによって、デコーダに、または同じ受信デバイスの中の別のデコーダに提供され得る。一例では、マルチスタンダードコーデックが、符号化ビットストリーム(第1のコーディングプロトコルを使用して符号化されている)およびベースレイヤ(第2のコーディングプロトコルを使用して符号化されている)を受信し得る。別の例では、第1のコーデックが符号化ビットストリームを受信および復号し得、第2のコーデックがベースレイヤを受信および復号し得る。第2のコーディングプロトコルを使用してビデオデータを符号化するエンコーダは、ベースレイヤを受信デバイスに提供し得る(たとえば、直接、またはネットワークエンティティ経由で受信デバイスへ送られる)。
パラメータセット(たとえば、VPS)は、第1のコーディングプロトコルに従って符号化されたビデオビットストリームを用いて提供され得る。ビデオパラメータセットは、符号化ビデオビットストリームの中のビデオデータに関する情報を含み得る。ベースレイヤが外部ソースによって外部的に提供されるときであっても、シンタックス構造は符号化ビデオビットストリームのベースレイヤに関する情報を含むVPSの中に存在し得る(その場合、第1のコーディングプロトコルを使用して符号化されたベースレイヤは提供されなくてよい)。シンタックス構造は、上記で説明したプロファイル、ティア、およびレベルのシンタックス要素を含み得る。ベースレイヤが外部的に提供されるとき、VPSの中でベースレイヤに割り当てられた最初のprofile_tier_level()シンタックス構造は無意味であり、デコーダによって無視される。しかしながら、HEVCバージョン1においてシンタックスが規定されており、除去は下位互換問題を引き起こすことになるので、シンタックス構造の除去は随意でない。これらの理由のため、ベースレイヤ用のプロファイル、ティア、レベルのシンタックス構造は、VPSの中で保たれなければならない。したがって、ベースレイヤが、符号化ビデオビットストリームを生成するために使用されたエンコーダ以外の外部ソースによってデコーダに提供されるべきと決定されるとき、エンコーダ(たとえば、符号化デバイス104、エンコーダ20など)は、ベースレイヤ用のプロファイル、ティア、レベルのシンタックス構造に最小値を割り当て得る。VPSの中のシンタックス要素は、最小値を割り当てるようにエンコーダへシグナリングする制約を含み得る。最小値を割り当てることによって、シンタックス構造によって使用されるビット数が最小限に抑えられる。一例では、シンタックス構造は、すべて0に等しいビットを有し、そのように最小数のビットがシンタックス構造によって使用されることを確実にすることが必要とされ得る。
図5は、プロファイル、ティア、レベルシンタックス構造に最小値が割り当てられ得る例示的な環境500を示す。環境500は、異なるビデオコーディング規格を使用して符号化ビデオビットストリームを生成するHEVC符号化デバイス502およびAVC符号化デバイス506を含む。当業者なら、本明細書で説明する技法が、HEVCまたはAVCと異なるコーディング規格を使用し得る他の符号化デバイスに適用されることを諒解されよう。HEVC符号化デバイス502は、1つまたは複数のエンハンスメントレイヤを含むがベースレイヤを含まない、HEVC準拠のビデオビットストリームを生成し得る。AVC符号化デバイス506は、ベースレイヤだけを含むAVC準拠のビデオビットストリームを生成し得る。HEVC符号化デバイス502が1つまたは複数のエンハンスメントレイヤを生成するとき、AVC符号化デバイス506によって生成されるベースレイヤは、レイヤ間予測参照のために使用され得る。
一例では、HEVC復号デバイス504は、HEVC符号化デバイス502からエンハンスメントレイヤを受信し得、AVC復号デバイス508は、AVC符号化デバイス506からベースレイヤを受信し得る。別の例では、第1のネットワークエンティティ(たとえば、エディタまたはスプライサ)は、HEVC符号化デバイス502からのエンハンスメントレイヤをAVC符号化デバイス506からのベースレイヤと一緒に接合し得る。第1のネットワークエンティティは、システム時間情報が追加されて(たとえば、ISOベースのメディアファイルフォーマットによるファイルフォーマットで)、適時に同期的な方式で接合することを実行し得る。第2のネットワークエンティティ(たとえば、受信デバイス510などの受信機、ファイルフォーマットパーサ、または他のネットワークエンティティ)は、1つまたは複数のエンハンスメントレイヤのビットストリームをHEVC復号デバイス504に、およびベースレイヤのビットストリームをAVC復号デバイス506に渡し得る。いずれかの例では、ベースレイヤのビットストリームは、HEVC復号デバイス504に提供されない。代わりに、ベースレイヤの復号ピクチャが、レイヤ間予測参照のためにHEVC復号デバイス504に(AVC復号デバイス508から)提供される。HEVC復号デバイス504から見て、ベースレイヤは外部ソースによって外部的に提供される。いくつかの実施形態では、HEVC復号デバイス504およびAVC復号デバイス508は別個のデコーダである。いくつかの実施形態では、HEVC復号デバイス504およびAVC復号デバイス508は、HEVCビットストリームおよびAVCビットストリームを復号することができるマルチスタンダードデコーダの一部である。
HEVC符号化デバイス502は、符号化ビットストリームを用いて(たとえば、1つまたは複数の非VCL NALユニットの中で)ビデオパラメータセット(VPS)512を提供し得る。HEVC符号化デバイス502は、HEVC符号化デバイス502以外の外部ソースによってベースレイヤが提供されるべきと決定し得る。たとえば、HEVC符号化デバイス502は、VPS512の中の1つまたは複数のフラグが、ベースレイヤが外部ソースによって提供されることを示す値に設定されていると決定し得る。いくつかの実施形態では、1つまたは複数のフラグは、vps_base_layer_internal_flagを含み得る。いくつかの実施形態では、1つまたは複数のフラグは、vps_base_layer_available_flagを含み得る。いくつかの実施形態では、1つまたは複数のフラグは、vps_base_layer_internal_flagとvps_base_layer_available_flagの両方を含む。一例では、vps_base_layer_internal_flagが1に等しくvps_base_layer_available_flagが1に等しい場合、HEVCビットストリームの中にベースレイヤが存在する。別の例では、vps_base_layer_internal_flagが0に等しくvps_base_layer_available_flagが1に等しい場合、HEVC仕様において規定されない外部の手段によってベースレイヤが提供される。また別の例では、vps_base_layer_internal_flagが1に等しくvps_base_layer_available_flagが0に等しい場合、ベースレイヤが利用可能でないが(HEVCビットストリームの中に存在もせず、外部の手段によって提供もされない)、VPSは、それがHEVCビットストリームの中に存在するかのようにベースレイヤの情報を含む。また別の例では、vps_base_layer_internal_flagが0に等しくvps_base_layer_available_flagが0に等しい場合、ベースレイヤが利用可能でないが(HEVCビットストリームの中に存在もせず、外部の手段によって提供もされない)、VPSは、HEVC仕様において規定されない外部の手段によってそれが提供されるかのようにベースレイヤの情報を含む。
ベースレイヤが外部ソースによって提供されるべきという決定(たとえば、vps_base_layer_internal_flagが0に等しくvps_base_layer_available_flagが1に等しい)に基づいて、HEVC符号化デバイス502は、VPS512の中に存在しているプロファイル、ティア、レベルのシンタックス構造514に最小値を割り当てる。プロファイル、ティア、レベルのシンタックス構造514は、HEVCビットストリームのベースレイヤ用の1つまたは複数のプロファイル、レベル、およびティアを記述する。最小値の割当ては、プロファイル、ティア、レベルのシンタックス構造514のビットにすべて0の値を割り当てることを含み得る。HEVC符号化デバイス502は、次いで、符号化ビットストリームを用いてHEVC復号デバイス504へVPS512を送り得る。
図6は、ビデオデータを符号化するプロセス600の一実施形態を示す。プロセス600は、パラメータセットの中のシンタックス構造に最小値を割り当てるために実施される。いくつかの態様では、プロセス600は、図1に示す符号化デバイス104または図9に示すエンコーダ20などの、コンピューティングデバイスまたは装置によって実行され得る。たとえば、コンピューティングデバイスまたは装置は、エンコーダ、もしくはプロセッサ、マイクロプロセッサ、マイクロコンピュータ、またはプロセス600のステップを実行するように構成されているエンコーダの他の構成要素を含み得る。
プロセス600は、論理フロー図として図示され、その動作は、ハードウェア、コンピュータ命令、またはそれらの組合せで実施され得る動作のシーケンスを表す。コンピュータ命令のコンテキストでは、動作は、1つまたは複数のプロセッサによって実行されたとき、説明される動作を実行する1つまたは複数のコンピュータ可読記憶媒体に記憶されたコンピュータ実行可能命令を表す。一般に、コンピュータ実行可能命令は、特定の機能を実行し、または特定のデータタイプを実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。動作が説明される順序は、限定として解釈されることを意図せず、説明される任意の数の動作は、プロセスを実施するために任意の順序で、かつ/または並列に組み合わされてよい。
さらに、プロセス600は、実行可能命令とともに構成された1つまたは複数のコンピュータシステムの制御下で実行されてよく、ハードウェアまたはその組合せによって1つまたは複数のプロセッサ上で集合的に実行するコード(たとえば、実行可能命令、1つもしくは複数のコンピュータプログラム、または1つもしくは複数のアプリケーション)として実装されてよい。上述のように、コードは、たとえば、1つまたは複数のプロセッサによって実行可能な複数の命令を備えるコンピュータプログラムの形態で、コンピュータ可読記憶媒体または機械可読記憶媒体に記憶され得る。コンピュータ可読記憶媒体または機械可読記憶媒体は非一時的であってよい。
602において、ビデオデータを符号化するプロセス600は、第1のコーディングプロトコルに従って符号化ビデオビットストリームをエンコーダによって生成することを含み、符号化ビデオビットストリームは、1つまたは複数のエンハンスメントレイヤ、および符号化ビデオビットストリームのパラメータを定義するビデオパラメータセットを含む。いくつかの実施形態では、符号化デバイスは、ベースレイヤおよび1つまたは複数のエンハンスメントレイヤを含むための符号化ビデオビットストリームを生成し得る。
604において、プロセス600は、ベースレイヤが外部ソースによって復号デバイスに提供されるべきであり、符号化ビデオビットストリームの一部として提供されるべきでないと決定することを含む。外部ソースは、第1のコーディングプロトコルに従って符号化ビデオビットストリームを生成したエンコーダ以外のソースである。復号デバイスは、第1のコーディングプロトコルに従って動作し得る。いくつかの実施形態では、外部ソースによって提供されるベースレイヤは、第1のコーディングプロトコルと異なる第2のコーディングプロトコルに従って符号化される。たとえば、第1のコーディングプロトコルは、高効率ビデオコーディングプロトコルを含み得、第2のコーディングプロトコルは、アドバンストビデオコーディングプロトコルを含み得る。一例では、第2のコーディングプロトコルに従ってビットストリームを生成するように構成されたエンコーダは、復号デバイスに提供されるべきベースレイヤを生成し得る。第2のコーディングプロトコルに従って動作する復号デバイスは、第2のコーディングプロトコルに従って動作するエンコーダからベースレイヤを受信し得、第1のコーディングプロトコルに従って動作する復号デバイスにベースレイヤを提供し得る。別の例では、第1のネットワークエンティティ(たとえば、エディタまたはスプライサ)は、第1のプロトコルに従って動作するエンコーダからの1つまたは複数のエンハンスメントレイヤを、第2のプロトコルに従って動作するエンコーダからのベースレイヤと一緒に接合し得る。第2のネットワークエンティティ(たとえば、受信機またはファイルフォーマットパーサ)は、第1のコーディングプロトコルに従って動作する復号デバイスに1つまたは複数のエンハンスメントレイヤのビットストリームを渡し得、第2のコーディングプロトコルに従って動作する復号デバイスにベースレイヤのビットストリームを渡し得る。いくつかの実施形態では、ベースレイヤが外部ソースによって提供されるべきと決定することは、ベースレイヤが外部ソースによって提供されることを示す値にフラグが設定されていると決定することを含む。たとえば、上記で説明したように、フラグは、vps_base_layer_internal_flag、vps_base_layer_available_flagを含んでよく、さ
もなければ、ベースレイヤが外部ソースによって提供されるべきことを示すために両方のフラグが使用され得る。
606において、プロセス600は、ベースレイヤが外部ソースによって提供されるべきと決定されるとき、ビデオパラメータセットの中のシンタックス構造に最小値を割り当てることを含み、シンタックス構造は、ベースレイヤ用のプロファイル、ティア、およびレベルのパラメータを定義する。いくつかの実施形態では、最小値は、シンタックス構造のすべてのビットに対して0としての値を含む。いくつかの実施形態では、プロファイル、ティア、およびレベルのパラメータは、符号化ビデオビットストリームにおける制約、および符号化ビデオビットストリームを復号するのに必要な機能における限定を含む。たとえば、プロファイル、ティア、およびレベルのパラメータは、ベースレイヤを復号するために復号デバイスによって必要とされるコーディングツール、ビットストリーム特性、もしくはバッファ特性、または他のパラメータにおける制約を規定し得る。プロファイル、ティア、およびレベルのパラメータは、パラメータセット(たとえば、VPSまたはSPS)のシンタックス構造に含まれ得、profile_tier_level()シンタックス構造を含み得る。
上記で説明した技法を使用すると、いくつかの状況において、不必要なシンタックス構造に最小数のビットが割り当てられることを必要とすることによって、帯域幅ならびに他の送信および処理オーバーヘッドが低減される。そのような技法は、たとえば、プロファイル、ティア、レベルのシンタックス構造によって使用されるビット数を最小限に抑える。
さらなる実施形態では、パラメータセットのための表現フォーマットパラメータを制約するための技法およびシステムが説明される。図7は、ビデオパラメータセット(VPS)706およびシーケンスパラメータセット(SPS)702の一例を示す。SPS702は、符号化ビデオビットストリームの中の1つまたは複数のレイヤにとってアクティブなSPSであり得る。SPS702は、表現フォーマットパラメータ704を含む。SPS702は、2つ以上のレイヤに適用されてよく、表現フォーマットパラメータ704は、SPS702が適用されるすべてのレイヤに適用される。いくつかの実施形態では、SPSは、1つのレイヤだけに適用され、したがって、特定の時間において、複数のレイヤにとってアクティブな複数のSPSがあり得る。VPSは、表現フォーマットパラメータの複数のセットを含むことができ、これらのセットの各々は、1つまたは複数のレイヤに割り当てられ得る。たとえば、VPS706は、レイヤID=0を有するベースレイヤに適用される表現フォーマットパラメータ708、レイヤID=1を有するエンハンスメントレイヤに適用される表現フォーマットパラメータ710、およびレイヤID=nを有するエンハンスメントレイヤに適用される表現フォーマットパラメータ712を含み、任意の数のレイヤおよび対応する表現フォーマットパラメータが符号化ビットストリームの中に存在し得ることを示す。
表現フォーマットパラメータ704、708、710、712は、様々なビデオデータ特性(たとえば、解像度、パラメータ、ビット深度、ピクチャ幅、カラーフォーマット、または他の表現フォーマットパラメータ)を記述する。VPS706の中でシグナリングされる表現フォーマットパラメータ708、710、712は、パラメータにとっての最大値を提供し得、あるデバイスのエンコーダと別のデバイスのデコーダとの間での、他の使用の間のセッション交渉において使用され得る。セッション交渉は、動作点(または、出力動作点)について合意するために、最大解像度、ビットレートを決定するために、または符号化ビットストリームの中に含めるべき他の特性について合意するために、異なるデバイスのエンコーダとデコーダとの間で実行され得る。SPS702の中でシグナリングされる表現フォーマットパラメータ704(または、他のSPSの中でシグナリングされる他の表現フォーマットパラメータ)は、VPSの中で提供されるパラメータ値に更新されたパラメータ値を提供し得る。
レイヤのための表現フォーマットパラメータがSPSの中で更新されるとき、更新される表現フォーマットパラメータが、VPSの中で割り当てられているそのレイヤのための対応する表現フォーマットパラメータよりも大きくてはならないことを示す制約が提供され得る。上記の制約の目的は、レイヤごとにVPSの中でシグナリングされる表現フォーマットパラメータの値が、デコーダがそのレイヤに対して予想すべき、それらのパラメータの最大値であることを確実にすることである。このことは、各レイヤのピクチャを処理するためにどのくらいのメモリが割り振られるべきかをデコーダに通知し、デコーダがビットストリームを復号することができるかどうかを決定するためのセッション交渉において有用である。しかしながら、いくつかの実施形態では、制約は、レイヤID(たとえば、nuh_layer_id)が0よりも大きいレイヤだけ(ベースレイヤ以外のレイヤだけ)に適用される。ベースレイヤ(レイヤID=0)の場合、ベースレイヤにとってアクティブなSPSの中でシグナリングされる表現フォーマットパラメータの値を制約する制約が、存在しないことがある。ベースレイヤにとってアクティブなSPSの中でシグナリングされる表現フォーマットパラメータの値は、VPSの中でベースレイヤに割り当てられている対応する表現フォーマットパラメータの値よりもそのように大きいことがある。制約がベースレイヤに適用されない場合、問題が生じ得る。たとえば、VPS706の中の表現フォーマットパラメータ708は、デコーダとのセッション交渉の間に使用されてよく、その後、SPS702は、ベースレイヤにとってより高い解像度、ビットレート、または他の特性にまで更新する表現フォーマットパラメータを含むことがある。そのような場合、前の交渉の結果は持続しないことになり、復号プロセスは失敗する場合がある。このことはまた、他のレイヤに対する表現フォーマット更新を制約する目的を無効にすることがある。さらに、SPSではなくVPSの中のピクチャサイズ情報がレベル定義のために使用されるとき、ピクチャサイズがVPSの中のピクチャサイズよりも大きくなる更新を許容することは、ビットストリームを復号できることを適合デコーダが保証されない状況をもたらすことになる。
したがって、ベースレイヤに対してパラメータセットの中でシグナリングされる表現フォーマットパラメータを制約するための、技法およびシステムが説明される。たとえば、SPS702の中でシグナリングされる表現フォーマットパラメータ704(または、他のSPSの中でシグナリングされる他の表現フォーマットパラメータ)の値が、VPS706の中でシグナリングされる表現フォーマットパラメータ708、710、712の値以下であることを必要とする制約が規定されてよい。制約は、VPS706の中でベースレイヤに割り当てられている表現フォーマットパラメータ708における対応する値以下であるべき、ベースレイヤに割り当てられたSPS702の中の表現フォーマットパラメータ704に対する値を生成することに、エンコーダを限定してよい。たとえば、エンコーダは、1つまたは複数のSPSの中の表現フォーマットパラメータ(たとえば、SPS702の中の表現フォーマットパラメータ704)の1つまたは複数のセットにおいてパラメータ更新を行ってよいが、制約に従ってパラメータの値を限定してよい。SPSの中のベースレイヤ表現フォーマットパラメータに対する制約の一例は、以下のことを含み得る。
nuh_layer_idが0に等しいSPSが、nuh_layer_idが0に等しいレイヤのアクティブなSPSであるとき、SPSの中に存在するシンタックス要素chroma_format_idc、separate_colour_plane_flag、pic_width_in_luma_samples、pic_height_in_luma_samples、bit_depth_luma_minus8、またはbit_depth_chroma_minus8の値が、それぞれ、アクティブなVPSの中のvps_rep_format_idx[0]番目のrep_format()シンタックス構造のchroma_format_vps_idc、separate_colour_plane_vps_flag、pic_width_vps_in_luma_samples、pic_height_vps_in_luma_samples、bit_depth_vps_luma_minus8、またはbit_depth_vps_chroma_minus8以下でなければならないことが、ビットストリーム適合の要件である。
シンタックス要素chroma_format_idc、separate_colour_plane_flag、pic_width_in_luma_samples、pic_height_in_luma_samples、bit_depth_luma_minus8、またはbit_depth_chroma_minus8は、SPSのための表現フォーマットパラメータのセットの中に様々なパラメータを含める。シンタックス要素chroma_format_vps_idc、separate_colour_plane_vps_flag、pic_width_vps_in_luma_samples、pic_height_vps_in_luma_samples、bit_depth_vps_luma_minus8、またはbit_depth_vps_chroma_minus8は、VPSのための表現フォーマットパラメータのセットの中に様々なパラメータを含める。
図8は、ビデオデータを符号化するプロセス800の一実施形態を示す。プロセス800は、パラメータセットのための表現フォーマットパラメータを制約するために実施される。いくつかの態様では、プロセス800は、図1に示す符号化デバイス104または図9に示すエンコーダ20などの、コンピューティングデバイスまたは装置によって実行され得る。たとえば、コンピューティングデバイスまたは装置は、エンコーダ、もしくはプロセッサ、マイクロプロセッサ、マイクロコンピュータ、またはプロセス800のステップを実行するように構成されているエンコーダの他の構成要素を含み得る。
プロセス800は、論理フロー図として図示され、その動作は、ハードウェア、コンピュータ命令、またはそれらの組合せで実施され得る動作のシーケンスを表す。コンピュータ命令のコンテキストでは、動作は、1つまたは複数のプロセッサによって実行されたとき、説明される動作を実行する1つまたは複数のコンピュータ可読記憶媒体に記憶されたコンピュータ実行可能命令を表す。一般に、コンピュータ実行可能命令は、特定の機能を実行し、または特定のデータタイプを実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。動作が説明される順序は、限定として解釈されることを意図せず、説明される任意の数の動作は、プロセスを実施するために任意の順序で、かつ/または並列に組み合わされてよい。
さらに、プロセス800は、実行可能命令とともに構成された1つまたは複数のコンピュータシステムの制御下で実行されてよく、ハードウェアまたはその組合せによって1つまたは複数のプロセッサ上で集合的に実行するコード(たとえば、実行可能命令、1つもしくは複数のコンピュータプログラム、または1つもしくは複数のアプリケーション)として実装されてよい。上述のように、コードは、たとえば、1つまたは複数のプロセッサによって実行可能な複数の命令を備えるコンピュータプログラムの形態で、コンピュータ可読記憶媒体または機械可読記憶媒体に記憶され得る。コンピュータ可読記憶媒体または機械可読記憶媒体は非一時的であってよい。
802において、ビデオデータを符号化するプロセス800は、複数のレイヤを備える符号化ビデオビットストリームを生成することを含み、符号化ビデオビットストリームは、1つまたは複数のシーケンスパラメータセット、およびビデオパラメータセットを含む。一例では、1つまたは複数のシーケンスパラメータセットは図7に示すSPS702を含み、ビデオパラメータセットはVPS706を含む。
804において、プロセス800は、符号化ビデオビットストリームのベースレイヤに割り当てられたシーケンスパラメータセットのための1つまたは複数の表現フォーマットパラメータを、制約に従って生成することを含み、制約は、シーケンスパラメータセットの中の1つまたは複数の表現フォーマットパラメータの値を、ビデオパラメータセットの中でベースレイヤに割り当てられている対応する表現フォーマットパラメータの値以下であるように限定する。シーケンスパラメータセットの中の1つまたは複数の表現フォーマットパラメータは、1つまたは複数のHEVCシンタックス要素の中でシグナリングされ得る。いくつかの実施形態では、1つまたは複数の表現フォーマットパラメータは、解像度、ビット深度、ピクチャ幅、カラーフォーマット、または他のフォーマットパラメータのうちの1つまたは複数を含む。いくつかの実施形態では、前に説明したように、ビデオパラメータセットの中でシグナリングされる1つまたは複数の表現フォーマットパラメータは、1つまたは複数のデコーダとのセッション交渉のために使用される。
いくつかの実施形態では、プロセスは、1つまたは複数のシーケンスパラメータセットを、制約に従って更新することを含む。たとえば、エンコーダなどの装置は、シーケンスパラメータセットの中で表現フォーマットパラメータ更新を提供し得るが、パラメータの値を制約に従って限定してもよい。
上記で説明した技法を使用すると、SPSの中でシグナリングされるベースレイヤ用の表現フォーマットパラメータは、VPSの中の表現フォーマットパラメータに従って制約され得る。そのような技法により、セッション交渉の結果が持続することが可能になり、信頼できるコーディングプロセスにつながる。さらに、SPSではなくVPSの中のピクチャサイズ情報がレベル定義のために使用されるとき、ピクチャサイズの更新がVPSの中のそれよりも大きくなることを許容されないので、ビットストリームを復号できることを適合デコーダが保証されない状況が回避される。
さらなる実施形態では、他の技法およびシステムが本明細書で説明される。たとえば、前に説明したように、それに関する情報がVPSの中に含まれるいくつかのレイヤが、ビットストリームの中に存在しないことがあり、VPSの中で示されないことがある(たとえば、そのレイヤ用のレイヤIDがVPSの中に存在しないことがある)。一例では、HEVCベースレイヤは、利用可能でないことがある(たとえば、HEVC符号化ビデオビットストリームの中にもなく、外部の手段によって提供もされない)。VPSは、たとえば、vps_base_layer_internal_flag、vps_base_layer_available_flag、または両方のフラグを使用して、ベースレイヤが存在しないことを示し得る。しかしながら、それに関する情報がVPSに含まれるいくつかのレイヤがビットストリームの中に存在しないことがあり、どのようにしてもVPSの中で示されないことがあるので、ベースレイヤが利用可能でないことをVPSの中で示すための正当な理由はない。いくつかの実施形態では、vps_base_layer_available_flagおよび/またはvps_base_layer_internal_flagは、HEVC仕様において、TargetOlsIdxの値を提供する外部の手段に対して要件を示すためだけに使用され得る。しかしながら、それはそのような要件を外部の手段に対して規定するためのビデオコーディング仕様の範囲外であり、HEVC、SVC(または、SHVC)、およびMVC(または、MV-HEVC)において規定されない、外部の手段に対する多くの他の類似の要件がある。あるフラグは、このフラグが0に等しいビットストリームを無視するために、レガシーHEVCデコーダによって使用され得る。さらに、(出力)動作点について合意するためのセッション交渉のためにVPSの中の情報が使用されるとき、(出力)動作点のうちのどれが実際に完全に利用可能であるのかを知ることは有用であることになる。そのような情報はまた、完全に利用可能である(出力)動作点だけをテストするために、ビットストリーム適合チェッカーにとって有用であることになる(前に説明したように)。しかしながら、そのような情報のシグナリングのためのメカニズムは、HEVC規格において利用可能でない。
いくつかの実施形態では、上記の問題を解決するための技法は、vps_base_layer_available_flagをVPSから除去することと、vps_base_layer_available_flagに対する現在のビットを予約されるように、または他の使用のために指定することと、どの動作点が完全に利用可能であるのか(その場合、どれが完全に利用可能とは限らないのかが決定され得る)、またはどの動作点が完全に利用可能とは限らないのか(その場合、どれが利用可能であるのかが決定され得る)を示すために、補足エンハンスメント情報(SEI)メッセージをVPSに追加することとを含み得る。追加されたSEIメッセージから、ベースレイヤが利用可能であるかどうかが決定され得る。他の実施形態では、vps_base_layer_available_flagは、SEIメッセージに含まれ得る。他の実施形態では、パラメータセット、およびHRD関連のSEIメッセージに対するのと同様に、SEIメッセージは、ビットストリームの中で、または外部の手段を通じてのいずれかで提供され得る。SEIメッセージに含まれる情報は、完全に利用可能である(出力)動作点だけをテストするために、ビットストリーム適合テストの仕様において使用され得る。他の実施形態では、SEIメッセージは、どの動作点が少なくとも部分的に利用可能であるのか、またはどの動作点が少なくとも部分的に利用可能でないのかを示し得る。
さらなる実施形態では、他の技法およびシステムが本明細書で説明される。たとえば、HEVCへのSVC(または、SHVC)およびMVC(または、MV-HEVC)拡張により、出力レイヤでもなく、出力レイヤを復号するために直接または間接的に必要ともされないレイヤを出力レイヤセットが含むことを可能にし、適合定義のために使用されるHRDパラメータは、そのような不必要なレイヤを考慮に入れる。デコーダへ送られるビットストリームが適合していることを確認するために、そのような不必要なレイヤがデコーダへ送られるのを必要とされることになり、そのことは帯域幅の大きい浪費につながる。いくつかの実施形態では、この問題を解決するための技法は、出力レイヤセットの出力レイヤでもなく、出力レイヤセットの出力レイヤを復号するために直接または間接的に必要ともされないレイヤを出力レイヤセットが含むことを許容しないことを含む。
いくつかの実施形態では、HEVCコーディング規格に修正が加えられてよい。たとえば、HEVCシンタックスは、vps_base_layer_available_flagに対するgeneral_reserved_zero_44bitsの中の1ビットの使用を規定し、vps_base_layer_available_flagに対する現在のビットを予約されるように、または他の使用のために指定し、HEVC仕様におけるgeneral_reserved_zero_44bitsのセマンティクスを、general_reserved_zero_44bitsが0に等しくないときにデコーダがコード化ビデオシーケンスを無視することを必要とするように変更するように修正されてよい。
本明細書で説明するコーディング技法は、例示的なビデオ符号化および復号システム(たとえば、システム100)で実施され得る。システムは、宛先デバイスによって後で復号されるべき符号化ビデオデータを提供するソースデバイスを含む。詳細には、ソースデバイスは、コンピュータ可読媒体を介して宛先デバイスにビデオデータを提供する。ソースデバイスおよび宛先デバイスは、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、いわゆる「スマート」パッド、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲のデバイスのいずれかを備え得る。場合によっては、ソースデバイスおよび宛先デバイスは、ワイヤレス通信のための能力があり得る。
宛先デバイスは、コンピュータ可読媒体を介して、復号されるべき符号化ビデオデータを受信し得る。コンピュータ可読媒体は、ソースデバイスから宛先デバイスに符号化ビデオデータを移動することが可能な任意のタイプの媒体またはデバイスを備え得る。一例では、コンピュータ可読媒体は、ソースデバイスが符号化ビデオデータをリアルタイムで宛先デバイスへ直接送信することを可能にするための通信媒体を備え得る。符号化ビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され得、宛先デバイスへ送信され得る。通信媒体は、無線周波数(RF)スペクトルなどの任意のワイヤレスもしくは有線通信媒体、または1つもしくは複数の物理伝送線路を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなどの、パケットベースのネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイスから宛先デバイスへの通信を容易にするために有用であり得る任意の他の機器を含み得る。
いくつかの例では、符号化データは、出力インターフェースから記憶デバイスに出力され得る。同様に、符号化データは、入力インターフェースによって、記憶デバイスからアクセスされ得る。記憶デバイスは、ハードドライブ、ブルーレイディスク、DVD、CD-ROM、フラッシュメモリ、揮発性もしくは不揮発性メモリ、または符号化ビデオデータを記憶するための任意の他の適切なデジタル記憶媒体などの、様々な分散された、または局所的にアクセスされるデータ記憶媒体のいずれかを含み得る。さらなる一例では、記憶デバイスは、ソースデバイスによって生成された符号化ビデオを記憶し得るファイルサーバまたは別の中間記憶デバイスに相当し得る。宛先デバイスは、ストリーミングまたはダウンロードを介して記憶デバイスから記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化ビデオデータを記憶し、その符号化ビデオデータを宛先デバイスへ送信することが可能な、任意のタイプのサーバであり得る。例示的なファイルサーバは、ウェブサーバ(たとえば、ウェブサイト用の)、FTPサーバ、ネットワーク接続ストレージ(NAS)デバイス、またはローカルディスクドライブを含む。宛先デバイスは、インターネット接続を含む任意の標準的なデータ接続を通じて、符号化ビデオデータにアクセスし得る。このことは、ファイルサーバに記憶されている符号化ビデオデータにアクセスするのに適切である、ワイヤレスチャネル(たとえば、Wi-Fi接続)、有線接続(たとえば、DSL、ケーブルモデムなど)、または両方の組合せを含み得る。記憶デバイスからの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはそれらの組合せであり得る。
本開示の技法は、必ずしもワイヤレスの適用例または設定に限定されるとは限らない。技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、動的適応ストリーミングオーバー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)、2乗差分和(SSD)、または他の差分メトリックによって決定され得るピクセル差分の観点で、コーディングされるべきビデオブロックの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は、動き補償ユニット44によって生成された動き補償された予測ブロックに、再構成された残差ブロックを加算して、ピクチャメモリ64に記憶するための参照ブロックを生成する。参照ブロックは、後続のビデオフレームまたはピクチャの中のブロックをインター予測するための参照ブロックとして、動き推定ユニット42および動き補償ユニット44によって使用されてもよい。
このようにして、図9の符号化デバイス104は、符号化ビデオビットストリームに関するシンタックスを生成するように構成されたビデオエンコーダの一例を表す。符号化デバイス104は、たとえば、上記で説明したVPS、SPS、およびPPSパラメータセットを生成し得る。符号化デバイス104は、図4、図6、および図8に関して上記で説明したプロセスを含む、本明細書で説明する技法のいずれかを実行し得る。本開示の技法は、概して、符号化デバイス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)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の等価な集積論理回路もしくは個別論理回路などの、1つまたは複数のプロセッサを含み得る。そのようなプロセッサは、本開示で説明した技法のいずれかを実施するように構成され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは、任意の従来型プロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実装され得る。したがって、本明細書で使用される「プロセッサ」という用語は、上記の構造、上記の構造の任意の組合せ、または本明細書で説明する技法の実装に適した他の構造もしくは装置のいずれかを指し得る。加えて、いくつかの態様では、本明細書で説明する機能は、符号化および復号のために構成された専用のソフトウェアモジュールもしくはハードウェアモジュール内に設けられてよく、または組み合わされたビデオエンコーダ/デコーダ(コーデック)に組み込まれてもよい。