[0031] 本開示で説明する技法は、概して、スケーラブルビデオコーディング(SHVC、SVC)、シングルレイヤコーディング、および/またはマルチビュー/3Dビデオコーディングに関する。たとえば、本技法は、高効率ビデオコーディング(HEVC:High Efficiency Video Coding)スケーラブルビデオコーディング(SVC、SHVCと呼ばれることがある)拡張に関し、それとともにまたはそれの中で使用され得る。SHVC、SVC拡張では、ビデオ情報の複数のレイヤがあり得る。ビデオ情報の最も低いレベルにあるレイヤはベースレイヤ(BL:base layer)または参照レイヤ(RL:reference layer)として働き得、ビデオ情報の最上部にあるレイヤ(または最上位レイヤ)はエンハンストレイヤ(EL:enhanced layer)として働き得る。「エンハンストレイヤ」は「エンハンスメントレイヤ(enhancement layer)」と呼ばれることがあり、これらの用語は互換的に使用され得る。ベースレイヤは「参照レイヤ(reference layer)」と呼ばれることがあり、これらの用語も互換的に使用され得る。ベースレイヤとトップレイヤとの間にあるすべてのレイヤは追加のELおよび/または参照レイヤとして働き得る。たとえば、所与のレイヤは、ベースレイヤまたは介在エンハンスメントレイヤ(intervening enhancement layer)など、所与のレイヤの下の(たとえば、それに先行する)レイヤのためのELであり得る。さらに、所与のレイヤはまた、所与のレイヤの上の(たとえば、それの後の)1つまたは複数のエンハンスメントレイヤのためのRLとして働き得る。ベースレイヤ(たとえば、「1」に設定されたまたは「1」に等しいレイヤ識別情報(ID)を有する、たとえば、最下位レイヤ)とトップレイヤ(または、最上位レイヤ)との間にあるレイヤは、所与のレイヤよりも上位のレイヤによるレイヤ間予測のための参照として使用され得、所与のレイヤよりも下位のレイヤをレイヤ間予測のための参照として使用し得る。たとえば、所与のレイヤは、所与のレイヤよりも下位のレイヤをレイヤ間予測のための参照として使用して決定され得る。
[0032] 簡単のために、BLおよびELならびに/あるいはRLおよびELというただ2つのレイヤに関して例を提示するが、以下で説明する概念および実施形態は、複数のレイヤがある場合にも適用可能であることがよく理解されよう。さらに、説明を簡単にするために、「フレーム(frame)」または「ブロック(block)」という用語がしばしば使用される。ただし、これらの用語は限定的なものではない。たとえば、以下で説明する技法は、限定はしないが、ピクセル、ブロック(たとえば、CU、PU、TU、マクロブロックなど)、スライス、フレーム、ピクチャなどを含む、様々なビデオユニットのいずれかとともに使用され得る。
ビデオコーディング(Video Coding)
[0033] ビデオコーディング規格は、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:Multi-view Video Coding)拡張を含む(ISO/IEC MPEG−4 AVCとしても知られる)ITU−T H.264とを含む。SVCおよびMVCの最新のジョイントドラフトは、「Advanced video coding for generic audiovisual services」、ITU−T勧告H.264、2010年3月に記載されている。さらに、ITU−Tビデオコーディングエキスパートグループ(VCEG:Video Coding Experts Group)とISO/IECモーションピクチャエキスパートグループ(MPEG:Motion Picture Experts Group)とのジョイントコラボレーションチームオンビデオコーディング(JCT−VC:Joint Collaboration Team on Video Coding)によって開発された新しいビデオコーディング規格、高効率ビデオコーディング(HEVC)がある。最近の高効率ビデオコーディング(HEVC)テキスト仕様ドラフトは、http://phenix.int-evry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC-L1003-v13.zipから入手可能である。また、HEVCのマルチビュー拡張、すなわちMV−HEVCがJCT−3Vによって開発されている。HEVCのスケーラブル拡張、すなわちSHVCもJCT−VCによって開発されている。
[0034] スケーラブルビデオコーディング(SVC)、H.264/AVCのスケーラブル拡張は、たとえば、3つの次元において使用可能な、異なる次元におけるスケーラビリティを備え得る。時間次元では、7.5Hz、15Hz、または30Hzをもつフレームレートが時間スケーラビリティ(T)によってサポートされ得る。空間スケーラビリティ(S)がサポートされるとき、QCIF、CIF、および4CIFなどの異なる解像度が使用可能である。特定の空間解像度およびフレームレートごとに、ピクチャ品質を改善するためにSNR(Q)レイヤが追加され得る。ビデオコンテンツがスケーラブルな方法で符号化されると、アプリケーション要件に従って、実際の配信されたコンテンツを適応させるために、抽出器ツールが使用され得る。アプリケーション要件は、たとえば、クライアントまたは送信チャネルに依存し得る。一例では、各キュービックは、同じフレームレート(時間レベル)、空間解像度、およびSNRレイヤをもつピクチャを含んでいることがある。それらのキューブ(ピクチャ)を任意の次元で追加することによって、より良い表現が達成され得る。使用可能な2つ、3つ、またはさらに多くのスケーラビリティがあるとき、複合スケーラビリティがサポートされ得る。
[0035] SVCの仕様によれば、最下位の空間レイヤおよび品質レイヤをもつピクチャはH.264/AVCに適合し、最も低い時間レベルにあるピクチャは、より高い時間レベルにあるピクチャを用いて拡張され得る時間ベースレイヤを形成する。H.264/AVC適合レイヤに加えて、いくつかの空間エンハンスメントレイヤおよび/またはSNRエンハンスメントレイヤが、空間スケーラビリティおよび/または品質スケーラビリティを与えるために追加され得る。SNRスケーラビリティは品質スケーラビリティと呼ばれることもある。各空間エンハンスメントレイヤまたはSNRエンハンスメントレイヤは、H.264/AVC適合レイヤと同じ時間スケーラビリティ構造で、時間的にスケーラブルであり得る。1つの空間エンハンスメントレイヤまたはSNRエンハンスメントレイヤについて、それが依存する下位レイヤは、その特定の空間エンハンスメントレイヤまたはSNRエンハンスメントレイヤのベースレイヤと呼ばれることもある。
[0036] SVCコーディング構造の一例としては、H.264/AVCに適合し得る、最下位の空間レイヤおよび品質レイヤをもつピクチャ(たとえば、QCIF解像度をもつ、レイヤ0およびレイヤ1中のピクチャ)があり得る。それらの中で、最も低い時間レベルのピクチャは時間ベースレイヤを形成する(たとえば、レイヤ0中のピクチャ)。この時間ベースレイヤ(たとえば、レイヤ0)は、より高い時間レベル(たとえば、レイヤ1)のピクチャを用いて拡張され得る。H.264/AVC適合レイヤに加えて、いくつかの空間エンハンスメントレイヤおよび/またはSNRエンハンスメントレイヤが、空間スケーラビリティおよび/または品質スケーラビリティを与えるために追加され得る。たとえば、エンハンスメントレイヤは、レイヤ2と同じ解像度をもつCIF表現であり得る。この例では、レイヤ3はSNRエンハンスメントレイヤであり得る。各空間エンハンスメントレイヤまたはSNRエンハンスメントレイヤ自体は、H.264/AVC適合レイヤと同じ時間スケーラビリティ構造で、時間的にスケーラブルであり得る。また、エンハンスメントレイヤは空間解像度とフレームレートの両方を向上させ得る。たとえば、レイヤ4は、フレームレートを15Hzから30Hzにさらに増加させ得る4CIFエンハンスメントレイヤを与え得る。さらに、同じ時間インスタンス中のコーディングされたスライスは、ビットストリーム順序で連続しており、SVCのコンテキストにおける1つのアクセスユニットを形成し得る。それらのSVCアクセスユニットは、次いで、表示順序とは異なり、たとえば、時間予測関係によって決定され得る、復号順序に従い得る。
[0037] 概して、SVCおよびSHVCは、(信号対雑音(SNR)とも呼ばれる)品質スケーラビリティ、空間スケーラビリティ、および/または時間スケーラビリティを与えるために使用され得る。たとえば、一実施形態では、参照レイヤおよびエンハンスメントレイヤがともに第1のレベルよりも高い第2の品質レベル(たとえば、より少ない雑音、より大きい解像度、より良いフレームレートなど)でビデオを表示するのに十分なビデオ情報を含むように、参照レイヤ(たとえば、ベースレイヤ)は第1の品質レベルでビデオを表示するのに十分なビデオ情報を含み、エンハンスメントレイヤは、参照レイヤに関係する追加のビデオ情報を含む。エンハンストレイヤは、ベースレイヤとは異なる空間解像度を有し得る。たとえば、ELとBLとの間の空間アスペクト比は、1.0、1.5、2.0または他の異なる比であり得る。言い換えれば、ELの空間アスペクトは、BLの空間アスペクトの1.0倍、1.5倍、または2.0倍に等しくなり得る。いくつかの例では、ELのスケーリング係数(scaling factor)はBLよりも大きくなり得る。たとえば、EL中のピクチャのサイズは、BL中のピクチャのサイズよりも大きくなり得る。このようにして、限定はしないが、ELの空間解像度がBLの空間解像度よりも大きいことが可能であり得る。
[0038] さらに、SVCおよびSHVCでは、現在ブロックの予測は、SVCのために与えられる様々なレイヤを使用して実行され得る。そのような予測はレイヤ間予測と呼ばれることがある。レイヤ間予測方法は、レイヤ間冗長性を低減するためにSVCにおいて利用され得る。レイヤ間予測のいくつかの例としては、レイヤ間イントラ予測、レイヤ間動き予測、およびレイヤ間残差予測があり得る。レイヤ間イントラ予測は、エンハンスメントレイヤ中の現在ブロックを予測するために、ベースレイヤ中のコロケートブロックの再構成を使用する。レイヤ間動き予測は、エンハンスメントレイヤ中の動作を予測するために、ベースレイヤの(動きベクトルを含む)動き情報を使用する。レイヤ間残差予測は、エンハンスメントレイヤの残差を予測するために、ベースレイヤの残差を使用する。
[0039] SVCのいくつかの機能はH.264/AVCから引き継がれている。以前のスケーラブル規格と比較して、例示的な利点は、以下で説明するように、レイヤ間予測とシングルループ復号とを含み得る。
[0040] たとえば、低複雑度デコーダを保持するために、SVCではシングルループ復号が使用され得る。シングルループ復号の場合、各サポートされるレイヤは、単一の動き補償ループを用いて復号され得る。これを達成するために、コロケートされた参照レイヤ信号がそれのためにイントラコーディングされ得るエンハンスメントレイヤマクロブロック(MB:macroblock)について、レイヤ間イントラ予測の使用が可能にされ得る。さらに、上位レイヤをレイヤ間予測するために使用されるレイヤが、制約付きイントラ予測を使用してコーディングされ得る。
[0041] SVCは、テクスチャと残差と動きとに基づく空間スケーラビリティとSNRスケーラビリティとのためのレイヤ間予測を含む。SVCにおける空間スケーラビリティは、2つのレイヤ間の任意の解像度比に一般化され得る。SNRスケーラビリティは、粗粒度スケーラビリティ(CGS:Coarse Granularity Scalability)または中粒度スケーラビリティ(MGS:Medium Granularity Scalability)によって実現され得る。SVCでは、2つの空間レイヤまたはCGSレイヤは、(NALユニットヘッダ中でdependency_idによって示される)異なる依存性レイヤに属し得るが、2つのMGSレイヤは同じ依存性レイヤ中にあり得る。1つの依存性レイヤは、品質エンハンスメントレイヤに対応する、0からより高い値までのquality_idをもつ品質レイヤを含み得る。SVCでは、以下で説明するように、レイヤ間の冗長性を低減するために、レイヤ間予測方法が利用される得る。
[0042] 1つの例示的なレイヤ間予測方法はレイヤ間イントラ予測を含み得る。レイヤ間イントラ予測を使用するコーディングモードは、SVCでは「イントラBL」モードと呼ばれることがある。シングルループ復号を使用可能にするために、制約付きイントラモードとしてコーディングされるベースレイヤ中のコロケートされたMBを有し得るMBはレイヤ間イントラ予測モードを使用し得る。制約付きイントラモードMBは、近隣のインターコーディングされたMBからのサンプルを参照することなしにイントラコーディングされ得る。
[0043] 別の例示的なレイヤ間予測方法はレイヤ間残差予測を含み得る。たとえば、MBが残差予測を使用するように示される場合、レイヤ間予測のためのベースレイヤ中のコロケートされたMBはインターMBであり得、それの残差は、空間解像度比に従ってアップサンプリングされ得る。エンハンスメントレイヤとベースレイヤのそれとの間の残差差分がコーディングされ得る。すなわち、エンハンスメントレイヤの現在フレーム
の再構成は、エンハンスメントレイヤの逆量子化係数reと、エンハンスメントレイヤからの時間予測Peと、ベースレイヤの量子化正規化残差係数rbとの和に等しく、ここにおいて、
である。
[0044] また別の例示的なレイヤ間予測方法はレイヤ間動き予測を含み得る。たとえば、コロケートされたベースレイヤ動きベクトルは、エンハンスメントレイヤ中のMBまたはMBパーティションの動きベクトルのための予測子を生成するためにスケーリングされ得る。さらに、MBタイプ(たとえば、ベースモード)はMBごとに1つのフラグを送り得る。このフラグが真であり、対応するベースレイヤMBがイントラでない場合、動きベクトル、区分モードおよび参照インデックスはベースレイヤから導出され得る。
[0045] H.264/AVCと同様に、HEVCはまた、上記で説明したように、時間スケーラビリティと、SNRスケーラビリティと、空間スケーラビリティとを含み得るスケーラブルビデオコーディング拡張(SHVC)を有し得る。
概観(Overview)
[0046] 以下で説明するように、ビデオフレームまたはピクチャは、ピクセルの数に関して最大コーディングユニットを表し得る一連のツリーブロックまたは最大コーディングユニット(LCU:largest coding unit)に分割され得る。各ツリーブロックは、4分木に従って4つの等しいコーディングユニット(CU)にスプリット(たとえば、区分)され得、各CUは「リーフ(leaf)」または「リーフCU」と呼ばれることがある。各CUは4つの等しいサブCUにさらにスプリットされ得、サブCUもリーフCUと呼ばれることがある。各CUは、以下でさらに説明するように、コーディングノードと、コーディングノードに関連する予測ユニット(PU:prediction unit)および変換ユニット(TU:transform unit)とを含み得る。TUは、変換の適用の後に変換領域において係数を備え得る。変換係数を生成するための任意の変換の後に、ビデオエンコーダは、係数を表すために使用されるデータの量をできる限り低減するために変換係数を量子化して、さらなる圧縮を行い得る。PUは、ビデオコーディングシステムが、ピクチャの各部分を処理するのではなく、前のピクチャ、近隣ピクチャ、または同じピクチャの他の部分に基づいてピクチャの部分を予測することによってビットを節約する(たとえば、より効率的になる)ことを可能にする、イントラ予測またはインター予測コーディングを使用可能にし得る。
[0047] 各ツリーブロックは、以下でさらに説明するように、ルーマサンプルとクロマサンプルの両方をさらに含み得る。クロマサブサンプリングは、ルーマ(たとえば、輝度)情報よりも少ないクロマ(たとえば、色)情報を与えることによってピクチャを符号化することの実施である。ビデオシーケンス中のルーマサンプルおよびクロマサンプルの各々は8ビットから14ビットまでを必要とし得る。ビット要件により、ビデオ符号化および復号システムは、ビットを節約し、場合によってはピクチャ品質を改善するために、様々な方法(たとえば、イントラ予測、クロスチャネル予測、レイヤ間予測、コンポーネント間フィルタ処理)を実装し得る。
[0048] たとえば、以下でさらに説明するように、コンポーネント間フィルタ処理を使用して、レイヤ間予測のために使用されるクロマ成分は、対応するルーマ成分にハイパスフィルタを適用することによって拡張され得る。本システムは、パラメータの中でも、本開示では「フィルタパラメータ(filter parameter)」と総称される、固有のハイパスフィルタ係数(high-pass filter coefficient)、量子化された固有のハイパスフィルタ係数、量子化パラメータ(quantization parameter)、シフトパラメータ(shift parameter)、量子化ステップサイズ(quantization step size)を決定または実装し得る。フィルタパラメータは、CbまたはCrクロマピクセル(chroma pixel)を囲むルーマピクセル(luma pixel)に送信(たとえば、シグナリング)され得、これにより、以下で説明するように、本システムが拡張CbまたはCrピクセルをそれぞれ取得することが可能になり得る。
[0049] 既存のビデオ符号化および復号システムは、ピクチャレイヤにおいてフィルタパラメータの1つのセット(色成分CbおよびCrごとに1つずつ)をシグナリングし得る。言い換えれば、既存のシステムは、ピクチャ全体のためにフィルタパラメータの合計2つのセットをシグナリングし得る。上記で説明したように、ピクチャ全体のためにフィルタパラメータの1つのセットのみをシグナリングすることは低品質ピクチャを生じ得る。たとえば、大解像度ピクチャ(たとえば、4K、または3840×2160ピクセル)は、異なる固有のフィルタパラメータをもついくつかの領域を含み得る。システムがピクチャ全体のために色成分ごとにフィルタパラメータの1つのセットのみを使用した場合、システムはピクチャのプロパティを最も良くキャプチャしないことがあり、品質が損なわれることがある。
[0050] 上記および以下で説明するように、本開示のシステムおよび/または方法は、4つまたはそれ以上のリーフからなる4分木構造にピクチャを区分することと、(クロマサンプルおよびルーマサンプルに関して上記および以下で説明するように)固有のコンポーネント間フィルタパラメータを各リーフにシグナリングすることとによって、コンポーネント間フィルタ処理コーディング効率とレイヤ間参照ピクチャ品質とを改善し得る。いくつかの実施形態では、リーフは、4つの等しいサイズのリーフ(またはクォーター)などの4分木リーフである。他の実施形態では、リーフは、異なるサイズを有し、4分木以外であり得る(たとえば、2つのリーフなどにスプリットされ得る)。以下で説明する実施形態は4分木構造に関して特徴づけられ得るが、同じ技法が他のリーフ構造とともに同様に使用され得ることを理解されたい。そのような方法は、最初にピクチャを最大コーディングユニット(LCU)に分割しなければならないことと、次いで、LCUまたはより小さいレベルにおいてコンポーネント間情報をシグナリングすることとを回避する。
[0051] たとえば、本システムおよび/または方法は、3840×2160(4K)解像度ピクチャを4つの等しい1920×1080 4分木リーフに区分し得る。場合によっては、4分木リーフは、より小さいユニット(たとえば、最小コーディングユニットまたは最大コーディングユニットまたは他のサイズのユニット)にさらに区分され得るが、それらはそうである必要はない。別の実施形態では、本方法は、4つの等しい1920×1080 4分木リーフのうちの1つまたは複数を4つの等しい960×540 4分木リーフにさらに区分し、4分木リーフの各々に上記で説明した同じステップを適用し得る。別の実施形態では、本方法は、さらに区分された4分木リーフの各々のうちの1つまたは複数をそれら自体のさらなる等しい4分木リーフにさらに区分し得、以下同様である。任意のサイズのリーフが利用され得る。
[0052] 本システムおよび/または方法は、リーフの各々についてレイヤ間予測中に使用されるべき固有のコンポーネント間フィルタパラメータを決定し得る。本方法は、リーフの各々のための固有のコンポーネント間フィルタパラメータの各々をシグナリングし得る。フィルタパラメータは、スライスヘッダ中でまたは適応パラメータセット(APS:adaptation parameter set)中でシグナリングされ得る。このようにして、参照レイヤ内のサンプリングされたクロマの各々は、各リーフのプロパティに基づいてこのリーフ固有情報を適宜に組み込み、改善されたレイヤ間参照ピクチャが生じ得る。これらの特徴およびさらなる実施形態について以下でより詳細に説明する。
[0053] 添付の図面を参照しながら、新規のシステム、装置、および方法の様々な態様について以下でより十分に説明する。ただし、本開示は、多くの異なる形態で実施され得、本開示全体にわたって提示する任意の特定の構造または機能に限定されるものと解釈されるべきではない。むしろ、これらの態様は、本開示が周到で完全になり、本開示の範囲を当業者に十分に伝えるように与えるものである。本明細書の教示に基づいて、本開示の範囲は、本発明の他の態様とは無関係に実装されるにせよ、本発明の他の態様と組み合わせて実装されるにせよ、本明細書で開示する新規のシステム、装置、および方法のいかなる態様をもカバーするものであることを、当業者なら諒解されたい。たとえば、本明細書に記載の態様をいくつ使用しても、装置は実装され得、または方法は実施され得る。さらに、本発明の範囲は、本明細書に記載の本発明の様々な態様に加えてまたはそれらの態様以外に、他の構造、機能、または構造および機能を使用して実施されるそのような装置または方法をカバーするものとする。本明細書で開示するどの態様も請求項の1つまたは複数の要素によって実施され得ることを理解されたい。
[0054] 本明細書では特定の態様について説明するが、これらの態様の多くの変形および置換は本開示の範囲内に入る。好適な態様のいくつかの利益および利点について説明するが、本開示の範囲は特定の利益、使用、または目的に限定されるものではない。むしろ、本開示の態様は、様々なワイヤレス技術、システム構成、ネットワーク、および伝送プロトコルに広く適用可能であるものとし、それらのいくつかを例として、図において、および好適な態様についての以下の説明において示す。発明を実施するための形態および図面は、本開示を限定するものではなく説明するものにすぎず、本開示の範囲は添付の特許請求の範囲およびそれの均等物によって定義される。
ビデオコーディングシステム
[0055] 図1は、本開示で説明する態様による技法を利用し得る例示的なビデオ符号化および復号システム10を示すブロック図である。本明細書で使用し説明する「ビデオコーダ(video coder)」という用語は、総称的にビデオエンコーダとビデオデコーダの両方を指す。本開示では、「ビデオコーディング(video coding)」または「コーディング(coding)」という用語は、ビデオ符号化とビデオ復号とを総称的に指すことがある。
[0056] 図1に示されているように、ビデオコーディングシステム10は、ソースデバイス12と宛先デバイス14とを含む。ソースデバイス12は符号化されたビデオデータを生成する。宛先デバイス14は、ソースデバイス12によって生成された符号化されたビデオデータを復号し得る。ソースデバイス12は、コンピュータ可読記憶媒体または他の通信チャネルを含み得る通信チャネル16を介して宛先デバイス14にビデオデータを与え得る。ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(たとえば、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォン、いわゆる「スマート」パッドなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、車載コンピュータ、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスを含み得る。ソースデバイス12および宛先デバイス14はワイヤレス通信のために装備され得る。
[0057] 宛先デバイス14は、通信チャネル16を介して、復号されるべき符号化されたビデオデータを受信し得る。通信チャネル16は、ソースデバイス12から宛先デバイス14に符号化されたビデオデータを移動することが可能なタイプの媒体またはデバイスを備え得る。たとえば、通信チャネル16は、ソースデバイス12が、符号化されたビデオデータをリアルタイムで宛先デバイス14に直接送信することを可能にするための通信媒体を備え得る。符号化されたビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先デバイス14に送信され得る。通信媒体は、無線周波数(RF)スペクトルまたは1つまたは複数の物理伝送線路など、ワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス12から宛先デバイス14への通信を可能にするために有用であり得る他の機器を含み得る。
[0058] いくつかの実施形態では、符号化されたデータは、出力インターフェース22からストレージデバイスに出力され得る。そのような例では、チャネル16は、ソースデバイス12によって生成された符号化されたビデオデータを記憶するストレージデバイスまたはコンピュータ可読記憶媒体に対応し得る。たとえば、宛先デバイス14は、ディスクアクセスまたはカードアクセスを介してコンピュータ可読記憶媒体にアクセスし得る。同様に、符号化されたデータは入力インターフェース28によってコンピュータ可読記憶媒体からアクセスされ得る。コンピュータ可読記憶媒体は、ハードドライブ、Blu−ray(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、揮発性または不揮発性メモリ、あるいはビデオデータを記憶するための他のデジタル記憶媒体など、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。コンピュータ可読記憶媒体は、ソースデバイス12によって生成された符号化されたビデオを記憶し得るファイルサーバまたは別の中間ストレージデバイスに対応し得る。宛先デバイス14は、ストリーミングまたはダウンロードを介して、コンピュータ可読記憶媒体から、記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化されたビデオデータを記憶し、その符号化されたビデオデータを宛先デバイス14に送信することが可能なタイプのサーバであり得る。例示的なファイルサーバとしては、(たとえば、ウェブサイトのための)ウェブサーバ、FTPサーバ、ネットワーク接続ストレージ(NAS)デバイス、またはローカルディスクドライブがある。宛先デバイス14は、インターネット接続を含む標準のデータ接続を介して、符号化されたビデオデータにアクセスし得る。これは、ファイルサーバに記憶された符号化されたビデオデータにアクセスするのに好適であるワイヤレスチャネル(たとえば、Wi−Fi(登録商標)接続)、ワイヤード接続(たとえば、DSL、ケーブルモデムなど)、またはその両方の組合せを含み得る。コンピュータ可読記憶媒体からの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはその両方の組合せであり得る。
[0059] 本開示の技法は、ワイヤレス適用例または設定に加えて適用例または設定を適用し得る。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、動的適応ストリーミングオーバーHTTP(DASH:dynamic adaptive streaming over HTTP)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されたデジタルビデオ、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例など、様々なマルチメディア適用例のaをサポートするビデオコーディングに適用され得る。いくつかの実施形態では、システム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオテレフォニーなどの適用例をサポートするために、一方向または双方向ビデオ送信をサポートするように構成され得る。
[0060] 図1では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、出力インターフェース22とを含む。宛先デバイス14は、入力インターフェース28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。ソースデバイス12のビデオエンコーダ20は、複数の規格または規格拡張に準拠するビデオデータを含むビットストリームをコーディングするための技法を適用するように構成され得る。他の実施形態では、ソースデバイスおよび宛先デバイスは他の構成要素または構成を含み得る。たとえば、ソースデバイス12は、外部カメラなどの外部ビデオソース18からビデオデータを受信し得る。同様に、宛先デバイス14は、内蔵ディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。
[0061] ソースデバイス12のビデオソース18は、ビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされたビデオを含んでいるビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースを含み得る。ビデオソース18は、ソースビデオとしてのコンピュータグラフィックスベースのデータ、またはライブビデオとアーカイブビデオとコンピュータ生成ビデオとの組合せを生成し得る。いくつかの実施形態では、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、いわゆるカメラフォンまたはビデオフォンを形成し得る。キャプチャされたビデオ、以前にキャプチャされたビデオ、またはコンピュータ生成されたビデオは、ビデオエンコーダ20によって符号化され得る。符号化されたビデオ情報は、上記で説明したように、出力インターフェース22によって、コンピュータ可読記憶媒体を含み得る通信チャネル16に出力され得る。
[0062] コンピュータ可読記憶媒体は、ワイヤレスブロードキャストまたはワイヤードネットワーク送信などの一時媒体、あるいはハードディスク、フラッシュドライブ、コンパクトディスク、デジタルビデオディスク、Blu−rayディスク、または他のコンピュータ可読媒体などの記憶媒体(たとえば、非一時的記憶媒体)を含み得る。ネットワークサーバ(図示せず)は、(たとえば、ネットワーク送信を介して)ソースデバイス12から符号化されたビデオデータを受信し、その符号化されたビデオデータを宛先デバイス14に与え得る。ディスクスタンピング設備など、媒体製造設備のコンピューティングデバイスは、ソースデバイス12から符号化されたビデオデータを受信し、その符号化されたビデオデータを含んでいるディスクを生成し得る。したがって、通信チャネル16は、様々な形態の1つまたは複数のコンピュータ可読記憶媒体を含むものと理解され得る。
[0063] 宛先デバイス14の入力インターフェース28は通信チャネル16から情報を受信し得る。通信チャネル16の情報は、ビデオエンコーダ20によって定義され、ビデオデコーダ30によって使用され得る、ブロックおよび他のコーディングされたユニット、たとえば、GOPの特性および/または処理を記述するシンタックス要素を含む、シンタックス情報を含み得る。ディスプレイデバイス32は、復号されたビデオデータをユーザに対して表示し、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを含み得る。
[0064] ビデオエンコーダ20およびビデオデコーダ30は、現在開発中の高効率ビデオコーディング(HEVC)規格などのビデオコーディング規格に従って動作し得、HEVCテストモデル(HM)に準拠し得る。代替的に、ビデオエンコーダ20およびビデオデコーダ30は、代替的にMPEG−4,Part10,アドバンストビデオコーディング(AVC)と呼ばれるITU−T H.264規格など、他のプロプライエタリ規格または業界規格、あるいはそのような規格の拡張に従って動作し得る。ただし、本開示の技法は、いかなる特定のコーディング規格にも限定されない。ビデオコーディング規格の他の例としては、MPEG−2およびITU−T H.263がある。図1には示されていないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30は、それぞれオーディオエンコーダおよびデコーダと統合され得、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理するために、適切なMUX−DEMUXユニット、または他のハードウェアおよびソフトウェアを含み得る。適用可能な場合、MUX−DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP:user datagram protocol)などの他のプロトコルに準拠し得る。
[0065] 図1は一例にすぎず、本開示の技法は、符号化デバイスと復号デバイスとの間のデータ通信を必ずしも含むとは限らないビデオコーディング設定(たとえば、ビデオ符号化またはビデオ復号)に適用され得る。他の例では、データがローカルメモリから取り出されること、ネットワークを介してストリーミングされることなどが行われ得る。符号化デバイスは、データを符号化し、メモリに記憶し得、および/または、復号デバイスは、メモリからデータを取り出し、復号し得る。多くの例では、符号化および復号は、互いに通信しないが、単にメモリにデータを符号化し、および/またはメモリからデータを取り出し、復号するデバイスによって実行される。
[0066] ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアまたはそれらの任意の組合せなど、様々な好適なエンコーダ回路のいずれかとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、デバイスは、ソフトウェアのための命令を非一時的コンピュータ可読媒体に記憶し、本開示の技法を実行するために1つまたは複数のプロセッサを使用してハードウェアでその命令を実行し得る。ビデオエンコーダ20およびビデオデコーダ30の各々は1つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも、それぞれのデバイスにおいて複合エンコーダ/デコーダ(コーデック)の一部として統合され得る。ビデオエンコーダ20および/またはビデオデコーダ30を含むデバイスは、集積回路、マイクロプロセッサ、および/またはセルラー電話などのワイヤレス通信デバイスを備え得る。
[0067] JCT−VCはHEVC規格およびそれの拡張の開発に取り組んでおり、バージョン1は確定された。HEVC規格化の取り組みは、HEVCテストモデル(HM)と呼ばれるビデオコーディングデバイスの発展的モデルに基づいている。HMは、たとえば、ITU−T H.264/AVCに従う既存のデバイスに対してビデオコーディングデバイスのいくつかの追加の能力を仮定する。たとえば、H.264は9つのイントラ予測符号化モードを与えるが、HMは33個ものイントラ予測符号化モードを与え得る。
[0068] 概して、HMの作業モデルは、ビデオフレームまたはピクチャが一連のツリーブロックまたは最大コーディングユニット(LCU)に分割され得ることを記載している。ビットストリーム内のシンタックスデータが、ピクセルの数に関して最大コーディングユニットであるLCUのサイズを定義し得る。スライスは、コーディング順序でいくつかの連続するツリーブロックを含む。ビデオフレームまたはピクチャは、1つまたは複数のスライスに区分され得る。各ツリーブロックは、4分木に従ってコーディングユニット(CU)にスプリットされ得る。概して、4分木データ構造はCUごとに1つのノードを含み、ルートノードはツリーブロックに対応する。CUが4つのサブCUにスプリットされた場合、CUに対応するノードは4つのリーフノードを含み、リーフノードの各々はサブCUのうちの1つに対応する。
[0069] 4分木データ構造の各ノードは、対応するCUのシンタックスデータを与え得る。たとえば、4分木中のノードは、そのノードに対応するCUがサブCUにスプリットされるかどうかを示すスプリットフラグを含み得る。CUのためのシンタックス要素は、再帰的に定義され得、CUがサブCUにスプリットされるかどうかに依存し得る。CUがさらにスプリットされない場合、そのCUはリーフCUまたは単に「リーフ」と呼ばれる。本開示では、元のリーフCUの明示的スプリッティングが存在しない場合でも、リーフCUの4つのサブCUをリーフCUとも呼ぶことがある。たとえば、16×16サイズのCUがさらにスプリットされない場合、この16×16CUが決してスプリットされなくても、4つの8×8サブCUをリーフCUとも呼ぶことがある。
[0070] CUは、CUがサイズ差異を有しないことを除いて、H.264規格のマクロブロックと同様の目的を備える。たとえば、ツリーブロックは、(サブCUとも呼ばれる)4つの子ノードにスプリットされ得、各子ノードは、今度は親ノードとなり、別の4つの子ノードにスプリットされ得る。4分木のリーフノードと呼ばれる、最後のスプリットされていない子ノードは、リーフCUとも呼ばれるコーディングノードを備える。コーディングされたビットストリームに関連するシンタックスデータは、最大CU深度と呼ばれる、ツリーブロックがスプリットされ得る最大回数を定義し得、また、コーディングノードの最小サイズを定義し得る。それに応じて、ビットストリームは最小コーディングユニット(SCU:smallest coding unit)をも定義し得る。本開示では、HEVCのコンテキストにおけるCU、PU、またはTU、あるいは他の規格のコンテキストにおける同様のデータ構造(たとえば、H.264/AVCにおけるマクロブロックおよびそれのサブブロック)のいずれかを指すために「ブロック」という用語を使用する。
[0071] CUは、コーディングノードと、コーディングノードに関連する予測ユニット(PU)および変換ユニット(TU)とを含む。CUのサイズは、コーディングノードのサイズに対応し、形状が正方形であり得る。CUのサイズは、8×8ピクセルから最大64×64以上のピクセルをもつツリーブロックのサイズまでに及び得る。各CUは、1つまたは複数のPUと1つまたは複数のTUとを含み得る。CUに関連するシンタックスデータは、たとえば、CUを1つまたは複数のPUに区分することを記述し得る。区分モードは、CUが、スキップモード符号化またはダイレクトモード符号化されるか、イントラ予測モード符号化されるか、あるいはインター予測モード符号化されるかの間で異なり得る。PUは、形状が非正方形になるように区分され得る。CUに関連するシンタックスデータは、たとえば、4分木に従って、CUを1つまたは複数のTUに区分することも記述し得る。TUは、形状が正方形または非正方形(たとえば、矩形)であり得る。
[0072] HEVC規格は、CUごとに異なり得る、TUに従う変換を可能にする。TUは、区分されたLCUについて定義された所与のCU内のPUのサイズに基づいてサイズ決定され得るが、常にそうであるとは限らない。TUは、PUと同じサイズであるかまたはPUよりも小さいことがある。いくつかの例では、CUに対応する残差サンプルは、「残差4分木」(RQT:residual quad tree)と呼ばれる4分木構造を使用して、より小さいユニットに再分割され得る。RQTのリーフノードは変換ユニット(TU)と呼ばれることがある。TUに関連するピクセル差分値は、変換されて変換係数が生成され得、その変換係数は量子化され得る。
[0073] リーフCUは、1つまたは複数の予測ユニット(PU)を含み得る。概して、PUは、対応するCUの全部または一部分に対応する空間エリアを表し、そのPUの参照サンプルを取り出すためのデータを含み得る。その上、PUは、予測に関係するデータを含む。たとえば、PUがイントラモード符号化されるとき、PUのためのデータは、PUに対応するTUのためのイントラ予測モードを記述するデータを含み得る残差4分木(RQT)中に含まれ得る。別の例として、PUがインターモード符号化されるとき、PUは、PUのための1つまたは複数の動きベクトルを定義するデータを含み得る。PUのための動きベクトルを定義するデータは、たとえば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルについての解像度(たとえば、1/4ピクセル精度または1/8ピクセル精度)、動きベクトルが指す参照ピクチャ、および/または動きベクトルのための参照ピクチャリスト(たとえば、リスト0、リスト1、またはリストC)を記述し得る。
[0074] 1つまたは複数のPUを有するリーフCUは、1つまたは複数の変換ユニット(TU)をも含み得る。変換ユニットは、上記で説明したように、(TU4分木構造とも呼ばれる)RQTを使用して指定され得る。たとえば、スプリットフラグは、リーフCUが4つの変換ユニットにスプリットされるかどうかを示し得る。次いで、各変換ユニットは、さらなるサブTUにさらにスプリットされ得る。TUがさらにスプリットされないとき、そのTUはリーフTUと呼ばれることがある。概して、イントラコーディングの場合、リーフCUに属するすべてのリーフTUは同じイントラ予測モードを共有する。すなわち、概して、リーフCUのすべてのTUの予測値を計算するために同じイントラ予測モードが適用される。イントラコーディングの場合、ビデオエンコーダは、イントラ予測モードを使用して各リーフTUの残差値をTUに対応するCUの一部と元のブロックとの間の差分として計算し得る。TUは、必ずしもPUのサイズに制限されるとは限らない。したがって、TUは、PUよりも大きいことも小さいこともある。イントラコーディングの場合、PUは、同じCUの対応するリーフTUとコロケートされ得る。いくつかの例では、リーフTUの最大サイズは、対応するリーフCUのサイズに対応し得る。
[0075] その上、リーフCUのTUはまた、残差4分木(RQT)と呼ばれる、それぞれの4分木データ構造に関連し得る。すなわち、リーフCUは、リーフCUがどのようにTUに区分されるかを示す4分木を含み得る。TU4分木のルートノードは概してリーフCUに対応し、CU4分木のルートノードは概してツリーブロック(またはLCU)に対応する。スプリットされないRQTのTUはリーフTUと呼ばれる。概して、本開示では、別段に明記されていない限り、リーフCUおよびリーフTUに言及するためにそれぞれCUおよびTUという用語を使用する。
[0076] ビデオシーケンスは一連のビデオフレームまたはピクチャを含み得る。ピクチャグループ(GOP:group of pictures)は、概して、ビデオピクチャのうちの一連の1つまたは複数を備える。GOPは、GOP中に含まれるいくつかのピクチャを記述するシンタックスデータを、GOPのヘッダ中、ピクチャのうちの1つまたは複数のヘッダ中、または他の場所に含み得る。ピクチャの各スライスは、それぞれのスライスのための符号化モードを記述するスライスシンタックスデータを含み得る。ビデオエンコーダ20は、ビデオデータを符号化するために個々のビデオスライス内のビデオブロックに対して動作し得る。ビデオブロックはCU内のコーディングノードに対応し得る。ビデオブロックは、固定サイズまたは可変サイズを有し得、指定のコーディング規格に応じてサイズが異なり得る。
[0077] 一例として、HMは、様々なPUサイズでの予測をサポートする。特定のCUのサイズが2N×2Nであると仮定すると、HMは、2N×2NまたはN×NのPUサイズでのイントラ予測をサポートし、2N×2N、2N×N、N×2N、またはN×Nの対称的なPUサイズでのインター予測をサポートする。HMはまた、2N×nU、2N×nD、nL×2N、およびnR×2NのPUサイズでのインター予測のための非対称区分をサポートする。非対称区分では、CUの一方向は区分されないが、他の方向は25%と75%とに区分される。25%の区分に対応するCUの部分は、「n」とその後ろに付く「Up」、「Down」、「Left」、または「Right」という表示によって示される。したがって、たとえば、「2N×nU」は、上部の2N×0.5N PUと下部の2N×1.5N PUとで水平方向に区分された2N×2N CUを指す。
[0078] 本開示では、「N×N(NxN)」および「N×N(N by N)」は、垂直寸法および水平寸法に関するビデオブロックのピクセル寸法、たとえば、16×16(16x16)ピクセルまたは16×16(16 by 16)ピクセルを指すために互換的に使用され得る。概して、16×16ブロックは、垂直方向に16ピクセルを有し(y=16)、水平方向に16ピクセルを有し得る(x=16)。同様に、N×Nブロックは、概して、垂直方向にNピクセルを備え、水平方向にNピクセルを備え、ただし、Nは非負整数値を表す。ブロック中のピクセルは行と列とに構成され得る。その上、ブロックは、必ずしも、水平方向において垂直方向と同じ数のピクセルを有する必要があるとは限らない。たとえば、ブロックはN×Mピクセルを備え得、ただし、Mは必ずしもNに等しいとは限らない。
[0079] CUのPUを使用したイントラ予測コーディングまたはインター予測コーディングの後に、ビデオエンコーダ20は、CUのTUのための残差データを計算し得る。PUは、(ピクセル領域とも呼ばれる)空間領域において予測ピクセルデータを生成する方法またはモードを記述するシンタックスデータを備え得、TUは、変換、たとえば、残差ビデオデータへの離散サイン変換(DST)、離散コサイン変換(DCT)、整数変換、ウェーブレット変換、または概念的に同様の変換の適用後に、変換領域において係数を備え得る。残差データは、符号化されていないピクチャのピクセルと、PUに対応する予測値との間のピクセル差分に対応し得る。ビデオエンコーダ20は、CUのための残差データを含むTUを形成し、次いで、CUのための変換係数を生成するためにTUを変換し得る。
[0080] 変換係数を生成するための任意の変換の後に、ビデオエンコーダ20は変換係数の量子化を実行し得る。量子化は、それの最も広い通常の意味を有することが意図された広義の用語である。一実施形態では、量子化は、係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を行うプロセスを指す。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。たとえば、量子化中にnビット値がmビット値に切り捨てられ得、ただし、nはmよりも大きい。
[0081] 量子化の後に、ビデオエンコーダは、変換係数を走査して、量子化された変換係数を含む2次元行列から1次元ベクトルを生成し得る。走査は、アレイの前部により高いエネルギー(したがって、より低い周波数)係数を配置し、アレイの後部により低いエネルギー(したがって、より高い周波数)係数を配置するように設計され得る。いくつかの例では、ビデオエンコーダ20は、エントロピー符号化され得るシリアル化ベクトルを生成するために、量子化された変換係数を走査するためにあらかじめ定義された走査順序を利用し得る。他の例では、ビデオエンコーダ20は適応型走査を実行し得る。1次元ベクトルを形成するために量子化された変換係数を走査した後に、ビデオエンコーダ20は、たとえば、コンテキスト適応型可変長コーディング(CAVLC:context-adaptive variable length coding)、コンテキスト適応型バイナリ算術コーディング(CABAC:context-adaptive binary arithmetic coding)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC:syntax-based context-adaptive binary arithmetic coding)、確率間隔区分エントロピー(PIPE:Probability Interval Partitioning Entropy)コーディング、または別のエントロピー符号化方法に従って1次元ベクトルをエントロピー符号化し得る。ビデオエンコーダ20はまた、ビデオデータを復号する際にビデオデコーダ30が使用するための符号化されたビデオデータに関連するシンタックス要素をエントロピー符号化し得る。
[0082] CABACを実行するために、ビデオエンコーダ20は、コンテキストモデル内のコンテキストを、送信されるべきシンボルに割り当て得る。コンテキストは、たとえば、シンボルの近隣値が非0であるか否かに関係し得る。CAVLCを実行するために、ビデオエンコーダ20は、送信されるべきシンボルのための可変長コードを選択し得る。VLCにおけるコードワードは、比較的短いコードが優勢シンボル(more probable symbol)に対応し、より長いコードが劣勢シンボル(less probable symbol)に対応するように構成され得る。このようにして、VLCの使用は、たとえば、送信されるべき各シンボルのために等長コードワードを使用するよりも、ビット節約を達成し得る。確率決定は、シンボルに割り当てられたコンテキストに基づき得る。
[0083] ビデオエンコーダ20はさらに、ブロックベースのシンタックスデータ、フレームベースのシンタックスデータ、およびGOPベースのシンタックスデータなどのシンタックスデータを、たとえば、フレームヘッダ、ブロックヘッダ、スライスヘッダ、またはGOPヘッダ中でビデオデコーダ30に送り得る。GOPシンタックスデータは、それぞれのGOP中のフレームの数を記述し得、フレームシンタックスデータは、対応するフレームを符号化するために使用される符号化/予測モードを示し得る。
[0084] 上記で説明したように、各ツリーブロックはルーマサンプルとクロマサンプルの両方をさらに含み得る。クロマサブサンプリングは、ルーマ(たとえば、輝度)情報よりも少ないクロマ(たとえば、色)情報を与えることによってピクチャを符号化することの実施であり、これは、色差についての人間の視覚系の鋭敏さがルミナンスについてよりも低いことを利用する。たとえば、4:2:2(たとえば、Cb:Cr:Y)サンプリングでは、2つのクロマアレイの各々は同じ高さ(たとえば、Cb=2およびCr=2)とルーマアレイの1/2の幅(たとえば、Y=4)とを有する。別の例として、4:2:0サンプリングでは、2つのクロマアレイの各々はルーマアレイの1/2の高さと1/2の幅とを有する。また別の例では、4:4:4サンプリングでは、2つのクロマアレイの各々はルーマアレイと同じ高さおよび幅を有し得、または他の構成では、各々がモノクロームサンプリングされたピクチャとして別々に処理される、3つの色平面があり得る。たとえば、4:4:4サンプリングでは、平面フラグ(たとえば、separate_color_plane_flag)が0に等しい場合、2つのクロマアレイの各々はルーマアレイと同じ高さおよび幅を有し得る。そうではなく、平面フラグが1に等しい場合、3つの色平面はモノクロームサンプリングされたピクチャとして別々に処理され得る。
[0085] ビデオシーケンス中のルーマサンプルおよびクロマサンプルの各々は8ビットから14ビットまでを必要とし得る。ビット要件により、ビデオ符号化および復号システムは、ビットを節約するために、(上記で説明した)予測およびフィルタ処理の様々な手法を実装し得る。いくつかの構成では、ルーマアレイ中で使用されるビット数は、クロマアレイ中で使用されるビット数とは異なり得る。たとえば、インデックス(たとえば、chroma_format_idc)値が1に等しいとき、ピクチャ中のルーマサンプルおよびクロマサンプルの公称垂直および水平相対ロケーションは、たとえば4:2:0サンプリングで構成した複数のクロマサンプルの各々を囲むルーマサンプルの3×4アレイを備え得る。代替クロマサンプル相対ロケーションは、ビデオユーザビリティ情報、たとえば、HEVC規格の付属書類Eにおいて示され得る。別の例として、chroma_format_idcの値が2に等しい場合、クロマサンプルは、対応するルーマサンプルと共同配置(co-site)され得、ピクチャ中の公称ロケーションは4:2:2サンプリングの場合のように構成され得る。また別の例として、chroma_format_idcの値が3に等しいとき、アレイサンプルは、ピクチャのすべての場合について共同配置され得、ピクチャ中の公称ロケーションは4:4:4サンプリングの場合のように構成され得る。
[0086] 1つの例示的なコンポーネント間予測およびフィルタ処理手法は、再構成されたルーマサンプルによるクロマイントラ予測を備え得る。1つの例示的なコンポーネント間予測方法は線形モデル(LM:Linear Model)モードと呼ばれることがある。LMモードでは、クロマサンプルは、式1に示されているように、線形モデルによって同じブロックの再構成されたルーマサンプルから予測され得る。
上式で、PredC[x,y]は、ブロック中のクロマサンプルの予測を示し得、
は、ブロック中の再構成されたルーマサンプルを示し得、パラメータαおよびβは、近隣の再構成されたサンプルから導出され得る。
[0087] クロマ成分のサンプリング比はルーマ成分のそれの1/2であり得、たとえば、YUV420サンプリングでは、垂直方向において0.5ピクセル位相シフトを有し得る。再構成されたルーマは、式2に記載されているように、クロマ信号のサイズおよび位相に一致するように垂直方向および水平方向にダウンサンプリングされ得、ここで、パラメータαおよびβは、それぞれ式3および式4に記載されているように、近隣の再構成されたサンプルから導出され得る。
上式で、RecC(i)および
は、再構成されたクロマサンプル、およびターゲットブロックの周りのダウンサンプリングされたルーマサンプルを示し得、Iは、近隣データのサンプルの総数を示し得る。
[0088] さらに、式(3)および式(4)に関して、いくつかの例では、αおよびβの導出のために使用されるサンプルは左の因果的サンプルと上の因果的サンプルとを含み得、これは、総サンプル数を2のべき乗として維持し得る。たとえば、ターゲットN×Nクロマブロックについて、左の因果的サンプルと上の因果的サンプルの両方が利用可能であるとき、関係する総サンプル数は2Nであり得る。しかし、左の因果的サンプルまたは上の因果的サンプルのみが利用可能であるとき、関係する総サンプル数はNであり得る。
[0089] 別の例示的なコンポーネント間予測およびフィルタ処理プロセスはクロスチャネルイントラクロマ残差予測を含み得る。たとえば、そのようなプロセスは、再構成されたCb残差に基づいてCr残差を予測し得る。プロセスは、LMモードを使用してコーディングされたものを除いて、すべてのイントラブロックのために使用可能にされ得る。追加の制御フラグは必要とされないことがある。一例では、プロセスは以下のことを含み得る。(1)Crピクセルが通常イントラクロマ予測モードによって予測され得、ここにおいて、(x,y)に位置するピクセルについて、Crピクセルの予測はPredCr[x,y]として示され得る。次いで、(2)ステップ(1)中のイントラクロマ予測モードがLMモードに属さない場合、Crピクセルの変更予測が、コロケートPUのCbピクセルの再構成された残差によって生成され得る。一例では、予測式は、
であるような、(x,y)に位置するピクセルについての線形モデルであり得、ただし、ModPredCrはCrピクセルの変更予測であり得、
はCbピクセルの再構成された残差値であり得る。最後に、(3)(x,y)に位置するCrピクセルの最終予測は、FinalPredCr[x,y]=PredCr[x,y]+ModPredCr[x,y]として計算され得、ここで、パラメータαは固定値であり得る。一実施形態では、αのためのデフォルト値は−1/2であり得る。いくつかの実施形態では、クロスチャネルクロマ残差予測はLMモードでは適用されないことがある。
[0090] 別の例示的なコンポーネント間予測およびフィルタ処理手法として、システムはまた、コンポーネント間予測および/またはレイヤ間予測を実装し得る。上記でさらに説明したように、効率および品質を改善するために、レイヤ間予測のために使用されるクロマ成分は、対応するルーマ成分にハイパスフィルタを適用することによって拡張され得る。たとえば、ベースレイヤが、最初に、エンハンスメントレイヤと同じ空間解像度を含む参照レイヤを生成するためにアップサンプリングされ得る。次いで、参照レイヤにおいて、インター参照レイヤ中の各クロマピクセルは、アップサンプリングされたクロマ値にオフセットを加算することによって拡張され得る。オフセットは、ハイパスフィルタを通して周囲ルーマピクセル(たとえば、3×4ルーマピクセル)をフィルタ処理した結果に基づき得る。対応するベースレイヤルーマ平面からの高周波成分は、対応するベースレイヤ圧縮中に失われたエンハンスメントレイヤクロマエッジの復元を可能にする。
[0091] 各エンハンスメントレイヤについて、システムまたは方法は、レイヤ間参照ピクチャのCb平面およびCr平面の各々のために1つのハイパスフィルタを使用し得る。本システムまたは方法は、レイヤ間参照ピクチャにおける元のエンハンスメントレイヤクロマ平面と拡張クロマ平面との間の平均2乗誤差(たとえば、MSE)が最小限に抑えられるように、固有のハイパスフィルタ係数(たとえば、
および
)を決定し得る。平均2乗誤差を計算するために、本システムまたは方法は、たとえば、最小最小平均2乗誤差(LMMSE:Least Minimum Mean Squared Error)推定器(または他の推定器)を使用し得る。
および
を計算するための例示的な式が式(5)および式(6)に示されており、ただし、Cb、Cr、およびYは、それぞれクロマサブサンプリング値の(たとえば、Cbクロマ:Crクロマ:ルーマを表す)Cb:Cr:Y部分を表し、Sは、対応するCbまたはCrの元のエンハンスメントレイヤ値を表し、xおよびyは、対応するクロマピクセル位置およびルーマピクセル位置を表す。
上式で、Y、Cb、およびCrは、所与のレイヤ間参照ピクチャにおける3つの平面を表し得る。
[0092] 式(5)および式(6)に記載されているものなどの式を使用するとき、
および
は、量子化なしにシグナリングされないことがある実数値係数であり得る。本システムまたは方法は、係数を量子化するために量子化器(たとえば、16レベル一様量子化器など)を使用し得る。量子化器は、いくつかの構成では、量子化パラメータ(たとえば、QCbおよびQCr)および/またはシフトパラメータ(たとえば、NCbおよびNCr)など、いくつかのパラメータによって制御され得る。量子化器は、たとえば、式(7)および式(8)を使用して、量子化ステップサイズQSSを決定し得る。
[0093] いくつかの構成では、
および
は、式(9)および式(10)などの、決定された量子化ステップサイズを組み込む簡略式を使用して近似され得る。
[0094] 量子化されると、決定されたハイパスフィルタ係数(たとえば、4ビット精度をもつ3×4フィルタ)は整数fCbおよびfCrとして表され得る。fCbおよびfCrは、たとえば、−8から7までのダイナミックレンジ(たとえば、12個の値をもつ4ビット表現)を有し得る。
[0095] 量子化フィルタ係数、量子化パラメータ、およびシフトパラメータはフィルタパラメータと総称され得る。フィルタパラメータは、ヘッダが各クロマ平面のために使用され得るかどうかを示すバイナリフラグをさらに含み得るスライスヘッダ中で送信され得る。いくつかの構成では、2つのクロマ平面の各々について、フィルタパラメータをシグナリングするために65ビットが使用され得る。たとえば、65ビットは、1ビットフラグと、各々が4ビット精度をもち、合計48ビットになる、3×4フィルタ係数と、11ビット量子化パラメータ(大きさを表す10ビットおよび符号を表す1ビット)、たとえば、QCbと、5ビットシフトパラメータ、たとえば、NCbとを含み得る。より高いレベルのシンタックスでは、提案されたツールが現在のコーディングされたビデオシーケンス中で使用され得るかどうかを示すために、1つのバイナリフラグがシーケンスパラメータセット(SPS:sequence parameter set)に追加され得る。他の構成では、ヘッダが現在のコーディングされたビデオシーケンス中で使用され得るどうかを示すために、追加の1ビットバイナリフラグが含められ得る。他の実施形態では、カラーフォーマットに基づくフィルタ形状適応(filter shape adaptation)が使用され得る。さらなる実施形態では、効率を増加させるために、(3×4フィルタ係数ではなく)8点十字形(8-point cross-shape)フィルタフォーマットが使用され得る。他の実施形態では、様々なフィルタのいずれかが使用され得る。
[0096] フィルタパラメータのうちの1つまたは複数が、たとえば、レイヤ間参照ピクチャ中の、ルーマピクセルによって囲まれたCbクロマピクセルおよび/またはCrクロマピクセルを拡張するためにシグナリングされ得る。たとえば、fCbおよびfCrがシグナリングされ、式(11)および式(12)に示されているように、クロマオフセット中間値(たとえば、z(x,y))を生成し得、ただし、xおよびyはピクセル位置を表す。
[0097] クロマオフセット中間値z(x,y)は、次いで、量子化ステップサイズ値と、量子化パラメータとのz(x,y)の比較とを使用して、正常範囲クロマオフセット中間値(たとえば、o(x,y))にスケーリングされ得る。拡張ピクセルが、次いで、Cbenh(x,y)およびCrenh(x,y)によって表され、式(13)および式(14)に示されているように計算され得、ただし、Cb(x,y)およびCr(x,y)は、それぞれCbクロマピクセルおよびCrクロマピクセルについてのアップサンプリングされたクロマ値を表す。
[0098] 既存のビデオ符号化および復号システムおよび方法は、ピクチャレイヤにおいてフィルタパラメータの1つのセット(たとえば、色成分CbおよびCrごとに1つずつ)のみをシグナリングし、各セットをピクチャ全体に適用する。言い換えれば、既存のシステムは、Cb成分のためのフィルタパラメータの単一のセットをシグナリングし、ピクチャ全体中のCb成分のすべてを決定するためにパラメータの同じセットを使用し得る。同様に、Cr成分のためのフィルタパラメータの単一のセットがピクチャのためにシグナリングされ得、同じCrフィルタパラメータが、そのピクチャ全体中のCr成分のすべてを決定するために使用され得る。上記で説明したように、ピクチャ全体のためにフィルタパラメータの1つのセットのみをシグナリングすることは低品質ピクチャを生じ得る。たとえば、大解像度ピクチャ(たとえば、4K、または3840×2160ピクセルなど)は、異なるフィルタパラメータがそれのために有用であろう異なるコンテンツを有するいくつかの領域を含み得る。システムがピクチャ全体のために色成分ごとにフィルタパラメータの1つのセットのみを使用した場合、システムは最良のピクチャ品質を与えないことがある。
[0099] 上記および以下で説明するように、本開示のシステムおよび方法は、上記および以下で説明するように、レイヤ間参照ピクチャを決定すること、レイヤ間参照ピクチャを複数のリーフに区分すること、各個々のリーフのための固有のフィルタパラメータを決定すること、各個々のリーフのための固有のフィルタパラメータをシグナリングすること、および/または固有のパーティション情報と固有のフィルタパラメータとを使用してレイヤ間参照ピクチャを復号し、拡張することのうちの1つまたは複数によって、(たとえば、複雑度およびシグナリングコストを減らして)コンポーネント間フィルタ処理コーディング効率を改善し、(たとえば、クロマピクセルを拡張して)レイヤ間参照ピクチャ品質を改善する。さらに、いくつかの実施形態は、カラーフォーマットに基づいてフィルタ形状適応を実装し得る。
ビデオエンコーダ(Video Encoder)
[00100] 図2Aは、本開示で説明する態様による技法を実装し得るビデオエンコーダの一例を示すブロック図である。ビデオエンコーダ20は、HEVCの場合など、ビデオビットストリームのシングルレイヤを処理するように構成され得る。さらに、ビデオエンコーダ20は、限定はしないが、上記でならびに図4A、図4B、図5A、図5B、および図6に関して以下でより詳細に説明する、レイヤ間参照ピクチャを決定すること、レイヤ間参照ピクチャを複数のリーフに区分すること、各個々のリーフのための固有のフィルタパラメータを決定すること、各個々のリーフのための固有のフィルタパラメータをシグナリングすること、および/またはコンポーネント間フィルタ処理と、レイヤ間予測と、関係するプロセスとを実行する他の方法を含む、本開示の技法のいずれかまたはすべてを実行するように構成され得る。いくつかの実施形態では、(以下でさらに説明する)レイヤ間予測ユニット66が本技法のうちの1つまたはすべてを実行し得る。別の実施形態では、レイヤ間予測ユニット66は、本技法のうちの1つまたはすべてを実行するときに、(以下でさらに説明する)パーティションユニット48との組合せで動作し得る。本技法のうちの1つまたはすべてが、たとえば、上記および以下で説明するように、各個々のリーフのための固有のフィルタパラメータを使用してクロマピクセルをアップサンプリングすることによって、レイヤ間参照ピクチャ品質を向上させるために使用され得る。いくつかの実施形態では、フィルタパラメータは、上記および以下でさらに説明するように、フィルタ係数、量子化パラメータ、シフトパラメータ、または他のパラメータのうちの1つまたは複数を含み得る。ただし、本開示の態様はそのように限定されない。いくつかの例では、本開示で説明する技法は、ビデオエンコーダ20の様々な構成要素間で共有され得る。いくつかの例では、追加または代替として、プロセッサ(図示せず)が、本開示で説明する技法のいずれかまたはすべてを実行するように構成され得る。
[00101] 説明の目的で、本開示では、SVCおよび/またはHEVCコーディングのコンテキストにおいてビデオエンコーダ20について説明する。ただし、本開示の技法は他のコーディング規格または方法に適用可能であり得る。図2Aのエンコーダ20はコーデックのシングルレイヤを示している。しかしながら、図2Bに関してさらに説明するように、ビデオエンコーダ20の一部または全部はマルチレイヤコーデックに従う処理のために複製され得る。
[00102] ビデオエンコーダ20は、ビデオスライス内のビデオブロックの(イントラコーディング、インターコーディングまたはレイヤ間コーディングとも呼ばれる)イントラ予測、インター予測、およびレイヤ間予測を実行し得る。イントラコーディングは、所与のビデオフレームまたはピクチャ内のビデオの空間冗長性を低減または除去するために空間予測に依拠する。インターコーディングは、ビデオシーケンスの隣接フレームまたはピクチャ内のビデオの時間冗長性を低減または除去するために時間予測に依拠する。レイヤ間コーディングは、同じビデオコーディングシーケンス内の異なる(1つまたは複数の)レイヤ内のビデオに基づく予測に依拠する。イントラモード(Intra-mode)(Iモード)は、いくつかの空間ベースのコーディングモードのいずれかを指すことがある。単方向予測(uni-directional prediction)(Pモード)または双方向予測(bi-prediction)(Bモード)などのインターモード(Inter-mode)は、いくつかの時間ベースのコーディングモードのいずれかを指すことがある。
[00103] 図2Aに示されているように、ビデオエンコーダ20は、符号化されるべきビデオフレーム内の現在ビデオブロックを受信する。図2Aの例では、ビデオエンコーダ20は、モード選択ユニット40と、参照フレームメモリ64と、加算器50と、変換処理ユニット52と、量子化ユニット54と、エントロピー符号化ユニット56とを含む。モード選択ユニット40は、動き補償ユニット44と、動き推定ユニット42と、イントラ予測ユニット46と、レイヤ間予測ユニット66と、パーティションユニット48とを含む。参照フレームメモリ64は復号ピクチャバッファを含み得る。復号ピクチャバッファは、それの通常の意味を有する広義の用語であり、いくつかの実施形態では、参照フレームのビデオコーデック管理型データ構造を指す。
[00104] ビデオブロック再構成のために、ビデオエンコーダ20はまた、逆量子化ユニット58と、逆変換ユニット60と、加算器62とを含む。再構成されたビデオからブロッキネスアーティファクトを除去するためにブロック境界をフィルタ処理するためのデブロッキングフィルタ(図2Aに図示せず)も含まれ得る。所望される場合、デブロッキングフィルタは加算器62の出力をフィルタ処理し得る。追加のフィルタ(ループ内またはループ後)もデブロッキングフィルタに加えて使用され得る。そのようなフィルタは、簡潔のために示されていないが、所望される場合、(ループ内フィルタとして)加算器50の出力をフィルタ処理し得る。
[00105] 符号化プロセス中に、ビデオエンコーダ20は、コーディングされるべきビデオフレームまたはスライスを受信する。フレームまたはスライスは複数のビデオブロックに分割され得る。動き推定ユニット42および動き補償ユニット44は、時間予測を行うために、1つまたは複数の参照フレーム中の1つまたは複数のブロックに対する受信されたビデオブロックのインター予測コーディングを実行する。イントラ予測ユニット46は、代替的に、空間予測を行うために、コーディングされるべきブロックと同じフレームまたはスライス中の1つまたは複数の近隣ブロックに対する受信されたビデオブロックのイントラ予測コーディングを実行し得る。ビデオエンコーダ20は、たとえば、ビデオデータのブロックごとに適切なコーディングモードを選択するために、複数のコーディングパスを実行し得る。
[00106] その上、パーティションユニット48は、前のコーディングパスにおける前の区分方式の評価に基づいて、ビデオデータのブロックをサブブロックに区分し得る。たとえば、パーティションユニット48は、最初にフレームまたはスライスをLCUに区分し、レートひずみ(rate-distortion)分析(たとえば、レートひずみ最適化など)に基づいてLCUの各々をサブCUに区分し得る。モード選択ユニット40は、さらに、サブCUへのLCUの区分を示す4分木データ構造を生成し得る。4分木のリーフノードCUは、1つまたは複数のPUと1つまたは複数のTUとを含み得る。
[00107] モード選択ユニット40は、たとえば、誤差結果に基づいてコーディングモード、すなわち、イントラ、インター、またはレイヤ間予測モードのうちの1つを選択し、得られたイントラ、インター、またはレイヤ間コーディングされたブロックを、残差ブロックデータを生成するために加算器50に与え、参照フレームとして使用するための符号化されたブロックを再構成するために加算器62に与え得る。モード選択ユニット40はまた、動きベクトル、イントラモードインジケータ、パーティション情報、および他のそのようなシンタックス情報など、シンタックス要素をエントロピー符号化ユニット56に与える。
[00108] 動き推定ユニット42と動き補償ユニット44とは、高度に統合され得るが、概念的な目的のために別々に示されている。動き推定ユニット42によって実行される動き推定は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、現在フレーム(または他のコーディングされたユニット)内でコーディングされている現在ブロックに対する参照フレーム(または他のコーディングされたユニット)内の予測ブロックに対する現在ビデオフレームまたはピクチャ内のビデオブロックのPUの変位を示し得る。予測ブロックは、絶対差分和(SAD:sum of absolute difference)、2乗差分和(SSD:sum of square difference)、または他の差分メトリックによって決定され得るピクセル差分に関して、コーディングされるべきブロックにぴったり一致することがわかるブロックである。いくつかの例では、ビデオエンコーダ20は、参照フレームメモリ64に記憶された参照ピクチャのサブ整数ピクセル位置の値を計算し得る。たとえば、ビデオエンコーダ20は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置、または他の分数ピクセル位置の値を補間し得る。したがって、動き推定ユニット42は、フルピクセル位置と分数ピクセル位置とに関して動き探索を実行し、分数ピクセル精度で動きベクトルを出力し得る。
[00109] 動き推定ユニット42は、PUの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコーディングされたスライスにおけるビデオブロックのPUのための動きベクトルを計算する。参照ピクチャは、第1の参照ピクチャリスト(リスト0)または第2の参照ピクチャリスト(リスト1)から選択され得、それらの参照ピクチャリストの各々は、参照フレームメモリ64に記憶された1つまたは複数の参照ピクチャを識別する。動き推定ユニット42は、計算された動きベクトルをエントロピー符号化ユニット56と動き補償ユニット44とに送る。
[00110] 動き補償ユニット44によって実行される動き補償は、動き推定ユニット42によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成することに関与し得る。動き推定ユニット42と動き補償ユニット44とは、いくつかの例では機能的に統合され得る。現在ビデオブロックのPUのための動きベクトルを受信すると、動き補償ユニット44は、動きベクトルが参照ピクチャリストのうちの1つにおいて指す予測ブロックの位置を特定し得る。加算器50は、以下で説明するように、コーディングされている現在ビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成することによって、残差ビデオブロックを形成する。いくつかの実施形態では、動き推定ユニット42はルーマ成分に対して動き推定を実行し得、動き補償ユニット44は、クロマ成分とルーマ成分の両方のためにルーマ成分に基づいて計算された動きベクトルを使用し得る。モード選択ユニット40は、ビデオスライスのビデオブロックを復号する際にビデオデコーダ30が使用するためのビデオブロックとビデオスライスとに関連するシンタックス要素を生成し得る。
[00111] イントラ予測ユニット46は、上記で説明したように、動き推定ユニット42と動き補償ユニット44とによって実行されるインター予測の代替として、現在ブロックをイントラ予測または計算し得る。特に、イントラ予測ユニット46は、現在ブロックを符号化するために使用すべきイントラ予測モードを決定し得る。いくつかの例では、イントラ予測ユニット46は、たとえば、別個の符号化パス中に、様々なイントラ予測モードを使用して現在ブロックを符号化し得、イントラ予測ユニット46(または、いくつかの例では、モード選択ユニット40)は、テストされたモードから使用するのに適切なイントラ予測モードを選択し得る。
[00112] たとえば、イントラ予測ユニット46は、様々なテストされたイントラ予測モードについてレートひずみ分析を使用してレートひずみ値を計算し、テストされたモードの中で最良のレートひずみ特性を有するイントラ予測モードを選択し得る。レートひずみ分析は、概して、符号化されたブロックと、符号化されたブロックを生成するために符号化された元の符号化されていないブロックとの間のひずみ(または誤差)の量、ならびに符号化されたブロックを生成するために使用されるビットレート(すなわち、ビット数)を決定する。イントラ予測ユニット46は、どのイントラ予測モードがブロックについて最良のレートひずみ値を呈するかを決定するために、様々な符号化されたブロックのひずみおよびレートから比を計算し得る。
[00113] ブロックのためのイントラ予測モードを選択した後に、イントラ予測ユニット46は、ブロックのための選択されたイントラ予測モードを示す情報をエントロピー符号化ユニット56に与え得る。エントロピー符号化ユニット56は、選択されたイントラ予測モードを示す情報を符号化し得る。ビデオエンコーダ20は、複数のイントラ予測モードインデックステーブルおよび複数の変更イントラ予測モードインデックステーブル(コードワードマッピングテーブルとも呼ばれる)と、様々なブロックの符号化コンテキストの定義と、コンテキストの各々について使用すべき、最確イントラ予測モード、イントラ予測モードインデックステーブル、および変更イントラ予測モードインデックステーブルの指示とを含み得る構成データを送信ビットストリーム中に含め得る。
[00114] ビデオエンコーダ20はレイヤ間予測ユニット66を含み得る。レイヤ間予測ユニット66は、SVCにおいて利用可能である1つまたは複数の異なるレイヤ(たとえば、ベースレイヤまたは参照レイヤ)を使用して現在ブロック(たとえば、EL中の現在ブロック)を予測するように構成される。そのような予測はレイヤ間予測と呼ばれることがある。レイヤ間予測ユニット66は、レイヤ間冗長性を低減するために予測方法を利用し、それによって、コーディング効率を改善し、計算リソース要件を低減する。レイヤ間予測のいくつかの例としては、レイヤ間イントラ予測、レイヤ間動き予測、およびレイヤ間残差予測がある。レイヤ間イントラ予測は、エンハンスメントレイヤ中の現在ブロックを予測するために、ベースレイヤ中のコロケートブロックの再構成を使用する。レイヤ間動き予測は、エンハンスメントレイヤ中の動作を予測するために、ベースレイヤの動き情報を使用する。レイヤ間残差予測は、エンハンスメントレイヤの残差を予測するために、ベースレイヤの残差を使用する。ベースレイヤとエンハンスメントレイヤとが異なる空間解像度を有するとき、時間スケーリング関数を使用する空間動きベクトルスケーリングおよび/またはレイヤ間位置マッピングが、以下でより詳細に説明するように、レイヤ間予測ユニット66によって実行され得る。
[00115] ビデオエンコーダ20は、コーディングされている元のビデオブロックから、モード選択ユニット40からの予測データを減算することによって残差ビデオブロックを形成する。加算器50は、この減算演算を実行する1つまたは複数の構成要素を表す。変換処理ユニット52は、離散コサイン変換(DCT)または概念的に同様の変換などの変換を残差ブロックに適用して、残差変換係数値を備えるビデオブロックを生成する。変換処理ユニット52は、DCTと概念的に同様である他の変換を実行し得る。たとえば、離散サイン変換(DST)、ウェーブレット変換、整数変換、サブバンド変換または他のタイプの変換も使用され得る。
[00116] 変換処理ユニット52は、変換を残差ブロックに適用して、残差変換係数のブロックを生成し得る。変換は、残差情報をピクセル値領域から周波数領域などの変換領域に変換し得る。変換処理ユニット52は、得られた変換係数を量子化ユニット54に送り得る。量子化ユニット54は、ビットレートをさらに低減するために変換係数を量子化する。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって変更され得る。いくつかの例では、量子化ユニット54は、次いで、量子化された変換係数を含む行列の走査を実行し得る。代替的に、エントロピー符号化ユニット56が走査を実行し得る。
[00117] 量子化の後に、エントロピー符号化ユニット56は量子化された変換係数をエントロピー符号化する。たとえば、エントロピー符号化ユニット56は、コンテキスト適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)、確率間隔区分エントロピー(PIPE)コーディングまたは別のエントロピーコーディング技法を実行し得る。コンテキストベースエントロピーコーディングの場合、コンテキストは近隣ブロックに基づき得る。エントロピー符号化ユニット56によるエントロピーコーディングの後に、符号化されたビットストリームは、別のデバイス(たとえば、ビデオデコーダ30)に送信されるか、あるいは後で送信するかまたは取り出すためにアーカイブされ得る。
[00118] 逆量子化ユニット58および逆変換ユニット60は、(たとえば、参照ブロックとして後で使用するために)ピクセル領域において残差ブロックを再構成するために、それぞれ逆量子化および逆変換を適用する。動き補償ユニット44は、残差ブロックを参照フレームメモリ64のフレームのうちの1つの予測ブロックに加算することによって参照ブロックを計算し得る。動き補償ユニット44はまた、動き推定において使用するためのサブ整数ピクセル値を計算するために、再構成された残差ブロックに1つまたは複数の補間フィルタを適用し得る。加算器62は、参照フレームメモリ64に記憶するための再構成されたビデオブロックを生成するために、再構成された残差ブロックを、動き補償ユニット44によって生成された動き補償予測ブロックに加算する。再構成されたビデオブロックは、後続のビデオフレーム中のブロックをインターコーディングするために、動き推定ユニット42および動き補償ユニット44によって参照ブロックとして使用され得る。
マルチレイヤビデオエンコーダ(Multi-Layer Video Encoder)
[00119] 図2Bは、本開示で説明する態様による技法を実装し得るマルチレイヤビデオエンコーダ21の一例を示すブロック図である。ビデオエンコーダ21は、SHVCおよびマルチビューコーディングの場合など、マルチレイヤビデオフレームを処理するように構成され得る。さらに、ビデオエンコーダ21は、本開示の技法のいずれかまたはすべてを実行するように構成され得る。
[00120] ビデオエンコーダ21はビデオエンコーダ20Aとビデオエンコーダ20Bとを含み、それらの各々は図2Aのビデオエンコーダ20として構成され得、ビデオエンコーダ20に関して上記で説明した機能を実行し得る。さらに、参照番号の再利用によって示されるように、ビデオエンコーダ20Aおよび20Bは、復号ピクチャバッファをさらに含み得、「参照フレームメモリ(復号ピクチャバッファ)64」と呼ばれることがある、参照フレームメモリ(「RFM:reference frame memory」)64など、ビデオエンコーダ20としてシステムとサブシステムとのうちの少なくともいくつかを含み得る。ビデオエンコーダ21は、2つのビデオエンコーダ20Aおよび20Bを含むものとして示されているが、ビデオエンコーダ21は、そのようなものとして限定されず、任意の数のビデオエンコーダ20レイヤを含み得る。いくつかの実施形態では、ビデオエンコーダ21はアクセスユニット中の各ピクチャまたはフレームについてビデオエンコーダ20を含み得る。たとえば、5つのピクチャを含むアクセスユニットは、5つのエンコーダレイヤを含むビデオエンコーダによって処理または符号化され得る。いくつかの実施形態では、ビデオエンコーダ21は、アクセスユニット中のフレームよりも多くのエンコーダレイヤを含み得る。いくつかのそのような場合では、ビデオエンコーダレイヤのいくつかは、いくつかのアクセスユニットを処理するときに非アクティブであり得る。
[00121] ビデオエンコーダ20Aおよび20Bに加えて、ビデオエンコーダ21はリサンプリングユニット90を含み得る。リサンプリングユニット90は、場合によっては、たとえば、エンハンスメントレイヤを作成するために、受信されたビデオフレームのベースレイヤをアップサンプリングし得る。リサンプリングユニット90は、フレームの受信されたベースレイヤに関連する特定の情報をアップサンプリングするが、他の情報をアップサンプリングしないことがある。たとえば、リサンプリングユニット90は、ベースレイヤの空間サイズまたはピクセルの数をアップサンプリングし得るが、スライスの数またはピクチャ順序カウントは一定のままであり得る。場合によっては、リサンプリングユニット90は、受信されたビデオを処理しないことがあるか、および/または随意であり得る。たとえば、場合によっては、モード選択ユニット40がアップサンプリングを実行し得る。いくつかの実施形態では、リサンプリングユニット90は、レイヤをアップサンプリングすることと、スライス境界ルールおよび/またはラスタ走査ルールのセットに準拠するために1つまたは複数のスライスを再編成、再定義、変更、または調整することとを行うように構成される。アクセスユニット中のベースレイヤまたは下位レイヤをアップサンプリングするものとして主に説明したが、場合によっては、リサンプリングユニット90はレイヤをダウンサンプリングし得る。たとえば、ビデオのストリーミング中に帯域幅が減少した場合、フレームは、アップサンプリングされるのではなく、ダウンサンプリングされ得る。リサンプリングユニット90は、クロッピングおよび/またはパディング演算をも実行するようにさらに構成され得る。
[00122] リサンプリングユニット90は、下位レイヤエンコーダ(たとえば、ビデオエンコーダ20A)の参照フレームメモリ(復号ピクチャバッファ)64からピクチャまたはフレーム(またはピクチャに関連するピクチャ情報)を受信し、ピクチャ(または受信されたピクチャ情報)をアップサンプリングするように構成され得る。このアップサンプリングされたピクチャは、次いで、下位レイヤエンコーダと同じアクセスユニット中のピクチャを符号化するように構成された上位レイヤエンコーダ(たとえば、ビデオエンコーダ20B)のモード選択ユニット40に与えられ得る。場合によっては、上位レイヤエンコーダは、下位レイヤエンコーダから削除された1つのレイヤである。他の場合には、図2Bのレイヤ0ビデオエンコーダとレイヤ1エンコーダとの間に1つまたは複数の上位レイヤエンコーダがあり得る。
[00123] 場合によっては、リサンプリングユニット90は省略またはバイパスされ得る。そのような場合、ビデオエンコーダ20Aの参照フレームメモリ(復号ピクチャバッファ)64からのピクチャは、直接、または少なくともリサンプリングユニット90に与えられることなしに、ビデオエンコーダ20Bのモード選択ユニット40に与えられ得る。たとえば、ビデオエンコーダ20Bに与えられたビデオデータと、ビデオエンコーダ20Aの参照フレームメモリ(復号ピクチャバッファ)64からの参照ピクチャとが同じサイズまたは解像度である場合、参照ピクチャは、リサンプリングなしにビデオエンコーダ20Bに与えられ得る。
[00124] いくつかの実施形態では、ビデオエンコーダ21は、ビデオエンコーダ20Aにビデオデータを与える前に、ダウンサンプリングユニット94を使用して下位レイヤエンコーダに与えられるべきビデオデータをダウンサンプリングする。代替的に、ダウンサンプリングユニット94は、ビデオデータをアップサンプリングまたはダウンサンプリングすることが可能なリサンプリングユニット90であり得る。また他の実施形態では、ダウンサンプリングユニット94は省略され得る。
[00125] 図2Bに示されているように、ビデオエンコーダ21は、マルチプレクサ98、またはmuxをさらに含み得る。mux98は、ビデオエンコーダ21から合成ビットストリームを出力することができる。合成ビットストリームは、ビデオエンコーダ20Aおよび20Bの各々からビットストリームを取ることと、所与の時間において出力されるビットストリームを交替することとによって、作成され得る。場合によっては、2つの(または、3つ以上のビデオエンコーダレイヤの場合には、より多くの)ビットストリームからのビットが一度に1ビットずつ交替され得るが、多くの場合、ビットストリームは別様に合成され得る。たとえば、出力ビットストリームは、選択されたビットストリームを一度に1ブロックずつ交替することによって作成され得る。別の例では、出力ビットストリームは、ビデオエンコーダ20Aおよび20Bの各々から非1:1比のブロックを出力することによって作成され得る。たとえば、ビデオエンコーダ20Aから出力された各ブロックについて、2つのブロックがビデオエンコーダ20Bから出力され得る。いくつかの実施形態では、mux98からの出力ストリームはプリプログラムされ得る。他の実施形態では、mux98は、ソースデバイス12上のプロセッサからなど、ビデオエンコーダ21の外部のシステムから受信された制御信号に基づいて、ビデオエンコーダ20A、20Bからのビットストリームを合成し得る。制御信号は、ビデオソース18からのビデオの解像度またはビットレートに基づいて、チャネル16の帯域幅に基づいて、ユーザに関連するサブスクリプション(たとえば、有料サブスクリプション対無料サブスクリプション)に基づいて、またはビデオエンコーダ21から望まれる解像度出力を決定するための他のファクタに基づいて生成され得る。
ビデオデコーダ(Video Decoder)
[00126] 図3Aは、本開示で説明する態様による技法を実装し得るビデオデコーダの一例を示すブロック図である。ビデオデコーダ30は、HEVCの場合など、ビットストリームのシングルレイヤを処理するように構成され得る。
[00127] さらに、ビデオデコーダ30は、限定はしないが、上記でならびに図4A、図4B、図5A、図5B、および図7に関して以下でより詳細に説明する、レイヤ間参照ピクチャの個々のリーフを識別するレイヤ間参照ピクチャパーティション情報を受信すること、各個々のリーフのための固有のフィルタパラメータを受信すること、および固有のパーティション情報と固有のフィルタパラメータとを使用してレイヤ間参照ピクチャを復号し、拡張すること、および/またはコンポーネント間フィルタ処理と、レイヤ間予測と、関係するプロセスとを実行する他の方法を含む、本開示の技法のいずれかまたはすべてを実行するように構成され得る。いくつかの実施形態では、(以下でさらに説明する)レイヤ間予測ユニット75が本技法のうちの1つまたはすべてを実行し得る。本技法のうちの1つまたはすべてが、たとえば、上記および以下で説明するように、各個々のリーフのための固有のフィルタパラメータを使用してクロマピクセルをアップサンプリングすることによって、レイヤ間参照ピクチャ品質を向上させるために使用され得る。いくつかの実施形態では、フィルタパラメータは、上記および以下でさらに説明するように、フィルタ係数、量子化パラメータ、シフトパラメータ、または他のパラメータのうちの1つまたは複数を含み得る。ただし、本開示の態様はそのように限定されない。いくつかの例では、本開示で説明する技法は、ビデオデコーダ30の様々な構成要素間で共有され得る。いくつかの例では、追加または代替として、プロセッサ(図示せず)が、本開示で説明する技法のいずれかまたはすべてを実行するように構成され得る。
[00128] 説明の目的で、本開示では、HEVCコーディングのコンテキストにおいてビデオデコーダ30について説明する。ただし、本開示の技法は他のコーディング規格または方法に適用可能であり得る。図3Aのデコーダ30はコーデックのシングルレイヤを示している。しかしながら、図3Bに関してさらに説明するように、ビデオデコーダ30の一部または全部はマルチレイヤコーデックに従う処理のために複製され得る。
[00129] 図3Aの例では、ビデオデコーダ30は、エントロピー復号ユニット70と、動き補償ユニット72と、イントラ予測ユニット74と、レイヤ間予測ユニット75と、逆量子化ユニット76と、逆変換ユニット78と、参照フレームメモリ82と、加算器80とを含む。いくつかの実施形態では、動き補償ユニット72および/またはイントラ予測ユニット74がレイヤ間予測を実行するように構成され得、その場合、レイヤ間予測ユニット75は省略され得る。ビデオデコーダ30は、いくつかの例では、ビデオエンコーダ20(図2A)に関して説明した符号化パスとは概して逆の復号パスを実行し得る。動き補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルに基づいて予測データを生成し得、イントラ予測ユニット74は、エントロピー復号ユニット70から受信されたイントラ予測モードインジケータに基づいて予測データを生成し得る。参照フレームメモリ82は復号ピクチャバッファを含み得る。復号ピクチャバッファは、それの通常の意味を有する広義の用語であり、いくつかの実施形態では、参照フレームのビデオコーデック管理型データ構造を指す。
[00130] 復号プロセス中に、ビデオデコーダ30は、ビデオエンコーダ20から、符号化されたビデオスライスのビデオブロックと、関連するシンタックス要素とを表す符号化されたビデオビットストリームを受信する。ビデオデコーダ30のエントロピー復号ユニット70は、量子化された係数と、動きベクトルまたはイントラ予測モードインジケータと、他のシンタックス要素とを生成するために、ビットストリームをエントロピー復号する。エントロピー復号ユニット70は、動きベクトルと他の予測シンタックス要素とを動き補償ユニット72に転送する。ビデオデコーダ30は、ビデオスライスレベルおよび/またはビデオブロックレベルでシンタックス要素を受信し得る。
[00131] ビデオスライスがイントラコーティングされた(I)スライスとしてコーディングされるとき、イントラ予測ユニット74は、シグナリングされたイントラ予測モードと、現在フレームまたはピクチャの、前に復号されたブロックからのデータとに基づいて、現在ビデオスライスのビデオブロックのための予測データを生成し得る。ビデオフレームがインターコーディングされた(たとえば、B、PまたはGPB)スライスとしてコーディングされるとき、動き補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルと他のシンタックス要素とに基づいて、現在ビデオスライスのビデオブロックのための予測ブロックを生成する。予測ブロックは、参照ピクチャリストのうちの1つ内の参照ピクチャのうちの1つから生成され得る。ビデオデコーダ30は、参照フレームメモリ82に記憶された参照ピクチャに基づいて、デフォルト構成技法を使用して、参照フレームリスト、すなわち、リスト0とリスト1とを構成し得る。動き補償ユニット72は、動きベクトルと他のシンタックス要素とをパースすることによって現在ビデオスライスのビデオブロックのための予測情報を決定し、復号されている現在ビデオブロックのための予測ブロックを生成するために、その予測情報を使用する。たとえば、動き補償ユニット72は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード(たとえば、イントラまたはインター予測)と、インター予測スライスタイプ(たとえば、Bスライス、Pスライス、またはGPBスライス)と、スライスのための参照ピクチャリストのうちの1つまたは複数のための構成情報と、スライスの各インター符号化されたビデオブロックのための動きベクトルと、スライスの各インターコーディングされたビデオブロックのためのインター予測ステータスと、現在ビデオスライス中のビデオブロックを復号するための他の情報とを決定するために、受信されたシンタックス要素のいくつかを使用する。
[00132] 動き補償ユニット72はまた、補間フィルタに基づいて補間を実行し得る。動き補償ユニット72は、参照ブロックのサブ整数ピクセルの補間値を計算するために、ビデオブロックの符号化中にビデオエンコーダ20によって使用された補間フィルタを使用し得る。この場合、動き補償ユニット72は、受信されたシンタックス要素からビデオエンコーダ20によって使用された補間フィルタを決定し、予測ブロックを生成するために、その補間フィルタを使用し得る。
[00133] ビデオデコーダ30はレイヤ間予測ユニット75をも含み得る。レイヤ間予測ユニット75は、SVCにおいて利用可能である1つまたは複数の異なるレイヤ(たとえば、ベースレイヤまたは参照レイヤ)を使用して現在ブロック(たとえば、EL中の現在ブロック)を予測するように構成される。そのような予測はレイヤ間予測と呼ばれることがある。レイヤ間予測ユニット75は、レイヤ間冗長性を低減するために予測方法を利用し、それによって、コーディング効率を改善し、計算リソース要件を低減する。レイヤ間予測のいくつかの例としては、レイヤ間イントラ予測、レイヤ間動き予測、およびレイヤ間残差予測がある。レイヤ間イントラ予測は、エンハンスメントレイヤ中の現在ブロックを予測するために、ベースレイヤ中のコロケートブロックの再構成を使用する。レイヤ間動き予測は、エンハンスメントレイヤ中の動作を予測するために、ベースレイヤの動き情報を使用する。レイヤ間残差予測は、エンハンスメントレイヤの残差を予測するために、ベースレイヤの残差を使用する。ベースレイヤとエンハンスメントレイヤとが異なる空間解像度を有するとき、空間動きベクトルスケーリングおよび/またはレイヤ間位置マッピングが、以下でより詳細に説明するように、時間スケーリング関数を使用してレイヤ間予測ユニット75によって実行され得る。
[00134] 逆量子化ユニット76は、ビットストリーム中で与えられ、エントロピー復号ユニット70によって復号された、量子化された変換係数を逆量子化(inverse quantize)、すなわち、逆量子化(de-quantize)する。逆量子化プロセスは、量子化の程度を決定し、同様に、適用され得る逆量子化の程度を決定するための、ビデオスライス中の各ビデオブロックについてビデオデコーダ30によって計算される量子化パラメータQPYの使用を含み得る。
[00135] 逆変換ユニット78は、ピクセル領域において残差ブロックを生成するために、逆変換、たとえば、逆DCT、逆DST、逆整数変換、または概念的に同様の逆変換プロセスを変換係数に適用する。
[00136] 動き補償ユニット72が、動きベクトルと他のシンタックス要素とに基づいて現在ビデオブロックのための予測ブロックを生成した後、ビデオデコーダ30は、逆変換ユニット78からの残差ブロックを動き補償ユニット72によって生成された対応する予測ブロックと加算することによって、復号されたビデオブロックを形成する。加算器80は、この加算演算を実行する1つまたは複数の構成要素を表す。所望される場合、ブロッキネスアーティファクトを除去するために、復号されたブロックをフィルタ処理するためにデブロッキングフィルタも適用され得る。ピクセル遷移を平滑化するために、または場合によってはビデオ品質を改善するために、他のループフィルタも(コーディングループ中またはコーディングループ後のいずれかで)使用され得る。所与のフレームまたはピクチャ中の復号されたビデオブロックは、次いで、その後の動き補償のために使用される参照ピクチャを記憶する参照フレームメモリ82に記憶される。参照フレームメモリ82はまた、図1のディスプレイデバイス32などのディスプレイデバイス上での後の提示のために、復号されたビデオを記憶する。
マルチレイヤデコーダ(Multi-Layer Decoder)
[00137] 図3Bは、本開示で説明する態様による技法を実装し得るマルチレイヤビデオデコーダ31の一例を示すブロック図である。ビデオデコーダ31は、SHVCおよびマルチビューコーディングの場合など、マルチレイヤビデオフレームを処理するように構成され得る。さらに、ビデオデコーダ31は、本開示の技法のいずれかまたはすべてを実行するように構成され得る。
[00138] ビデオデコーダ31はビデオデコーダ30Aとビデオデコーダ30Bとを含み、それらの各々は図3Aのビデオデコーダ30として構成され得、ビデオデコーダ30に関して上記で説明した機能を実行し得る。さらに、参照番号の再利用によって示されるように、ビデオデコーダ30Aおよび30Bは、ビデオデコーダ30としてシステムとサブシステムとのうちの少なくともいくつかを含み得る。ビデオデコーダ31は、2つのビデオデコーダ30Aおよび30Bを含むものとして示されているが、ビデオデコーダ31は、そのようなものとして限定されず、任意の数のビデオデコーダ30レイヤを含み得る。いくつかの実施形態では、ビデオデコーダ31はアクセスユニット中の各ピクチャまたはフレームについてビデオデコーダ30を含み得る。たとえば、5つのピクチャを含むアクセスユニットは、5つのデコーダレイヤを含むビデオデコーダによって処理または復号され得る。いくつかの実施形態では、ビデオデコーダ31は、アクセスユニット中のフレームよりも多くのデコーダレイヤを含み得る。いくつかのそのような場合では、ビデオデコーダレイヤのいくつかは、いくつかのアクセスユニットを処理するときに非アクティブであり得る。
[00139] ビデオデコーダ30Aおよび30Bに加えて、ビデオデコーダ31はアップサンプリングユニット92を含み得る。いくつかの実施形態では、アップサンプリングユニット92は、フレームまたはアクセスユニットのための参照ピクチャリストに追加されるべきエンハンストレイヤを作成するために、受信されたビデオフレームのベースレイヤをアップサンプリングし得る。このエンハンストレイヤは参照フレームメモリ82に(たとえば、それの復号ピクチャバッファなどに)記憶され得る。いくつかの実施形態では、アップサンプリングユニット92は、図2Aのリサンプリングユニット90に関して説明した実施形態の一部または全部を含み得る。いくつかの実施形態では、アップサンプリングユニット92は、レイヤをアップサンプリングすることと、スライス境界ルールおよび/またはラスタ走査ルールのセットに準拠するために1つまたは複数のスライスを再編成、再定義、変更、または調整することとを行うように構成される。場合によっては、アップサンプリングユニット92は、受信されたビデオフレームのレイヤをアップサンプリングおよび/またはダウンサンプリングするように構成されたリサンプリングユニットであり得る。
[00140] アップサンプリングユニット92は、下位レイヤデコーダ(たとえば、ビデオデコーダ30A)の復号ピクチャバッファ(参照フレームメモリ)82からピクチャまたはフレーム(またはピクチャに関連するピクチャ情報)を受信し、ピクチャ(または受信されたピクチャ情報)をアップサンプリングするように構成され得る。このアップサンプリングされたピクチャは、次いで、下位レイヤデコーダと同じアクセスユニット中のピクチャを復号するように構成された上位レイヤデコーダ(たとえば、ビデオデコーダ30B)のモード選択ユニット71に与えられ得る。場合によっては、上位レイヤデコーダは、下位レイヤデコーダから削除された1つのレイヤである。他の場合には、図3Bのレイヤ0ビデオデコーダとレイヤ1デコーダとの間に1つまたは複数の上位レイヤデコーダがあり得る。
[00141] 場合によっては、アップサンプリングユニット92は省略またはバイパスされ得る。そのような場合、ビデオデコーダ30Aの復号ピクチャバッファ(参照フレームメモリ)82からのピクチャは、直接、または少なくともアップサンプリングユニット92に与えられることなしに、ビデオデコーダ30Bのモード選択ユニット71に与えられ得る。たとえば、ビデオデコーダ30Bに与えられたビデオデータと、ビデオデコーダ30Aの復号ピクチャバッファ(参照フレームメモリ)82からの参照ピクチャとが同じサイズまたは解像度である場合、参照ピクチャは、アップサンプリングなしにビデオデコーダ30Bに与えられ得る。さらに、いくつかの実施形態では、アップサンプリングユニット92は、ビデオデコーダ30Aの復号ピクチャバッファ(参照フレームメモリ)82から受信された参照ピクチャをアップサンプリングまたはダウンサンプリングするように構成されたリサンプリングユニット90(図2B参照)であり得る。
[00142] 図3Bに示されているように、ビデオデコーダ31は、デマルチプレクサ99、またはdemuxをさらに含み得る。demux99は符号化されたビデオビットストリームを複数のビットストリームにスプリットすることができ、demux99によって出力された各ビットストリームは異なるビデオデコーダ30Aおよび30Bに与えられる。複数のビットストリームは、ビットストリームを受信することによって作成され得、ビデオデコーダ30Aおよび30Bの各々は、所与の時間においてビットストリームの一部分を受信する。場合によっては、demux99において受信されるビットストリームからのビットは、ビデオデコーダの各々(たとえば、図3Bの例ではビデオデコーダ30Aおよび30B)の間で一度に1ビットずつ交替され得るが、多くの場合、ビットストリームは別様に分割される。たとえば、ビットストリームは、一度に1ブロックずつビットストリームを受信するビデオデコーダを交替することによって分割され得る。別の例では、ビットストリームは、非1:1比のブロックによって、ビデオデコーダ30Aおよび30Bの各々に分割され得る。たとえば、ビデオデコーダ30Aに与えられる各ブロックについて、2つのブロックがビデオデコーダ30Bに与えられ得る。いくつかの実施形態では、demux99によるビットストリームの分割はプリプログラムされ得る。他の実施形態では、demux99は、宛先デバイス14上のプロセッサからなど、ビデオデコーダ31の外部のシステムから受信された制御信号に基づいてビットストリームを分割し得る。制御信号は、入力インターフェース28からのビデオの解像度またはビットレートに基づいて、チャネル16の帯域幅に基づいて、ユーザに関連するサブスクリプション(たとえば、有料サブスクリプション対無料サブスクリプション)に基づいて、またはビデオデコーダ31によって取得可能な解像度を決定するための他のファクタに基づいて生成され得る。
4分木構造(Quadtree Structure)
[00143] 図4Aに、(410と総称される)4つの等しい4分木リーフ410A〜410Dを含む4分木構造に(たとえば、ビデオエンコーダ20によって)区分された例示的なレイヤ間参照ピクチャ400を示す。他の実施形態では、レイヤ間参照ピクチャ400は、4分木リーフ構造とは異なる区分構成に区分され得る。一実施形態では、レイヤ間参照ピクチャ400は、同じ空間解像度をもつベースレイヤのアップサンプリングされたバージョンを備え得る。レイヤ間参照ピクチャ400はレイヤ間参照ピクチャ幅405Wとレイヤ間参照ピクチャ高さ405Hとを含む。同様に、4分木リーフ410の各々は幅415Wと高さ415Hとを有する。一実施形態では、例示的な4K(たとえば、3840×2160ピクセル)ピクチャでは、レイヤ間参照ピクチャ幅405Wは3,840ピクセルを備え得、レイヤ間参照ピクチャ高さ405Hは2,160ピクセルを備え得る。この例では、4分木リーフ幅415Wは1,920ピクセルを備え得、4分木リーフ高さ415Hは1,080ピクセルを備え得る。いくつかの実施形態では、ビデオエンコーダ20は、図4Bおよび図4Cに関して説明するように、様々な深度指定(depth specification)に基づいて4分木リーフ410の各々を4分木サブリーフにさらに区分し得る。他の実施形態では、ビデオエンコーダ20は、最小コーディングユニットサイズ(smallest coding unit size)または最大コーディングユニットサイズ(largest coding unit size)に基づいてレイヤ間参照ピクチャ400を区分し得る。
[00144] 上記で説明したように、レイヤ間参照ピクチャ400の4分木構造は、ビデオエンコーダ20が、レイヤ間参照ピクチャ400全体のためにフィルタパラメータの1つのセットをシグナリングするのではなく、各4分木リーフ410のための固有のコンポーネント間フィルタパラメータをシグナリングすることを可能にし得る。上記で説明したように、フィルタパラメータは、フィルタ係数、量子化パラメータ、シフトパラメータ、および/または他のパラメータのうちの1つまたは複数を含み得る。いくつかの実施形態では、ピクチャ全体またはピクチャの部分は同じまたは同様の固有のフィルタパラメータを共有し得る。他の実施形態では、ピクチャ全体またはピクチャの部分は固有のフィルタパラメータの一部分(たとえば、量子化パラメータ)を共有し得、他の固有のフィルタパラメータは異なり得る(たとえば、フィルタ係数)。いずれの場合も、ビデオエンコーダ20は、固有のフィルタパラメータを、どの空間的に近隣する4分木リーフ410がどの程度まで共有するかを決定し得る。たとえば、ビデオエンコーダ20は、4分木リーフ410Aのための固有のフィルタパラメータの一部または全部が、4分木リーフ410Bのための固有のフィルタパラメータの一部または全部と同じまたは同様であると決定し得る。その場合、効率を増加させるために、ビデオエンコーダ20は、4分木リーフ410Aと4分木リーフ410Bとが、シグナリングされたフィルタパラメータの一部または全部を共有し得るように、フィルタパラメータの一部または全部を4分木リーフ410Aまたは4分木リーフ410Bのうちの1つにシグナリングし、4分木リーフ410Aと4分木リーフ410Bとを(たとえば、マージ演算をシグナリングすることによって)マージし得る。代替的に、ビデオエンコーダ20は、フィルタパラメータの一部または全部(たとえば、量子化パラメータおよびシフトパラメータのみ)をいくつかの子ノード(たとえば、4分木リーフ410A〜410D)の親ノード(たとえば、4分木ルートノード)にシグナリングするが、他のフィルタパラメータ(たとえば、フィルタ係数)を子ノードの各々に個別にシグナリングし得る。代替的に、ベース情報がルートノードにおいてシグナリングされ得、関係するデルタ(たとえば、差分)情報がそれの4分木リーフにおいてシグナリングされ得る。他の実施形態では、複数(たとえば、3つ以上)の4分木リーフ410(または、図4Bに関して以下で説明するように、4分木サブリーフ)が、同じまたは同様の固有のフィルタパラメータの一部または全部を共有し得る。その場合、ビデオエンコーダ20は、複数の4分木リーフおよび/または4分木サブリーフをマージすることと、それらが使用するための、フィルタパラメータの一部または全部の1つのセットの一部分をシグナリングすることとによって、効率を同様に増加させ得る。一実施形態では、4分木リーフおよび/またはサブリーフは、それらのすぐ左またはすぐ上の近隣4分木リーフおよび/またはサブリーフにマージされ得る。この例では、ビデオエンコーダ20は、ビットストリーム中でマージ演算をシグナリングし得る。他の実施形態では、マージ演算は各リーフおよび/またはサブリーフのためにシグナリングされ得る。また他の実施形態では、ビデオエンコーダ20は、最大コーディングユニット(CU)レベルにおいて、最小コーディングユニット(CU)レベルにおいて、シーケンスパラメータセット(SPS)中で、ピクチャパラメータセット(PPS:Picture Parameter Set)中で、および/または最大予測ユニット(PU)レベルにおいてコンポーネント間フィルタパラメータをシグナリングし得る。たとえば、大きいピクチャ(たとえば、4K解像度ピクチャ)の場合、ビデオエンコーダ20が、複数の4分木リーフの各々にではなく、最大コーディングユニットの各々にフィルタパラメータをシグナリングすることがより効率的であり得る。
[00145] ビデオエンコーダ20がコンポーネント間フィルタパラメータをシグナリングすることに関して、パラメータ関数(たとえば、inter_comp_filter_param(idx))がいくつかの変数および/またはパラメータに関連付けられ得る。たとえば、inter_comp_filter_cb_flag[idx]関数および/またはinter_comp_filter_cr_flag[idx]関数は、フィルタパラメータが特定の4分木パーティションのためにシグナリングされ得るかどうかを(それらのインデックスを介して)指定し得る。たとえば、これらの例示的な関数インデックスが1に等しい場合、ビデオエンコーダ20は、CbピクセルおよびCrピクセル(それぞれ)のためのフィルタパラメータをシグナリングし得る。代替的に、これらの例示的な関数インデックスが0に等しい場合、ビデオエンコーダ20は、CbピクセルおよびCrピクセル(それぞれ)のためのフィルタパラメータをシグナリングしないことがある。さらなる例として、abs_multi_factor_cb_minus1[idx]関数およびabs_multi_factor_cr_minus1[idx]関数は、4分木パーティションidxについて、それぞれ(上記の式7および式8関する)QCbおよびQCrのための絶対値を(それらのインデックスを介して)指定し得る。一実施形態では、これらの関数が存在しないとき、それらの値は0として推論され得る。同様に、sign_multi_factor_cb[idx]関数およびsign_multi_factor_cr[idx]関数は、それぞれQCbおよびQCrの符号を(それらのインデックスを介して)指定し得る。一実施形態では、これらの関数が存在しないとき、それらの値は0として推論され得る。同様に、shift_cb[idx]関数およびshift_cr[idx]関数は、4分木パーティションidxについて、それぞれ(上記の式7および式8関する)NCbおよびNCrの値を(それらのインデックスを介して)指定し得る。一実施形態では、これらの関数が存在しないとき、それらの値は、あらかじめ定義された値、たとえば、15として推論され得る。図1に関して上記で説明したように、ビデオエンコーダ20は8点十字形様式でフィルタ係数をシグナリングし得る。その場合、たとえば、inter_comp_filter_cb[idx][i]関数およびinter_comp_filter_cr[idx][i]関数は、それぞれCbピクセルおよびCrピクセルのための8点十字の最初の7つの係数を指定し得る。この例では、8番目の係数は最初の7つの係数の和の負値として推論され得る。一実施形態では、これらの関数が存在しないとき、それらは0として推論され得る。
[00146] 例示的なinter_comp_filter_param(idx)関数は、少なくとも以下を含み得る。
ここで、変数およびパラメータのうちのいくつかは、図4Bに関して以下でさらに説明され得る。
[00147] 図1に関して上記でさらに説明したように、ビデオエンコーダ20は、たとえば、ピクチャレベルにおいてスライスヘッダまたは適応パラメータセット(APS)を介してコンポーネント間フィルタパラメータをシグナリングし得る。ビデオエンコーダ20が、頻繁に変動する(たとえば、分化する)フィルタパラメータ、たとえば、量子化パラメータおよび/またはフィルタ係数をシグナリングするためにスライスヘッダまたはAPSを使用することは有益であり得る。一実施形態では、ビデオエンコーダ20がスライスヘッダ中でいくつかのフィルタパラメータをシグナリングしたとき、同じピクチャ内のすべてのスライスは同じいくつかのフィルタパラメータを共有し得る。いくつかの実施形態では、ビデオエンコーダ20は、ピクチャごとにコンポーネント間フィルタパラメータの一部または全部をシグナリングする必要はないことがある。たとえば、8点十字形フィルタの係数および/またはシフトパラメータはピクチャごとの更新を必要としないことがある。その場合、ビデオエンコーダ20は、シーケンスパラメータセット(SPS)および/またはピクチャパラメータセット(PPS)中でそのようなフィルタパラメータをデフォルト値としてシグナリングし得る。効率を増加させるために、ビデオエンコーダ20は、適用可能なとき、デフォルト値に対する差分(difference)(たとえば、差分(differential))のみをシグナリングし得る。
[00148] ビデオエンコーダ20がいくつかのフィルタパラメータについての差分(たとえば、差分的にコーディングされ得る増倍係数および/またはシフト係数)をシグナリングすることに関して、パラメータ関数(たとえば、inter_comp_filter_param(idx))が、変更され、いくつかの変数および/またはパラメータに関連付けられ得る。たとえば、delta_multi_factor_cb[idx]関数およびdelta_multi_factor_cr[idx]関数は、4分木パーティションidxについて(式7および式8に関する)QCbおよびQCrのためのデルタ(たとえば、差分)を指定し得る。差分は、すぐ左、すぐ上、および/またはすぐ左上の4分木リーフに関して計算され得る。一実施形態では、これらの位置に近隣4分木リーフが存在しない場合、差分は0であり得る。一実施形態では、関数が存在しないとき、それらの値も0であるものと推論され得る。同様に、delta_shift_cb[idx]関数およびdelta_shift_cr[idx]関数は、4分木パーティションidxについて(式7および式8に関する)NCbおよびNCrのためのデルタ(たとえば、差分)を指定し得る。差分は、すぐ左、すぐ上、および/またはすぐ左上の4分木リーフに関して計算され得る。一実施形態では、これらの位置に近隣4分木リーフが存在しない場合、差分は0であり得る。一実施形態では、関数が存在しないとき、それらの値も0であるものと推論され得る。
[00149] 例示的な変更inter_comp_filter_param(idx)関数は以下を含み得る。
ここで、変数およびパラメータのうちのいくつかは、上記でさらに説明され、および/または図4Bに関して以下で説明され得る。
[00150] ビデオエンコーダ20が、4分木リーフをそれらのすぐ左またはすぐ上の近隣4分木リーフおよび/またはサブリーフにマージすることに関して、スライスヘッダ関数(たとえば、slice_header())がいくつかの変数および/またはパラメータに関連付けられ得る。たとえば、slice_max_inter_comp_quadtree_depth変数は、図4Bに関してさらに説明するように、最大4分木深度(maximum quadtree depth)を表し得る。さらに、quadtree_merge_idc[idx]変数は、近隣4分木が共通フィルタパラメータを共有するかどうかを指定するためのインデックスを表し得る。一実施形態では、quadtree_merge_idc[idx]のインデックスは、両端値を含めて[0,2]の範囲内にあり得、トランケートされた単項コーディングでコーディングされ得る。たとえば、0のインデックスは、現在の4分木パーティションのコンポーネント間フィルタパラメータそれの左ネイバーのものと同じのことを示し得る。さらに、1のインデックスは、現在の4分木パーティションのフィルタパラメータがそれの上ネイバーのものと同じであることを示し得る。さらに、2のインデックスは、現在の4分木パーティションのフィルタパラメータがビデオエンコーダ20によってシグナリングされ得ることを示し得る。
[00151] 例示的なslice_header()関数は以下を含み得る。
ここで、変数およびパラメータのうちのいくつかは、上記でさらに説明され、および/または図4Bに関して以下で説明され得る。
[00152] 同様に、レイヤ間参照ピクチャ400が2つ以上のパーティションを含むとき(たとえば、それが、4分木リーフ410などの4分木リーフに区分されたとき)、ビデオエンコーダ20は、別の4分木パーティションのフィルタパラメータを予測するために、1つの4分木パーティションのフィルタパラメータを使用し得る。たとえば、ビデオエンコーダ20は、4分木リーフ410Aにフィルタパラメータをシグナリングし、次いで、それらのフィルタパラメータに基づいて、4分木リーフ410Bのために使用されるべきフィルタパラメータを「予測(predict)」し得る。このプロセスは、ビデオエンコーダ20が4分木リーフ410Bに差分フィルタパラメータ情報(もしあれば)のみをシグナリングすることを可能にすることによって、コーディング効率を増加させ得る。他の実施形態では、ビデオエンコーダ20がビットストリーム中でフィルタパラメータのインデックスセットをシグナリングし得るように、コンポーネント間フィルタパラメータの一部または全部があらかじめ定義(たとえば、ハードコーディング)され得る。
4分木深度(Quadtree Depth)
[00153] 図4Bに、さらなる4分木サブリーフ(たとえば、420と総称される420A〜420L)に区分された(図4Aに関して説明した)レイヤ間参照ピクチャ400を示す。この例では、4分木サブリーフのうちのいくつかは、さらなる4分木サブリーフ(たとえば、430と総称される430A〜430L)にさらに区分されている。さらに、この例では、1つのさらなる4分木サブリーフ(たとえば、430J)は、なおさらなる4分木サブリーフ(たとえば、440と総称される440A〜440D)になおさらに区分されている。他の実施形態では、4分木リーフは、図4Cに関して説明するように、4分木リーフ内のコンテンツに応じておよび/またはターゲット4分木深度に応じて、いくつもの他の方法で区分される(または区分されない)ことがある。図4Aに関して上記で説明したように、レイヤ間参照ピクチャ400はレイヤ間参照ピクチャ幅405Wとレイヤ間参照ピクチャ高さ405Hとを備え、4分木リーフ410の各々は4分木リーフ幅415Wと4分木リーフ高さ415Hとを備える。同様に、4分木サブリーフ420の各々は4分木サブリーフ幅425Wと4分木サブリーフ高さ425Hとを備える。4K(たとえば、3840×2160ピクセル)ピクチャの例では、4分木サブリーフ幅425Wは960ピクセルを備え得、4分木サブリーフ高さ425Hは540ピクセルを備え得る。同様に、4分木サブリーフ430および440の各々は、それぞれ4分木サブリーフ幅435Wおよび445Wと、それぞれ4分木サブリーフ高さ435Hおよび445Hとを備える。4K(たとえば、3840×2160ピクセル)ピクチャの例では、4分木サブリーフ幅435Wおよび445Wは、それぞれ480ピクセルおよび240ピクセルを備え得、4分木サブリーフ高さ435Hおよび445Hは、それぞれ270ピクセルおよび135ピクセルを備え得る。説明する例では、ビデオエンコーダ20は、ピクセル値に基づいて4分木パーティションサイズを決定し得る。たとえば、1深度4分木は、全ピクチャ(たとえば、レイヤ間参照ピクチャ400)を2×2様式で(たとえば、図4Aに示されたパーティション構成でなど)4つの部分に均等に区分し得る。他の実施形態では、ビデオエンコーダ20は、最小コーディングユニットまたは最大コーディングユニットに基づいて4分木パーティションサイズおよび/または4分木パーティションを決定し得る。以下でさらに説明するように、4分木構造は、4分木深度、4分木深度よりも小さい深度をもつノードのためにシグナリングされ得るスプリッティングフラグ、および/またはそれの近隣パーティションにマージすべきかどうかを示すために各4分木リーフノードについてシグナリングされ得るマージ演算のうちの1つまたは複数によって表され得る。
[00154] 上述のように、いくつかの実施形態では、ビデオエンコーダ20は、上記および以下で説明するように、スプリッティングフラグ(たとえば、スプリットごとに1つずつ)に基づいて、あるいはいくつかの他の区分および/または深度指定のいずれかに基づいて、4分木サブリーフの各々をさらなる4分木サブリーフにさらに区分し続け得る。ビデオエンコーダ20がレイヤ間参照ピクチャ400を4分木リーフおよび/またはサブリーフに区分する程度は「4分木深度(quadtree depth)」と呼ばれることがある。必要な場合、4分木深度指定に従って、ビデオエンコーダ20は、ピクチャの各ピクセルがそれ自体の4分木サブリーフ内に含まれるまで、さらなる4分木サブリーフの各々をさらに区分し続け得る。
[00155] いくつかの実施形態では、ビデオエンコーダ20は、4分木リーフおよび/または4分木サブリーフの全部ではないが一部をさらなる4分木サブリーフに区分し得る。たとえば、4分木深度指定に応じて、図示のように、ビデオエンコーダ20は、4分木サブリーフ420Eをさらなる4分木サブリーフにさらに区分することがあるが、4分木サブリーフ420Fをさらに区分しないことがある。一実施形態では、ビデオエンコーダ20は、すべてのリーフが同じ4分木深度を共有するように、シーケンスレベルにおいて4分木深度をシグナリングし得る。別の実施形態では、ビデオエンコーダ20は、各リーフのための4分木深度を個々にシグナリングし得る。その場合、ビデオエンコーダ20は、ピクチャレベルにおける4分木深度のエントロピーコーディングがより効率的になり得るように、シーケンスレベルにおいて最大4分木深度をもシグナリングし得る。一実施形態では、冗長を回避するために、ビデオエンコーダ20は、ビデオエンコーダ20が領域全体のために1つの4分木深度をシグナリングし得るように、同様に特徴づけられたリーフ(たとえば、等しいかまたは同様である一部または全部のフィルタパラメータを共有し得るリーフ)を「領域(region)」にグループ化し得る。また別の実施形態では、最大4分木深度はコーデックにおいてハードコーディングされ得る。さらにまた別の実施形態では、ビデオエンコーダ20は、スプリットフラグを使用して4分木深度をシグナリングし得る。その場合、ビデオエンコーダ20は、各リーフおよび/またはサブリーフについて最大4分木深度に到達するまで、各リーフおよび/またはサブリーフにスプリットフラグをシグナリングし得る。たとえば、図示の例では、ビデオエンコーダ20は、ピクチャ(たとえば、レイヤ間参照ピクチャ400全体)の第1のレイヤのためのパーティションを示すためにスプリットフラグをシグナリングし得、これは、4分木リーフ410の各々を生じ得る。ビデオエンコーダ20は、次いで、第1の4分木リーフ(たとえば、410A)が区分されるべきであることを示すためにスプリットフラグをシグナリングし得、これは、一例として示されているように、4分木サブリーフ420を生じ得る。ビデオエンコーダ20は、次いで、一例として示されているように、第2の4分木リーフ(たとえば、420B)が区分されるべきでないことを示すためにスプリットフラグをシグナリングし得る。このプロセスは、図において一例として示されているように、4分木リードおよび/またはサブリーフのすべてが深度指定に従って完全に区分されるまで続き得る。
[00156] ビデオエンコーダ20がシーケンスパラメータセット(SPS)中で最大4分木深度をシグナリングする場合、4分木深度および関係するコンポーネント間フィルタパラメータは、たとえば、以下で説明するように変更され得るスライスヘッダ中で、ピクチャレベルにおいて更新され得る。例示的なシンタックス(たとえば、seq_parameter_set_rbsp())は、シーケンスレベルにおいて最大4分木深度を指定し得る、(ue(v)記述子をもつ)seq_max_inter_comp_quadtree_depthパラメータを含み得る。一実施形態では、seq_max_inter_comp_quadtree_depth変数は[0,2]の範囲を有し得る。例示的なシンタックスは以下を含む。
[00157] 最大4分木深度をシグナリングするための例示的なシンタックスは以下を含み得る。
ここで、slice_max_inter_comp_quadtree_depth変数は、(たとえば、両端値を含めて[0,seq_max_inter_comp_quadtree_depth]の範囲内の現在ピクチャのための最大4分木深度を指定し得、ここで、変数およびパラメータのうちのいくつかについて、図4Aに関して上記でさらに説明していることがある。
ターゲット4分木深度(Target Quadtree Depth)
[00158] 図4Cに、さらなる4分木サブリーフ(たとえば、420と総称される420A〜420P)に区分された(図4Aに関して説明した)レイヤ間参照ピクチャ400を示す。上記で説明したように、ビデオエンコーダ20は、ターゲット4分木深度Mに従ってレイヤ間参照ピクチャ400を区分し得、ただし、Mは正の整数である。いくつかの実施形態では、このようにしてレイヤ間参照ピクチャ400を区分することは、コーディング複雑度を低減し得るが、より多くのビットを必要とし得る。(たとえば、図4A〜図4Cに示された)4分木リーフ区分構成の例では、区分が完了した後、レイヤ間参照ピクチャ400は4M個の等しいサイズの4分木リーフパーティションを有し得る。たとえば、図4Aに示されたパーティション構成では、ターゲット4分木深度は1であり、2×2様式で構成された41=4つの等しいサイズの4分木リーフパーティション(たとえば、410A〜410D)を生じ得る。たとえば、図4Cに示された例では、ターゲット4分木深度は2であり、4×4様式で構成された42=16個の等しいサイズの4分木リーフパーティション(たとえば、420A〜420P)を生じ得る。図4Aに関して上記で説明したように、レイヤ間参照ピクチャ400はレイヤ間参照ピクチャ幅405Wとレイヤ間参照ピクチャ高さ405Hとを備え、4分木リーフ410の各々は4分木リーフ幅415Wと4分木リーフ高さ415Hとを備える。同様に、4分木サブリーフ420の各々は4分木サブリーフ幅425Wと4分木サブリーフ高さ425Hとを備える。ビデオエンコーダ20は、ターゲット4分木深度に到達するまで、4分木リーフパーティションを等しく区分し続け得る。たとえば、ターゲット4分木深度が3に等しい場合、ビデオエンコーダ20は、8×8様式で構成された43=64個の等しいサイズの4分木リーフパーティションを有するようにレイヤ間参照ピクチャ400を区分し得る(図示せず)。
クロマおよびルーマピクセル構成(Chroma and Luma Pixel Arrangement)
[00159] 図5Aに、例示的な区分構成500中の例示的なクロマおよびルーマ構成を示す。一実施形態では、区分構成500は、上記で説明したように4分木リーフ構造であり得る。4分木リーフ構造を備える区分構成500の例では、例示的な区分構成500は、(図4A〜図4Cに関して説明した、および以下でまとめて4分木リーフと呼ぶ)4分木リーフおよび/またはサブリーフのうちの1つの1つの部分を表し得る。4分木リーフの各々は複数のクロマピクセルを含んでいることがあり、図示された例示的な区分構成500は、1つの特定の4分木リーフ中にあるクロマピクセルのうちの1つ(たとえば、Cbクロマピクセルおよび/またはCrクロマピクセルを備え得る、円によって表されたクロマピクセル520)を含み得る。例示的な区分構成500は、対応するクロマピクセル520に「関係(related)」し得る、この図では正方形によって表されたルーマピクセル510をさらに含み得る。一実施形態では、図示されたルーマピクセル510はクロマピクセル520と同じ4分木リーフ内にあり得る。他の実施形態では、ルーマピクセル510のうちの1つまたは複数は他の4分木リーフ内にあり得る。この例では、図示された相対クロマおよびルーマピクセル位置は4:2:0カラーサブサンプリングフォーマットを表し得、ここにおいて、「関係」するルーマピクセル510の3×4セットはクロマピクセル520を囲む。他の実施形態では、クロマピクセルとルーマピクセルとはいくつもの他のカラーサブサンプリングフォーマット(たとえば、4:4:4、4:2:2など)で構成され得る。いくつかの実施形態では、ビデオエンコーダ20は、上記でおよび図5Bに関して以下でさらに説明するように、クロマピクセル520を拡張する際に使用するために、クロマピクセル520および/またはルーマピクセル510のプロパティに基づいてコンポーネント間フィルタパラメータを決定し得る。
フィルタパラメータシグナリングおよびパディング(Filter Parameter Signaling and Padding)
[00160] 図5Bに、シグナリングされたフィルタパラメータ530の構成を含む、(図5Aに関して説明したように1つの4分木リーフおよび/またはサブリーフの1つの部分を表し得る)例示的な区分構成500中の例示的なクロマおよびルーマ構成を示す。上記で説明したように、正方形アイコンの各々はルーマピクセル510を表し、別個の円アイコンは、Cbクロマピクセルおよび/またはCrクロマピクセルを備え得るクロマピクセル520を表す。ルーマピクセル510内にあるパターン付き円アイコンは、クロマピクセル520の周りに構成されたシグナリングされたフィルタパラメータ530の配置を表す。この例では、シグナリングされたフィルタパラメータ530構成は、上記でさらに説明したように、4:2:0カラーサブサンプリングフォーマットに適用される8点十字形フィルタフォーマットを表す。他の実施形態では、シグナリングされたフィルタパラメータ530は、異なるパターンで、たとえば、図示されたルーマピクセル510の各々がシグナリングされたフィルタパラメータ530を受信し得る3×4構成で、構成され得る。さらに、他の実施形態では、クロマとルーマとはいくつもの数の他のカラーサブサンプリングフォーマット(たとえば、4:4:4、4:2:2など)で構成され得る。
[00161] 式5〜式14に関して上記で説明したように、いくつかの実施形態では、ビデオエンコーダ20は、クロマピクセル520およびルーマピクセル510のプロパティに基づいてフィルタパラメータ530(たとえば、fCb)を決定し得る。上記で説明したように、フィルタパラメータ530は、フィルタ係数、量子化パラメータ、シフトパラメータ、および/または他のパラメータのうちの1つまたは複数を含み得る。ビデオエンコーダ20は、次いで、クロマオフセット値(たとえば、o(x,y))を決定するために、フィルタパラメータ530をシグナリングし、使用し得る。一実施形態では、ビデオエンコーダ20は、対応するクロマピクセル520に「関係」する、特定のパターン(たとえば、図5Bに示された8点十字形フィルタフォーマット)のルーマピクセル510の各々をフィルタ処理するためにフィルタパラメータ530を使用し得る。最後に、ビデオエンコーダ20は、拡張クロマピクセル値(たとえば、Cbenh(x,y))を取得するために、前にアップサンプリングされたクロマピクセル520値(たとえば、Cb(x,y))にクロマオフセット値を加算し得る。区分構成500がCbクロマピクセル520とCrクロマピクセル520の両方を備える場合、ビデオエンコーダ20は、CbクロマピクセルとCrクロマピクセルの各々について上記のすべてを別々に実行し、各々にフィルタパラメータの1つのセットをシグナリングし得る。いずれの場合も、ビデオエンコーダ20が1つのクロマピクセル520について上記のステップを実行したとき、ビデオエンコーダ20は、別のクロマピクセル、たとえば、クロマピクセル520の右にあるクロマピクセル(図示せず)についてプロセスを繰り返し得る。
[00162] 上記で説明したように、クロマピクセル520は4分木リーフの境界の近くにあり得る。たとえば、「タイル(tile)」などの並列処理が使用可能にされたとき、クロマピクセル520の左または上のルーマピクセルが近隣4分木リーフ中にあり得る場合、たとえば、それらは「境界横断(cross-boundary)」または「利用不可能(unavailable)」ルーマピクセルであり得る。そのような場合、一実施形態では、ビデオエンコーダ20は、境界内(in-boundary)ルーマピクセルの値を使用して、境界横断(たとえば、「利用不可能」)ルーマピクセルの値を置き換える(たとえば、「パディング(padding)」する)ことによってコンポーネント間フィルタ処理を実行し得る。たとえば、クロマピクセル520のすぐ左のルーマピクセルが近隣4分木中にある(たとえば、それが境界横断である)場合、ビデオエンコーダ20は、クロマピクセル520の右の最も近いルーマピクセル(たとえば、境界内にあるルーマピクセル)の値を使用して、そのルーマピクセルの値をパディングし得る。別の例では、クロマピクセル520のすぐ上のルーマピクセルが近隣4分木中にある場合、ビデオエンコーダ20は、クロマピクセル520の下の最も近いルーマピクセルの値を使用して、そのルーマピクセルの値をパディングし得る。一実施形態では、ビデオエンコーダ20は、上記の式5、式6、式11、および式12に関して説明した計算を実行するときにルーマピクセルの値を使用し得る。説明したパディングプロセスは、動き補償またはリサンプリングにおいて使用するパディングプロセスと同様であり得る。他の実施形態では、ビデオエンコーダ20は、動き補償における「境界拡張(border extension)」と同様の方法を使用して、境界横断ルーマピクセルを生成し得る。
レイヤ間参照ピクチャを複数のリーフに区分し、各個々のリーフのための固有のフィルタパラメータをシグナリングする方法(Method of Partitioning an Inter-Layer Reference Picture into a Plurality of Leafs and Signaling Specific Filter Parameters for Each Individual Leaf)
[00163] 図6は、レイヤ間参照ピクチャ(たとえば、図4Aおよび/または図4Bのレイヤ間参照ピクチャ400)を複数のリーフ(たとえば、図4Aおよび/または図4Bに関して説明した4分木リーフ410および/またはサブリーフ420、430、440など)に区分し、各個々のリーフのための固有のフィルタパラメータをシグナリングするための例示的なプロセス600を示すフローチャートである。上記で説明したように、フィルタパラメータは、フィルタ係数、量子化パラメータ、シフトパラメータ、および/または他のパラメータのうちの1つまたは複数を含み得る。一実施形態では、プロセス600は、(図4Bおよび/または図4Cに関して説明したように)深度指定に従ってレイヤ間参照ピクチャを区分し得る。プロセス600は、実施形態に応じて、エンコーダ(たとえば、図2Aに関するビデオエンコーダ20)、レイヤ間予測ユニット(たとえば、図2Aに関するレイヤ間予測ユニット66)、パーティションユニット(たとえば、図2Aに関するパーティションユニット48)、または他の構成要素によって実行され得る。プロセス600のブロックについてビデオエンコーダ20に関して説明するが、プロセス600は他の構成要素によって実行され得る。プロセス600に関して説明するすべての実施形態は、別々に、または互いと組み合わせて実装され得る。
[00164] プロセス600はブロック605において開始する。ブロック610において、ビデオエンコーダ20はレイヤ間参照ピクチャ400を決定する。一実施形態では、ビデオエンコーダ20は、レイヤ間予測ユニット66を使用してレイヤ間参照ピクチャ400を決定し得る。一実施形態では、ビデオエンコーダ20はレイヤ間参照ピクチャ400を生成し得、あるいは他の実施形態では、ビデオエンコーダ20は、メモリからレイヤ間参照ピクチャ400を取り出すか、またはレイヤ間参照ピクチャ400をメモリにロードし得る。
[00165] ブロック620において、ビデオエンコーダ20は、図4Aに関してさらに説明したように、レイヤ間参照ピクチャ400を複数のリーフに区分する。一実施形態では、複数のリーフは、4つの等しい4分木リーフを備える4分木構造であり得る。他の実施形態では、複数のリーフは他のパーティション構造を備え得る。いくつかの実施形態では、ビデオエンコーダ20は、図4Bに関して説明したように、深度指定がさらなる4分木リーフおよび/またはサブリーフへの4分木リーフ410のさらなる区分を示すかどうかを決定し得る。また他の実施形態では、ビデオエンコーダ20は、図4Bに関して説明したように、ターゲット4分木深度に従ってレイヤ間参照ピクチャ400を区分し得る。
[00166] ブロック630において、ビデオエンコーダ20は、上記で説明したように各個々のリーフのための固有のフィルタパラメータを決定する。たとえば、ビデオエンコーダ20は、リーフごとに平均2乗誤差を最小限に抑え、(たとえば、上記で説明したようにフィルタパラメータと総称される)フィルタ係数、量子化パラメータ、および/またはシフトパラメータのうちの1つまたは複数を決定し得る。いくつかの実施形態では、フィルタパラメータは、各リーフのコンテンツに基づいてリーフごとに固有であり(たとえば、個別化され)得る。他の実施形態では、フィルタパラメータは各リーフについて同じであり得る。他の実施形態では、ビデオエンコーダ20は、図4Aに関してさらに説明したように、いくつかの4分木リーフがそれらの周囲4分木リーフと同様の特性を有するかどうかを決定し、ビデオエンコーダ20が、それらのリーフをマージし、それらのマージにフィルタパラメータの1つのセットのみを送ることを可能にし得る。また他の実施形態では、ビデオエンコーダ20は、必要に応じて、および図4Aに関して説明したように、フィルタパラメータの一部分を決定し得る。一実施形態では、フィルタパラメータはレイヤ間予測ユニット66によって決定され得る。
[00167] ブロック640において、ビデオエンコーダ20は、上記で説明したように、各個々のリーフのための固有のフィルタパラメータをシグナリングする。いくつかの実施形態では、ビデオエンコーダ20は、図5Bに関して説明したように、ビットストリーム中で、スライスヘッダ中で、適応パラメータセット(APS)中で、および/またはシグナリングのいくつもの他の方法でフィルタパラメータをシグナリングし得る。プロセスはブロック695において終了する。
固有のパーティション情報と固有のフィルタパラメータとを使用してレイヤ間参照ピクチャを復号し、拡張する方法(Method of Decoding and Enhancing an Inter-Layer Reference Picture Using Specific Partition Information and Specific Filter Parameters)
[00168] 図7は、図1、図3A、図5A、および図5Bに関して上記で説明したように、固有のパーティション情報と固有のフィルタパラメータとを使用して、レイヤ間参照ピクチャ(たとえば、図4Aおよび/または図4Bのレイヤ間参照ピクチャ400)を復号し、拡張するための例示的な方法またはプロセス700を示すフローチャートである。一実施形態では、固有のパーティション情報および固有のフィルタパラメータは、図6に関して説明したビデオエンコーダ20などのビデオエンコーダから受信され得る。プロセス700は、実施形態に応じて、デコーダ(たとえば、図3Aに関するビデオデコーダ30)、レイヤ間予測ユニット(たとえば、図3Aに関するレイヤ間予測ユニット75)、または他の構成要素によって実行され得る。プロセス700のブロックについてビデオデコーダ30に関して説明するが、プロセス700は他の構成要素によって実行され得る。プロセス700に関して説明するすべての実施形態は、別々に、または互いと組み合わせて実装され得る。
[00169] プロセス700はブロック705において開始する。ブロック710において、ビデオデコーダ30は、レイヤ間参照ピクチャ400の個々のリーフ(たとえば、図4Aおよび/または図4Bに関して説明した4分木リーフ410および/またはサブリーフ420、430、440など)を識別するレイヤ間参照ピクチャ400のパーティション情報(partition information)を受信する。一実施形態では、ビデオデコーダ30は、ビットストリームを介してレイヤ間参照ピクチャ400パーティション情報を受信し得る。上記で説明したように、パーティション情報は、図4Bに関して説明したように、たとえば、スプリットフラグビットを介して示され得、レイヤ間参照ピクチャ400をパーティション深度の様々なレベルに区分することをさらに企図し得る。代替的に、パーティション情報は、図4Cに関して説明したように、たとえば、ターゲット4分木深度によって示され得、ターゲット4分木深度に到達するまでレイヤ間参照ピクチャ400を等しいサブリーフに区分することをさらに企図し得る。
[00170] ブロック720において、ビデオデコーダ30は、各個々のリーフのための固有のフィルタパラメータを受信する。一実施形態では、ビデオデコーダ30は、ビットストリームを介して固有のフィルタパラメータを受信し得る。上記で説明したように、フィルタパラメータは、フィルタ係数、量子化パラメータ、シフトパラメータ、および/または他のパラメータのうちの1つまたは複数を含み得る。一実施形態では、ビデオデコーダ30は、ビデオエンコーダ、たとえば、図6のブロック640に関して説明したようにビデオエンコーダ20から固有のフィルタパラメータを受信し得る。
[00171] ブロック730において、ビデオデコーダ30は、上記で説明したように、固有のパーティション情報と固有のフィルタパラメータとを使用してレイヤ間参照ピクチャ400を復号し、拡張する(enhance)。たとえば、ビデオデコーダ30は、図5Bに関してさらに説明したように、個々のリーフのうちの1つまたは複数中のクロマピクセルを拡張することによってレイヤ間参照ピクチャ400ピクチャ品質を改善するために固有のフィルタパラメータを使用し得る。プロセスはブロック795において終了する。
3D拡張およびシングルレイヤコーディング(3-D Extension and Single Layer Coding)
[00172] 上記の開示では特定の実施形態について説明したが、多くの変形形態が可能である。たとえば、上述のように、上記の技法はシングルレイヤコーディングおよび/または3Dビデオ符号化に適用され得る。3Dビデオのいくつかの実施形態では、参照レイヤ(たとえば、ベースレイヤ)は、ビデオの第1のビューを表示するのに十分なビデオ情報を含み、エンハンスメントレイヤは参照レイヤに関係する追加のビデオ情報を含み、したがって、参照レイヤとエンハンスメントレイヤとは一緒に(たとえば、「ベースビュー(base view)」)、ビデオの第2のビュー(たとえば、「依存ビュー(dependent view)」)を表示するのに十分なビデオ情報を含む。これらの2つのビューは立体視画像を生成するために使用され得る。上記で説明したように、本開示の態様によれば、エンハンスメントレイヤ中のビデオユニットを符号化または復号するときに追加の暗黙的仮説を識別するために、参照レイヤからの動き情報が使用され得る。これは、シングルレイヤおよび/または3Dビデオビットストリームについてより大きいコーディング効率を与え得る。
[00173] たとえば、3Dビデオ符号化に関して、コンポーネント間フィルタ処理が適用されるとき、ビデオエンコーダ20は、クロマ成分のみではなく、ベースビューのルーマ成分とクロマ成分の両方を使用して、依存ビューのクロマピクセルを予測し得る。より具体的な例として、ビデオエンコーダ20は、依存ビュー中のCrクロマピクセルおよび/またはCbクロマピクセルを予測するために、ベースビュー中のCrクロマピクセルからの情報と組み合わせてベースビュー中のルーマピクセルからの情報を使用し得る。同様に、ビデオエンコーダ20は、依存ビュー中のCrクロマピクセルおよび/またはCbクロマピクセルを予測するために、ベースビュー中のCbクロマピクセルからの情報と組み合わせてベースビュー中のルーマピクセルからの情報を使用し得る。言い換えれば、最終クロマ予測(たとえば、依存レイヤにおける未決定のCbクロマまたはCrクロマ)は、ベースビュークロマ成分(たとえば、Cb成分またはCrクロマ成分のいずれか)からの予測とベースビュールーマ成分からの高周波予測との和を使用して決定され得る。いくつかの実施形態では、コンポーネント間フィルタ処理は、ビットストリームの任意のレベル、たとえば、スライスレベル、コーディングユニット(CU)レベル、予測ユニット(PU)レベルなどにおいてオンまたはオフに切り替えられ得る。
[00174] 別の例として、シングルレイヤコーディング(たとえば、HEVCの範囲拡張)に関して、ビット深度がSVCにおいてよりも高くなり得(たとえば、12ビットから16ビットへの増加)、これにより、より大きいクロマ解像度、たとえば、4:4:4が可能になり得る。その場合、いくつかの実施形態では、コンポーネント間フィルタ処理は、最終クロマ予測を決定するためにピクチャ間(たとえば、時間)予測と組み合わせられ得る。たとえば、ビデオエンコーダ20は、最初に、ピクチャ間予測中に(たとえば、前のピクチャからの)ピクチャ間ルーマおよびクロマ参照ブロックを決定し得る。一実施形態では、ピクチャ間ルーマ予測は他のシステムから不変のままであり得る。ビデオエンコーダ20は、次いで、(たとえば、フィルタパラメータに関して上記で説明したように)クロマ高周波オフセットブロックを取得するために、(上記で説明した)コンポーネント間フィルタ処理プロセスをルーマ参照ブロックに適用し得る。ビデオエンコーダ20は、次いで、ピクチャ間クロマ参照ブロックにクロマ高周波オフセットブロックを加算して、(たとえば、現在ピクチャにおいて使用する)最終クロマ予測を取得し得る。言い換えれば、3D拡張と同様に、ビデオエンコーダ20は、(たとえば、参照ブロックの)ルーマ成分とクロマ成分の両方を使用して(たとえば、現在ブロックの)最終クロマ成分を予測し得、ここにおいて、ルーマ成分は高周波情報を与える。いくつかの実施形態では、効率を増加させるために(たとえば、ビットを節約するために)、ビデオエンコーダ20は、現在ピクチャのためのコロケート参照ピクチャのコンポーネント間フィルタパラメータのみをシグナリングし得る。いくつかの実施形態では、ビデオエンコーダ20は、フィルタパラメータを生成し、それらを参照ピクチャと現在ピクチャとの各ペアにシグナリングし得る。他の実施形態では、ビデオエンコーダ20は、参照ピクチャおよび現在ピクチャペアのサブセットのためにフィルタパラメータをシグナリングし得る。その場合、ビデオエンコーダ20は、ビデオエンコーダ20がフィルタパラメータをそれのためにシグナリングしない参照ピクチャおよび現在ピクチャペアについてコンポーネント間フィルタ処理を実装しないことがある。いくつかの実施形態では、コンポーネント間フィルタ処理は、ビットストリームの任意のレベル、たとえば、スライスレベル、コーディングユニット(CU)レベル、予測ユニット(PU)レベルなどにおいてオンまたはオフに切り替えられ得る。
用語(Terminology)
[00175] 例によっては、本明細書で説明した技法のうちいずれかの、いくつかの行為またはイベントは、異なるシーケンスで実行され得、追加、マージ、または完全に除外され得る(たとえば、すべての説明した行為またはイベントが、本技法の実施のために必要であるとは限らない)ことを認識されたい。その上、いくつかの例では、行為またはイベントは、連続してではなく、同時に、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを通じて実行され得る。
[00176] 本明細書で開示する情報および信号は、多種多様な技術および技法のいずれかを使用して表され得る。たとえば、上記の説明全体にわたって言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁界または磁性粒子、光場または光学粒子、あるいはそれらの任意の組合せによって表され得る。
[00177] 本明細書で開示する実施形態に関して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、またはその両方の組合せとして実装され得る。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップについて、概してそれらの機能に関して上記で説明した。そのような機能がハードウェアとして実装されるか、ソフトウェアとして実装されるかは、特定の適用例および全体的なシステムに課される設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本発明の範囲からの逸脱を生じるものと解釈されるべきではない。
[00178] 本明細書で説明した技術は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。そのような技法は、汎用コンピュータ、ワイヤレス通信デバイスハンドセット、またはワイヤレス通信デバイスハンドセットおよび他のデバイスにおける適用例を含む複数の用途を有する集積回路デバイスなど、様々なデバイスのいずれかにおいて実装され得る。モジュールまたは構成要素として説明した任意の機能は、集積論理デバイスに一緒に、または個別であるが相互運用可能な論理デバイスとして別々に実装され得る。ソフトウェアで実装された場合、本技法は、実行されたとき、上記で説明した方法のうちの1つまたは複数を実行する命令を含むプログラムコードを備えるコンピュータ可読データ記憶媒体によって、少なくとも部分的に実現され得る。コンピュータ可読データ記憶媒体は、パッケージング材料を含むことがあるコンピュータプログラム製品の一部を形成し得る。コンピュータ可読媒体は、シンクロナスダイナミックランダムアクセスメモリ(SDRAM)などのランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、不揮発性ランダムアクセスメモリ(NVRAM)、電気消去可能プログラマブル読取り専用メモリ(EEPROM(登録商標))、フラッシュメモリ、磁気または光学データ記憶媒体など、メモリまたはデータ記憶媒体を備え得る。本技法は、追加または代替として、伝搬信号または電波など、命令またはデータ構造の形態でプログラムコードを搬送または伝達し、コンピュータによってアクセスされ、読み取られ、および/または実行され得るコンピュータ可読通信媒体によって、少なくとも部分的に実現され得る。
[00179] プログラムコードは、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルロジックアレイ(FPGA)、または他の等価の集積回路またはディスクリート論理回路など、1つまたは複数のプロセッサを含み得るプロセッサによって実行され得る。そのようなプロセッサは、本開示で説明する技法のいずれかを実行するように構成され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つまたは複数のマイクロプロセッサ、あるいは任意の他のそのような構成として実装され得る。したがって、本明細書で使用する「プロセッサ」という用語は、上記の構造、上記の構造の任意の組合せ、または本明細書で説明する技法の実装に好適な他の構造または装置のいずれかを指す。さらに、いくつかの態様では、本明細書で説明した機能は、符号化および復号のために構成された専用のソフトウェアモジュールまたはハードウェアモジュール内に提供され得、あるいは複合ビデオエンコーダ/デコーダ(コーデック)に組み込まれ得る。
[00180] 本明細書で説明したコーディング技法は、例示的なビデオ符号化および復号システムにおける実施形態であり得る。システムは、宛先デバイスによって後で復号されるべき符号化されたビデオデータを与えるソースデバイスを含む。特に、ソースデバイスは、コンピュータ可読媒体を介してビデオデータを宛先デバイスに与える。ソースデバイスおよび宛先デバイスは、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、いわゆる「スマート」パッド、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスのいずれかを備え得る。場合によっては、ソースデバイスおよび宛先デバイスはワイヤレス通信のために装備され得る。
[00181] 宛先デバイスは、コンピュータ可読媒体を介して復号されるべき符号化されたビデオデータを受信し得る。コンピュータ可読媒体は、ソースデバイスから宛先デバイスに符号化されたビデオデータを移動することが可能な任意のタイプの媒体またはデバイスを備え得る。一例では、コンピュータ可読媒体は、ソースデバイス12が符号化されたビデオデータを宛先デバイスにリアルタイムで直接送信することを可能にするための通信媒体を備え得る。符号化されたビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先デバイスに送信され得る。通信媒体は、無線周波数(RF)スペクトルあるいは1つまたは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースネットワークの一部を形成し得る。通信媒体は、ソースデバイスから宛先デバイスへの通信を可能にするために有用であり得る、ルータ、スイッチ、基地局、または任意の他の機器を含み得る。
[00182] いくつかの例では、符号化されたデータは出力インターフェースからストレージデバイスに出力され得る。同様に、符号化されたデータは入力インターフェースによってストレージデバイスからアクセスされ得る。ストレージデバイスは、ハードドライブ、Blu−rayディスク、DVD、CD−ROM、フラッシュメモリ、揮発性または不揮発性メモリ、あるいは符号化されたビデオデータを記憶するための任意の他の好適なデジタル記憶媒体など、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。さらなる一例では、ストレージデバイスは、ソースデバイスによって生成された符号化されたビデオを記憶し得るファイルサーバまたは別の中間ストレージデバイスに対応し得る。宛先デバイスは、ストリーミングまたはダウンロードを介してストレージデバイスから記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化されたビデオデータを記憶し、その符号化されたビデオデータを宛先デバイスに送信することが可能な任意のタイプのサーバであり得る。例示的なファイルサーバとしては、(たとえば、ウェブサイトのための)ウェブサーバ、FTPサーバ、ネットワーク接続ストレージ(NAS)デバイス、またはローカルディスクドライブがある。宛先デバイスは、インターネット接続を含む、任意の標準のデータ接続を介して、符号化されたビデオデータにアクセスし得る。これは、ファイルサーバに記憶された符号化されたビデオデータにアクセスするのに好適であるワイヤレスチャネル(たとえば、Wi−Fi接続)、ワイヤード接続(たとえば、DSL、ケーブルモデムなど)、またはその両方の組合せを含み得る。ストレージデバイスからの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはそれらの組合せであり得る。
[00183] 本開示の技法は、必ずしもワイヤレス適用例または設定に限定されるとは限らない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、動的適応ストリーミングオーバーHTTP(DASH)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されたデジタルビデオ、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例など、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システムは、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオテレフォニーなどの適用例をサポートするために、一方向または双方向のビデオ送信をサポートするように構成され得る。
[00184] 一例では、ソースデバイスは、ビデオソースと、ビデオエンコーダと、出力インターフェースとを含む。宛先デバイスは、入力インターフェースと、ビデオデコーダと、ディスプレイデバイスとを含み得る。ソースデバイスのビデオエンコーダは、本明細書で開示する技法を適用するように構成され得る。他の例では、ソースデバイスおよび宛先デバイスは他のコンポーネントまたは構成を含み得る。たとえば、ソースデバイスは、外部カメラなどの外部ビデオソースからビデオデータを受信し得る。同様に、宛先デバイスは、内蔵ディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。
[00185] 上記の例示的なシステム一例にすぎない。ビデオデータを並列に処理するための技法は、任意のデジタルビデオ符号化および/または復号デバイスによって実行され得る。概して、本開示の技法はビデオ符号化デバイスによって実行されるが、本技法は、「コーデック」と呼ばれることがあるビデオエンコーダ/デコーダによっても実行され得る。その上、本開示の技法はビデオプリプロセッサによっても実行され得る。ソースデバイスおよび宛先デバイスは、ソースデバイスが宛先デバイスに送信するためのコーディングされたビデオデータを生成するような、コーディングデバイスの例にすぎない。いくつかの例では、ソースデバイスおよび宛先デバイスは、デバイスの各々がビデオ符号化構成要素とビデオ復号構成要素とを含むように、実質的に対称的に動作し得る。したがって、例示的なシステムは、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスト、またはビデオテレフォニーのための、ビデオデバイス間の一方向または双方向のビデオ送信をサポートし得る。
[00186] ビデオソースは、ビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされたビデオを含んでいるビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースを含み得る。さらなる代替として、ビデオソースは、ソースビデオとしてのコンピュータグラフィックスベースのデータ、またはライブビデオとアーカイブビデオとコンピュータ生成ビデオとの組合せを生成し得る。場合によっては、ビデオソースがビデオカメラである場合、ソースデバイスおよび宛先デバイスは、いわゆるカメラフォンまたはビデオフォンを形成し得る。ただし、上述のように、本開示で説明する技法は、概してビデオコーディングに適用可能であり得、ワイヤレスおよび/またはワイヤード適用例に適用され得る。各場合において、キャプチャされたビデオ、以前にキャプチャされたビデオ、またはコンピュータ生成ビデオは、ビデオエンコーダによって符号化され得る。符号化されたビデオ情報は、次いで、出力インターフェースによってコンピュータ可読媒体上に出力され得る。
[00187] 述べたように、コンピュータ可読媒体は、ワイヤレスブロードキャストまたはワイヤードネットワーク送信などの一時媒体、あるいはハードディスク、フラッシュドライブ、コンパクトディスク、デジタルビデオディスク、Blu−rayディスク、または他のコンピュータ可読媒体などの記憶媒体(すなわち、非一時的記憶媒体)を含み得る。いくつかの例では、ネットワークサーバ(図示せず)は、たとえば、ネットワーク送信を介して、ソースデバイスから符号化されたビデオデータを受信し、その符号化されたビデオデータを宛先デバイスに与え得る。同様に、ディスクスタンピング設備など、媒体製造設備のコンピューティングデバイスは、ソースデバイスから符号化されたビデオデータを受信し、その符号化されたビデオデータを含んでいるディスクを生成し得る。したがって、コンピュータ可読媒体は、様々な例において、様々な形態の1つまたは複数のコンピュータ可読媒体を含むものと理解され得る。
[00188] 宛先デバイスの入力インターフェースはコンピュータ可読媒体から情報を受信する。コンピュータ可読媒体の情報は、ビデオエンコーダによって定義され、ビデオデコーダによっても使用される、ブロックおよび他のコーディングされたユニット、たとえば、ピクチャグループ(GOP)の特性および/または処理を記述するシンタックス要素を含む、シンタックス情報を含み得る。ディスプレイデバイスは、復号されたビデオデータをユーザに対して表示し、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを備え得る。本発明の様々な実施形態について説明した。これらおよび他の実施形態は以下の特許請求の範囲内に入る。
[00189] 本発明の様々な実施形態について説明した。これらおよび他の実施形態は以下の特許請求の範囲内に入る。
[0059] 本開示の技法は、ワイヤレス適用例または設定に加えて適用例または設定を適用し得る。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、動的適応ストリーミングオーバーHTTP(DASH:dynamic adaptive streaming over HTTP)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されたデジタルビデオ、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例など、様々なマルチメディア適用例をサポートするビデオコーディングに適用され得る。いくつかの実施形態では、システム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオテレフォニーなどの適用例をサポートするために、一方向または双方向ビデオ送信をサポートするように構成され得る。
[0085] ビデオシーケンス中のルーマサンプルおよびクロマサンプルの各々は8ビットから14ビットまでを必要とし得る。ビット要件により、ビデオ符号化および復号システムは、ビットを節約するために、(上記で説明した)予測およびフィルタ処理の様々な手法を実装し得る。いくつかの構成では、ルーマアレイ中で使用されるビット数は、クロマアレイ中で使用されるビット数とは異なり得る。たとえば、インデックス(たとえば、chroma_format_idc)値が1に等しいとき、ピクチャ中のルーマサンプルおよびクロマサンプルの公称垂直および水平相対ロケーションは、たとえば4:2:0サンプリングで構成された複数のクロマサンプルの各々を囲むルーマサンプルの3×4アレイを備え得る。代替クロマサンプル相対ロケーションは、ビデオユーザビリティ情報、たとえば、HEVC規格の付属書類Eにおいて示され得る。別の例として、chroma_format_idcの値が2に等しい場合、クロマサンプルは、対応するルーマサンプルと共同配置(co-site)され得、ピクチャ中の公称ロケーションは4:2:2サンプリングの場合のように構成され得る。また別の例として、chroma_format_idcの値が3に等しいとき、アレイサンプルは、ピクチャのすべての場合について共同配置され得、ピクチャ中の公称ロケーションは4:4:4サンプリングの場合のように構成され得る。
[00155] いくつかの実施形態では、ビデオエンコーダ20は、4分木リーフおよび/または4分木サブリーフの全部ではないが一部をさらなる4分木サブリーフに区分し得る。たとえば、4分木深度指定に応じて、図示のように、ビデオエンコーダ20は、4分木サブリーフ420Eをさらなる4分木サブリーフにさらに区分することがあるが、4分木サブリーフ420Fをさらに区分しないことがある。一実施形態では、ビデオエンコーダ20は、すべてのリーフが同じ4分木深度を共有するように、シーケンスレベルにおいて4分木深度をシグナリングし得る。別の実施形態では、ビデオエンコーダ20は、各リーフのための4分木深度を個々にシグナリングし得る。その場合、ビデオエンコーダ20は、ピクチャレベルにおける4分木深度のエントロピーコーディングがより効率的になり得るように、シーケンスレベルにおいて最大4分木深度をもシグナリングし得る。一実施形態では、冗長を回避するために、ビデオエンコーダ20は、ビデオエンコーダ20が領域全体のために1つの4分木深度をシグナリングし得るように、同様に特徴づけられたリーフ(たとえば、等しいかまたは同様である一部または全部のフィルタパラメータを共有し得るリーフ)を「領域(region)」にグループ化し得る。また別の実施形態では、最大4分木深度はコーデックにおいてハードコーディングされ得る。さらにまた別の実施形態では、ビデオエンコーダ20は、スプリットフラグを使用して4分木深度をシグナリングし得る。その場合、ビデオエンコーダ20は、各リーフおよび/またはサブリーフについて最大4分木深度に到達するまで、各リーフおよび/またはサブリーフにスプリットフラグをシグナリングし得る。たとえば、図示の例では、ビデオエンコーダ20は、ピクチャ(たとえば、レイヤ間参照ピクチャ400全体)の第1のレイヤのためのパーティションを示すためにスプリットフラグをシグナリングし得、これは、4分木リーフ410の各々を生じ得る。ビデオエンコーダ20は、次いで、第1の4分木リーフ(たとえば、410A)が区分されるべきであることを示すためにスプリットフラグをシグナリングし得、これは、一例として示されているように、4分木サブリーフ420を生じ得る。ビデオエンコーダ20は、次いで、一例として示されているように、第2の4分木リーフ(たとえば、420B)が区分されるべきでないことを示すためにスプリットフラグをシグナリングし得る。このプロセスは、図において一例として示されているように、4分木リーフおよび/またはサブリーフのすべてが深度指定に従って完全に区分されるまで続き得る。