【文献】
DE LAGRANGE, P. et al.,CE7-related: Quantization Group size uniformity,Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 13th Meeting: Marrakech, MA, 9-18 Jan. 2019, [JVET-M0113],2019年 1月18日,JVET-M0113 (version 1),pp. 1-8
(58)【調査した分野】(Int.Cl.,DB名)
請求項1に記載の方法であって、前記第1の動画ピクチャ及び第2の動画ピクチャそれぞれの前記符号化構造に格納される、対応する動画ピクチャのための前記彩度量子化グループの前記サイズを指定するためのパラメータを受信することを更に備える、
方法。
請求項2に記載の方法であって、前記第1の動画ピクチャ及び第2の動画ピクチャの前記符号化構造における前記パラメータは、それぞれの動画ピクチャについて異なる彩度量子化グループのサイズを指定する、
方法。
請求項1に記載の方法であって、それぞれの彩度量子化グループは、前記符号化動画ピクチャの複数の動画データユニットからの動画データユニットのセットを含み、前記第1の彩度量子化グループは、前記第2の彩度量子化グループとは異なる数の動画データユニットを含む、
方法。
請求項1に記載の方法であって、それぞれの彩度量子化グループは、前記符号化動画ピクチャの複数の動画データユニットからの動画データユニットのセットを含み、前記方法は、前記第1の動画ピクチャ及び第2の動画ピクチャそれぞれの前記符号化構造に格納される、前記動画ピクチャの各量子化グループにおける動画データユニットの数を識別するためのパラメータを受信することを更に備える、
方法。
請求項6に記載の方法であって、前記第1の動画ピクチャ及び第2の動画ピクチャの前記符号化構造に格納される前記パラメータは、対応する動画ピクチャの前記彩度量子化グループのための異なる数の動画符号化ユニットを指定する、
方法。
請求項12に記載のコンピューティングデバイスであって、前記プログラムは、前記第1の動画ピクチャ及び第2の動画ピクチャそれぞれの前記符号化構造に格納される、対応する動画ピクチャのための前記彩度量子化グループの前記サイズを指定するためのパラメータを受信することのための命令セットを更に含む、
コンピューティングデバイス。
請求項13に記載のコンピューティングデバイスであって、前記第1の動画ピクチャ及び第2の動画ピクチャの前記符号化構造における前記パラメータは、それぞれの動画ピクチャについて異なる彩度量子化グループのサイズを指定する、
コンピューティングデバイス。
請求項12に記載のコンピューティングデバイスであって、それぞれの彩度量子化グループは、前記符号化動画ピクチャの複数の動画データユニットからの動画データユニットのセットを含み、前記第1の彩度量子化グループは、前記第2の彩度量子化グループとは異なる数の動画データユニットを含む、
コンピューティングデバイス。
請求項12に記載のコンピューティングデバイスであって、それぞれの彩度量子化グループは、前記符号化動画ピクチャの複数の動画データユニットからの動画データユニットのセットを含み、前記プログラムは、前記第1の動画ピクチャ及び第2の動画ピクチャそれぞれの前記符号化構造に格納される、前記動画ピクチャの各量子化グループにおける動画データユニットの数を識別するためのパラメータを受信することのための命令セットを更に含む、
コンピューティングデバイス。
請求項17に記載のコンピューティングデバイスであって、前記第1の動画ピクチャ及び第2の動画ピクチャの前記符号化構造に格納される前記パラメータは、対応する動画ピクチャの前記彩度量子化グループのための異なる数の動画符号化ユニットを指定する、
コンピューティングデバイス。
請求項19に記載のコンピューティングデバイスであって、前記第1の動画ピクチャの前記第1の階層的符号化レベルは、ピクチャレベルであり、前記第1の動画ピクチャの前記第2の階層的符号化レベルは、スライスレベルであり、前記第2の動画ピクチャの前記第4の階層的符号化レベルは、符号化ツリーユニットである、
コンピューティングデバイス。
【発明を実施するための形態】
【0012】
下記の記述では、説明を目的として多数の詳細が記述されている。しかし、当業者であれば、本発明はこれらの特定の詳細を用いることなく実施されうることは理解するであろう。その他の例では、不要な詳細によって本発明の記述をあいまいにしないようにするため、周知の構造やデバイスはブロック図の形式で示してある。
【0013】
彩度量子化パラメータ(彩度QP)をもっと柔軟に指定できる動画符号化システムを提供するために、本発明の一部の実施形態は、量子化グループ固有の追加の彩度QPオフセット値をシグナリングする方法を提供する。一部の実施形態では、個々の量子化グループが、それ自体の彩度QPオフセット値の集合を明示的に指定する。一部の実施形態では、彩度QPオフセット値の見込まれる(possible)集合のテーブルが、ピクチャもしくはスライスのヘッダエリアの中に指定され、個々の量子化グループが、指標(インデックス)を用いてテーブルからエントリを選択して、それぞれの彩度QPオフセット値の集合を判定する。ついで、量子化グループレベルの彩度QPオフセット値を用いて、量子化グループ内の各ブロックについての彩度QP値が判定される。一部の実施形態では、量子化グループ彩度QP値は、動画符号化階層の高位レベルにすでに指定されている、ブロックの輝度QPおよび彩度QPオフセット値と共に用いられる。
【0014】
以下のセクションIは、追加の彩度QPオフセット値を指定する方法を記述する。具体的には、セクションI.aは、追加の彩度QPオフセット値を量子化グループ内に明示的に指定する方法を記述し、セクションI.bは、見込まれる彩度QPオフセット値のテーブルを指定する方法を記述する。次いでセクションIIは、追加の彩度QPオフセット値を識別して、それらを画像のさまざまな領域に割り当てるためのさまざまなシステムおよび方法を記述する。セクションIIIは、本発明の一部の実施形態を実装する動画符号化器システムおよび動画復号器システムについて記述し、セクションIVは、本発明の一部の実施形態が実装されるコンピュータシステムについて記述する。
【0015】
I.追加の彩度QPオフセットの指定
a.追加の彩度QPオフセットを量子化グループ内に指定する
本発明の一部の実施形態は、一続きの動画を符号化するために彩度量子化パラメータオフセット値(彩度QPオフセット)を指定する方法を提供する。方法は、彩度QPオフセット指定を彩度量子化グループに関連付けるもので、個々の彩度QGは、1つ以上の動画データユニット(例えばHEVCにおける符号化ユニット)を包含している。一部の実施形態では、彩度量子化グループに関連付けられた彩度QPオフセット指定の集合が、彩度量子化グループの中の動画データユニットの符号化構造内で符号化されるかまたはそれに組み込まれる。一部の実施形態では、彩度量子化グループについての彩度QPオフセット指定が、彩度量子化グループを包含する高位レベルの動画符号化階層(例えばスライスまたはピクチャ)に位置する動画符号化構造について指定される他の彩度QPオフセット指定に加えて、適用される。一部の実施形態では、さまざまなレベルからの彩度QPオフセットが、(例えば、それらを輝度QP値に加えることによって)一緒に適用されて、彩度量子化パラメータ(彩度QP)が判定される。
【0016】
一部の実施形態では、輝度量子化グループ(輝度QG)に加えて、彩度量子化グループ(彩度QG)が定義される。輝度QGも1つ以上の動画データユニットを包含するが、輝度QGは、輝度量子化パラメータ(輝度QP)を指定するためのものである。一部の実施形態では、彩度QGが、1つ以上の輝度QGと重なり合うかまたはそれらを包含してもよい。言い換えると、彩度QG内のさまざまな領域が、さまざまな輝度QGに属していてもよく、従って、さまざまな輝度QPを有していてもよい。
【0017】
本発明の一部の実施形態に関して、
図1は階層的動画符号化構造100を示す図であるが、ここで彩度量子化グループ(彩度QG)は、個々のグループがそれ自体の彩度QPオフセット指定の集合を持つ状態で含まれている。階層的動画符号化構造100は、複数のピクチャ101乃至103を含んでいる。それらのうちでピクチャ102は、複数のスライス111乃至113を含んでいる。スライス112は、複数の彩度QG121乃至123を含んでいる。ピクチャ102は、一組の(a set of)彩度QPオフセット指定を含むピクチャパラメータセット(PPS)132を有する。彩度QG121乃至123は、それぞれ、彩度QPオフセットセット141乃至143に関連付けられている。
【0018】
階層的動画符号化構造100は、一続きの動画画像に対応する。一続きの動画画像は、階層のさまざまなレベルにおける動画データユニットの層で構成されており、高位レベルにおける動画データユニットは、低位レベルにおける1つ以上の動画データユニットを包含している。例えば、ピクチャのグループ(GOP)は、ピクチャより高位の階層レベルにある動画データユニットであり、ピクチャは、ピクチャのスライスより高位の階層レベルにある動画データユニットであり、スライスは、符号化ツリーユニットより高位の階層レベルにある動画データユニットである等々である。一部の実施形態では、高位レベルの動画データユニット用に指定された少なくとも一部のパラメータは、高位レベルの動画データユニットが包含する低位レベルの動画データユニットに適用可能である。例えば、一部の実施形態では、(PPS132からの)ピクチャ102についてのピクチャレベルの彩度QPオフセット指定は、ピクチャ102によって包含されるすべての彩度QG(例えば、彩度QG121乃至123)に適用可能である。
【0019】
動画符号化構造100は、一部の実施形態ではビットストリームとして符号化される。そのようなビットストリームは、HEVC/H.265標準やMPEG−4AVC/H.264標準のような、確立された動画符号化フォーマットに基づいている。H.265標準に基づくピクチャは、1つ以上のスライスを含むことができ、各スライスは、1つ以上の符号化ツリーユニット(CTU)を有することができる。さらに、各CTUは、ブロックとして細分化されることがある。また、H.265では、輝度成分を量子化/逆量子化するための輝度量子化グループの定義が可能になる。各量子化グループでは、量子化グループ内の動画データユニットに固有の輝度量子化パラメータの導出ができる。導出された後、輝度量子化パラメータを用いて輝度DCT係数の量子化が行われる。H.265標準の下で、H.265準拠のビットストリームのピクチャレイヤまたはスライスレイヤで提供されるオフセット値に基づいて、輝度量子化パラメータから彩度量子化パラメータが導出される。動画符号化構造100は、H.265標準によって可能になるピクチャ/スライスレイヤの彩度QPオフセットに加えて、彩度QPオフセットシグナリングまたはその指定を提供する。
【0020】
彩度QG141乃至143は、動画符号化構造100の中の定義された範囲である。QG141乃至143の各々は、それ自体の彩度QPオフセット値の集合141乃至143に関連付けられる。一部の実施形態では、量子化グループは、同じ一組のQP値を共有する一群の動画データユニットであってもよい。一部の実施形態では、QGの中の彩度QPオフセットについてのシグナリングは、QG内のすべての動画データユニットに適用される。一部の実施形態では、QPオフセットは、最初にシグナリングされた彩度残余情報から始まって、それ以降適用される。シグナリングに先行するいかなるエリアも、シグナリングされた彩度QPオフセットに関連付けられない。言い換えると、QGは「断片化」されることがある。
【0021】
一部の実施形態では、QG(彩度または輝度)は、例えば符号化ツリーユニット、符号化ユニットまたは変換ユニットのような、動画符号化階層のさまざまなレベルまたは深度で定義されてもよく、これらはHEVCでサポートされている。一部の実施形態では、彩度QPオフセットについてのQGの定義は、利用可能な場合には輝度成分についてのQGの定義を受け継ぐ。
【0022】
一部の実施形態では、QG(彩度または輝度)の深度、レベルおよびサイズは、ビットストリームの中で柔軟に指定することができ、また、ピクチャ毎に異なっていてもよい。例えば、あるピクチャ(例えば101)が、その彩度QGを符号化の四分木の最上位レベルに指定し(すなわち、QGはCTUである)、別のピクチャ(例えば103)が、その彩度QGを符号化の四分木の低位レベルに指定することができる(例えば、QGは、四分木のうちの符号化ブロックである)。一部の実施形態では、高位レベルのパラメータ(例えばPPSまたはスライスヘッダ)が、動画符号化階層のどのレベルでピクチャのQGが定義されることになるのかを指定する。
【0023】
また、
図1は、彩度QGによって指定されたオフセットをどのように用いて彩度QP値を計算するのかを示す図である。
図1に示すような一部の実施形態では、彩度QPオフセットパラメータの第1の集合は、すでにPPS132(および/またはスライス112のヘッダ)でシグナリングされている。一部の実施形態では、彩度QGより上のレベル(例えば、PPSおよび/またはスライスヘッダ)で指定されている彩度QPオフセット値は、QGがそれ自体の彩度QPオフセット値を指定する場合には、無視される。一部の実施形態では、高位レベルの彩度QPオフセットシンタックス要素とQGレベルの彩度QPオフセットとが、オーバヘッドを削減するため一緒に考慮される。すなわち、彩度QP値の適合は、両方のパラメータセットを同時に関連付けながら行われるのであって、シグナリングされた情報は、「二次」オフセットと考えてもよい。実施形態によっては、現行の彩度QGについての彩度QP値は、以下のように計算される。
QPchroma[i]=QPluma+QPoffset_pps[i]+QPoffset_quant_group[i] (1)
(第1の彩度成分についてはi=0;第2の彩度成分についてはi=1)
ここで、QPlumaは、現行の彩度量子化グループに対応する輝度成分のQPであり、QPoffset_pps[i]は、現行のPPS(またはスライスヘッダ)からのi番目の彩度成分のQPオフセットであり、QPoffset_quant_group[i]は、その成分のためにQGレベルでシグナリングされる追加オフセットである。QPoffset_pps[i]+QPoffset_quant_group[i]は、このようにしてi番目の彩度成分の総合的彩度QPオフセットを構成している。
【0024】
一部の実施形態では、彩度QP値の適合は、複数のレベルの動画符号化階層からの彩度QPオフセットパラメータに基づいている。例えば、一部の実施形態では、彩度QP値の計算は、PPSからだけでなくスライスヘッダからの彩度QPオフセット値も考慮する。実施形態によっては、現行のQGの彩度成分iについての彩度QP値は、以下のように計算される。
QPchroma[i]=QPluma+QPoffset_pps[i]
+QPoffset_slice[i]+QPoffset_quant_group[i] (2)
ここでQPoffset_slice[i]は、現行のスライスヘッダからのi番目の彩度成分のQPオフセットであり、QPoffset_pps[i]は、現行のPPSからのi番目の彩度成分のQPオフセットであり、QPoffset_pps[i]+QPoffset_slice[i]+QPoffset_quant_group[i]という和は、i番目の彩度成分の総合的彩度QPオフセットである。一部の実施形態では、任意で、動画符号化階層のその他のレイヤにおいて1つ以上の追加の彩度QPオフセット値を指定することが可能である。特定の符号化ブロックを符号化もしくは復号するために、実施形態によっては、その特定の符号化ブロックを包含する(またはそれに適用可能な)動画符号化階層の各レベルに沿って指定された彩度オフセットQP値の一部または全部を用いる。
【0025】
前述のとおり、彩度QGの彩度QP値は、彩度QPオフセットを、彩度QGに適用可能な輝度QP値に加えることによって計算される。一部の実施形態では、彩度QGに対応する輝度QP値が、彩度QG内で変わることがある。これは、輝度QGと彩度QGとが重なり合うことによって、彩度QGは、異なる輝度QGに入る符号化ユニットを包含し、従って、異なる輝度QP値を有することがあるためである。その結果、彩度QG内の異なる符号化ユニット同士が、(彩度QGに適用可能な彩度QPオフセットが、彩度QG内の異なる輝度QP値に適用されることから)、異なる彩度QP値を有することになってしまう可能性がある。
【0026】
図1の例では、彩度QG121は、彩度QG121が4つの異なる輝度QG171乃至174と重なり合うため、4つの対応する輝度QP値(QP輝度)を有している。彩度QG121のこれらの4つの輝度QP値の結果として、PPSオフセット132およびQG1オフセット141からの彩度QPオフセット(QPoffset_pps、QPoffset_slice、QPoffset_quant_group)を適用した後、4つの見込まれる彩度QP値が生じる。従って、彩度QG121の中の符号化ユニットは、符号化ユニットがその中に入る根本的な輝度QGに依存して、これらの4つの見込まれる彩度QP値のうちの1つを有しうる。同様に、彩度QG123は、2つの異なる輝度QG181乃至182と重なり合い、彩度QG123の中の符号化ユニットは、符号化ユニットがその中に入る根本的な輝度QGに依存して、2つの見込まれる彩度QP値のうちの1つを有しうる。
【0027】
他方、彩度QG122は、対応する輝度QP値を1つだけ有しているが、それは、彩度QG122が完全に輝度QG175内に入っている(または、輝度QG175とまったく同じ符号化ユニットの集合を包含している)からである。従って、彩度QG122の中の符号化ユニットは、すべて、彩度QPオフセットを適用した後、同じ彩度QP値を有する。
【0028】
大半の動画符号化フォーマット(例えばYCbCr)については各輝度成分には2つの彩度成分が存在することから、一部の実施形態では、量子化グループについての各彩度QPオフセットは、2つの彩度成分についての2つのオフセット値を計算するための指定を含む一組の値である。一部の実施形態に関して、
図2a乃至
図2cは、
図1のQG141についての一組のオフセット値を符号化するための複数の方法を示す図である。実施形態によっては、これらの方法のうち1つだけを用いて一組の彩度QPオフセット値を符号化する。一部の実施形態は、QG固有の特性に基づいて、異なるQGには異なる方法を選択する。
【0029】
図2aは、彩度QPオフセット値の集合を2つの独立したオフセット値241および242として示す図である。これら2つの値は、成分[0](251)用および成分[1](252)用の彩度QPオフセットとして直接用いられる。一部の実施形態では、2つの彩度成分が互にほとんど相関関係がない場合に、彩度QPオフセットを符号化する、この方法を選択する。彩度QPオフセット値を符号化するこの方法の別例を、以下に
図5を参照して詳述する。
【0030】
図2bは、両方の彩度成分(253および254)によって彩度QPオフセットとして同時に用いられる1つの値243として符号化されるオフセット値の集合を示す図である。一部の実施形態では、2つの彩度成分が、輝度成分とそれらとの関係において、極めて類似している場合に、この方法を選択する。彩度QPオフセット値を符号化するこの方法の別例を、以下に
図6を参照して詳述する。
【0031】
図2cは、直接オフセットに基づいて直接オフセット値244および差分値245として符号化されるオフセット値の集合を示す図である。この例では、直接オフセット値244は、第1の彩度成分(255)の彩度QPオフセットとして直接適用され、他方、差分値245と直接値244との和が、第2の彩度成分(256)の彩度QPオフセット値として用いられる。一部の実施形態では、2つの彩度成分が、輝度成分とそれらとの関係において、ほんの数ビットのビットストリーム内で安価に符号化されうる小さなオフセットの分だけ異なる場合に、この方法を選択する。この方法は、(成分[1]のための)第2の彩度QPオフセットを、第1の彩度QPオフセットと関連付けながら符号化するものである。すなわち、第2の彩度QPオフセットは、このとき、(成分[0]のための)第1の彩度QPオフセットから予測される。一部の実施形態では、第1の彩度成分についての彩度QP値は、以下のように計算される。
QPchroma[0]=QPluma+QPoffset_pps[0]+QPoffset_quant_group[0] (3)
【0032】
第2の彩度成分についての彩度QP値は、以下のように計算される。
QPchroma[1]=QPluma+QPoffset_pps[1]+QPoffset_quant_group[0]
+QPoffset_quant_group[1] (4)
(第1の彩度成分についてはi=0;第2の彩度成分についてはi=1)
【0033】
上記のとおり、一部の実施形態では、動画符号化階層のうちの複数の異なるレイヤからの彩度QPオフセット値を用いて、最終的な彩度QP値を導出する。PPSとスライスヘッダの両方からの彩度QPオフセット値を用いる一部の実施形態については、第1の彩度成分についての彩度QP値は、以下のように計算される。
QPchroma[0]=QPluma+QPoffset_pps[0]+QPoffset_slice[0]
+QPoffset_quant_group[0] (5)
【0034】
第2の彩度成分についての彩度QP値は、以下のように計算される。
QPchroma[1]=QPluma+QPoffset_pps[1]+QPoffset_slice[1]
+QPoffset_quant_group[0]+QPoffset_quant_group[1] (6)
【0035】
上記のとおり、一部の実施形態では、輝度量子化グループおよび/または彩度量子化グループの定義は、ピクチャレベルにあるパラメータによって規定される。
図3は、彩度量子化グループの定義を規定する例示的なピクチャヘッダまたはPPS300を示す図である。例示的なピクチャヘッダ300は、動画符号化構造100のピクチャ102に関連付けられている。ピクチャヘッダ300は、追加の彩度QPオフセット(すなわち、彩度QP値の適合)を収容するために、H.265標準から修正された疑似コードによって記述されている。一部の実施形態では、動画標準(例えばH.265標準または修正された標準)用の疑似コードは、その動画標準に準拠したビットストリームを処理する時に、動画復号器に必要とされる動作を記述する。また、疑似コードは、その動画標準に準拠したビットストリームを生成する時に、動画符号化器に必要とされる動作を記述する。
【0036】
例示を目的として、ピクチャヘッダ300の疑似コードを
図3に黒い行311乃至313で示す。行311乃至313によって、追加の彩度QPオフセット値が可能になり、ピクチャ102の中の彩度QPオフセットのための彩度量子化グループが定義される。具体的には、行311のパラメータ「additional_chroma_qp_offset」が、ビットストリームの中に追加の彩度QPオフセット指定があるだろうということを復号器に知らせる。この変数が特定のピクチャについて設定されていない場合、ビットストリームは、ビットの浪費を避けるため、そのピクチャについて追加の彩度QPオフセットを指定するためのビットを含めようとしないであろう。
【0037】
行313のパラメータ「chroma_qp_offset_max_depth」は、彩度QGのレベル(ゆえに、サイズまたは階層深度)を定義するものである。このパラメータは、符号化ツリーユニット(CTU)全体のサイズと等しいように設定するか、あるいはビットストリームの中の見込まれる最小の符号化ユニットのサイズまで小さく設定することができる。一部の実施形態では、追加の彩度QPオフセットの指定およびシグナリングを、いずれかの所望のレベルで(例えば、CTUレベル、彩度が定義された量子化グループレベル、符号化ユニットレベル、変換ユニットレベル等で)行うことが可能である。
【0038】
一部の実施形態では、特に彩度QPオフセットについて量子化グループを定義する代わりに、ビットストリームが、パラメータ「diff_cu_qp_delta_depth」を使用し、それが、輝度QPについての量子化グループも定義する。一部の実施形態では、量子化グループを定義するためのパラメータが利用できない場合には、輝度については同一のQPがピクチャ全体に割当てられ、輝度についてのQP適合は許可されない。
【0039】
図4は、量子化グループの中にありうる例示的な符号化ツリーユニット400を示す図である。符号化ツリーユニット400は、追加の彩度QPオフセットを収容するために、H.265疑似コードから修正された疑似コードによって記述されている。符号化ツリーユニット400は、量子化グループ122の中にあり、これはピクチャ102のスライス112の中にある。
【0040】
符号化ツリーユニット400についての疑似コードを、黒い行411乃至413で示しており、これらは、符号化ツリーユニットがQGの一部であるかどうかを判定するために追加される。具体的には、行411で、(例えばピクチャヘッダ300からの)パラメータ「additional_chroma_qp_offset」を用いて、追加の彩度情報が許容されているかどうかが指示される。パラメータ「chroma_qp_offset_max_depth」が変数「log2CbSize」と比較され、符号化ツリーユニット400が、(例えば量子化グループ122のような)量子化グループの中にあるのかどうかが判定される。そうであれば、疑似コードは、行412で変数「IsCrCuQpOffsetCoded」を0に設定する。一部の実施形態では、これによって、彩度量子化グループの開始点が初期化される。
【0041】
図5は、QG122内の追加の彩度QPオフセット指定を示す図である。
図3および
図4を参照しながら上記で論じたとおり、QG122は、符号化ツリーユニット400を含むようにピクチャヘッダ300によって定義されている。追加の彩度QPオフセットは、符号化ツリーユニット400の変換ユニット500内で指定される。変換ユニット500は、追加の彩度QPオフセットを収容するために、H.265疑似コードから修正された疑似コードによって記述されている。
【0042】
変換ユニット500についての疑似コードを、黒い行511乃至519で示しており、これらは、追加の彩度QPオフセットを指定するために追加される。具体的には、行511では、パラメータ「additional_chroma_qp_offset」を用いて、追加の彩度情報が許容されているかどうかが指示される。変数「IsCrCuQpOffsetCoded」を用いて、変換ユニット500において彩度QPオフセット情報を指定する(または受信する)ことが必要かどうかが指示される。QG122についての彩度QPオフセット値がすでに符号化されている場合、彩度QPオフセット値を再度指定する必要はない。
【0043】
QG122が一組の彩度QPオフセット値をまだ符号化していなかった(すなわち、変数「IsCrCuQpOffsetCoded」が0である)場合、行512乃至517で変換ユニット500は、2つの彩度成分についての彩度QPオフセット値を指定する。この場合、変換ユニットは、彩度QPオフセットの集合を、2つの独立した符号付きの値として指定し、符号付きの値はそれぞれ、大きさ(「cu_chroma_cmp0_qp_offset_abs」または「cu_chroma_cmp1_qp_offset_abs」)と符号フラグ(「cu_chroma_cmp0_qp_delta_sign_flag」および「cu_chroma_cmp0_qp_delta_sign_flag」)とを用いてシグナリングされる。疑似コードは、ついで、変数「IsCrCuQpOffsetCoded」を1に設定し、これは、この量子化グループの彩度QPオフセット値がすでに指定されていることを示す。
【0044】
図2a乃至
図2bを参照しながら前述したとおり、別の実施形態においては、量子化グループは、2つの彩度成分についての彩度QPオフセット値を、別のかたちで指定する。
図6は、QG122内の追加の彩度QPオフセットの指定を、2つの彩度成分について彩度QPオフセット値を指定するための別法を用いて示す図である。
図6は、変換ユニット500についての疑似コードと同様の疑似コードによって記述されている変換ユニット600を示しており、唯一の違いは、行611乃至616は、両方の彩度成分に対して彩度QPオフセット値(大きさ+符号)を1つだけ指定するということである。一部の実施形態では、ほとんどの場合に2つの色成分の重要度は変わらないであろうから、両方の彩度成分について1つの彩度QPオフセット値を指定することで十分である。1つか2つのそのようなパラメータのシグナリングは、事前に決められてもよいし、あるいは、例えばSPS、PPSまたはスライスヘッダのような、さまざまな高位シンタックスレベルでシグナリングされてもよいだろう。
【0045】
一部の実施形態について、
図7は、追加の彩度QPオフセット指定を許容する動画ビットストリームから彩度QP値を判定するためのプロセス700を概念的に示す図である。一部の実施形態では、プロセス700は、表示用の動画ビットストリームを復号する時にこのプロセスを用いて彩度成分の逆量子化を行う動画復号器によって行われる。一部の実施形態では、プロセスは、復号器が動画ビットストリームを受信した時に始まり、表示のためかまたはその他の目的で、特定の動画ピクチャの復号を開始する。
【0046】
705で、プロセス700は、特定の動画ピクチャのピクチャヘッダまたはPPSの中のパラメータを処理する。
図3を参照しながら上述したとおり、一部の実施形態では、動画ピクチャのピクチャヘッダまたはPPSは、動画ピクチャについて追加の彩度QPオフセットが許容されているかどうかを判定するためのフラグ(例えば「additional_chroma_qp_offset」)を含んでいる。また、ピクチャヘッダまたはPPSは、追加の彩度QPオフセットが定義されることになる動画階層のレイヤを(例えば、変数「chroma_qp_offset_max_depth」を設定することによって)識別する。
【0047】
次に、プロセスは(710で)、高位レベルの彩度QPオフセット値を識別する。一部の実施形態では、この高位レベルの彩度QPオフセット値は、ピクチャヘッダの中に(またはPPSの一部として)符号化されたピクチャレベルのオフセットである。一部の実施形態では、この高位レベルの彩度QPオフセット値は、スライスヘッダの中に符号化されたスライスレベルのオフセットである。一部の実施形態は、ピクチャレベルとスライスレベルとをどちらも含めて、複数の高位レベルの彩度QPオフセット値を識別する。
【0048】
プロセスは次いで(720で)、この特定の動画ピクチャおよび/またはスライスについて追加の彩度QPオフセットが許容されているかまたは利用可能であるかどうかを判定する。追加の彩度QPオフセットが利用可能でない場合、プロセスは750へ進む。追加の彩度QPオフセットが利用可能である場合、プロセスは730へ進む。
【0049】
730でプロセスは、彩度量子化グループの開始点に到達したかどうかを判定する。一部の実施形態では、プロセスは、彩度量子化グループとして識別されていた動画階層のレベルに位置しているのかどうかを調べる。プロセスが彩度量子化グループの開始点に位置していない(例えば、すでに彩度量子化グループの内部に位置している)場合、プロセスは750へ進む。プロセスが彩度量子化グループの開始点に位置している場合、プロセスは740へ進む。動作720および730の例は、上記の
図4を参照しながら論じている。
【0050】
740でプロセスは、彩度量子化グループについての彩度QPオフセット値を識別する。一部の実施形態では、彩度QPオフセットは、
図5および
図6を参照しながら上記で論じたように、彩度量子化グループ内で明示的に符号化される。
【0051】
次いでプロセスは(750で)、彩度量子化グループについての輝度QP値を識別する。上記のとおり、一部の実施形態では、輝度QP値が輝度量子化グループに従って設定されるが、輝度量子化グループは、彩度量子化グループと同じであってもよいし、同じでなくてもよい。シグナリングによっては、輝度量子化グループが彩度量子化グループより多いことや少ないことがある。一部の実施形態では、輝度量子化グループが複数の彩度量子化グループを含んでいることがあり、逆の場合もある。一部の実施形態では、彩度量子化グループと輝度量子化グループとは、互いに重なり合うことがある。従って、同じ彩度量子化グループの中の異なる符号化ユニットが、輝度量子化グループに基づいて異なる輝度QPを有することがある。
【0052】
次に、プロセスは(760で)彩度QP値を計算する。復号器の場合、一部の実施形態は、識別された輝度QP値と識別された個々の彩度QPオフセットとから、彩度QP値を計算する。一部の実施形態では、数式(1)乃至(6)として上記で示すように、(スライス/ピクチャレベルおよびQGレベルからの)識別された彩度QPオフセットをすべて輝度QP値に加えることによって、これが達成される。
【0053】
次いでプロセスは(770で)、(高位レベルの彩度QPオフセットがピクチャ全体に関する場合)ピクチャの終了点に達したかどうか、あるいは、(高位レベルの彩度QPオフセットがスライスに関する場合)スライスの終了点に達したかどうかを判定する。そうであれば、プロセス700は終了する。そうでなければ、プロセス700は、730に戻って、次の量子化グループを処理する。
【0054】
図1乃至
図6を参照しながら上記で示したとおり、彩度QP値は、輝度QP値からのオフセットを用いることによって予測的に符号化される。また、一部の実施形態では、オフセット値自体も、例えばQGレベルのオフセットがスライスおよび/またはピクチャレベルのオフセットからのオフセットであったり、および/または、1つの彩度成分のオフセット値が別の彩度成分からのオフセットとして符号化されたりというように、相互からのオフセットによって予測的に符号化される。一部の実施形態では、彩度QPオフセットはさらに、隣接する符号化ユニットもしくは符号化ブロックの彩度値もしくはオフセットから予測されたり、あるいは、現行の彩度量子化グループの符号化ユニットもしくは符号化ブロックに非常に十分に類似している可能性が高いため、隣接する動画ピクチャの中のコロケートされた符号化ユニットもしくは符号化ブロックの彩度値もしくはオフセットから予測されたりする。一部の実施形態では、少なくとも一部の量子化グループについては、予測は行われない。このような場合、彩度QP値は、(輝度からオフセットする必要はないため)輝度成分のQPパラメータが無視されるように(オフセットとしてではなく)明示的に符号化される。
【0055】
一部の実施形態では、隣接する量子化グループからの一組の彩度QPオフセット値が現行の量子化グループについて用いられることになることが、フラグを用いて指示される。一部の実施形態では、この隣接する量子化グループは、空間的に現行の量子化グループの左側かまたはその上側に位置している。例えば、一部の実施形態では、隣接する量子化グループの彩度QPオフセット値が用いられることになるのかどうかが、フラグ「cu_qp_update_signal」を用いて指示される。一部の実施形態では、フラグ「cu_qp_update_signal」が、
図6の行612の「cu_chroma_qp_offset_abs」パラメータの前にシグナリングされる。
【0056】
フラグが「1」である場合、現行の量子化グループは、それ自体の彩度QPオフセット値を指定するための更新を提供することになる。フラグが「0」である場合、現行の量子化グループは、それ自体の彩度QPオフセット値の集合を更新するのではなく、最後に指定された彩度QPオフセット値の集合から(例えば左側の隣接する量子化グループから)か、または、別の以前に指定された彩度QPオフセット値から(例えば上側の隣接する量子化グループからかまたは別の隣接する量子化グループから)、彩度QPオフセット値を継承することになる。隣接する彩度QPオフセット値が利用できない場合には、一部の実施形態ではPPSおよび/またはスライスヘッダからのデフォルトQPオフセット値を用いる。
【0057】
一部の実施形態では、フラグ「cu_qp_update_signal」が、彩度QPオフセット値を指定するための異なる選択肢を扱うため、追加の見込まれる値をとることがある。例えば、一部の実施形態では、フラグが「0」である場合、左側の隣接する量子化グループからの彩度QPオフセット値が用いられ、フラグが「1」である場合、上側の隣接する量子化グループからの彩度QPオフセット値が用いられ、フラグが「2」である場合、現行の量子化グループが、新たな一組の彩度QPオフセット値を明示的に指定することになる。そうでない場合、現行の量子化グループは、PPSおよび/またはスライスヘッダからのデフォルトQPオフセット値を用いることになる。一部の実施形態では、現行の量子化グループによって継承される彩度QPオフセット値は、隣接する量子化グループのうちの少なくとも2つ(例えば左側と上側)の彩度QPオフセット値の平均値を基にしている。
【0058】
オーバヘッドをさらに削減するため、一部の実施形態では、これらの追加の彩度QPオフセットが入るのはわずかな範囲の値、すなわち−xからxまでの値に限られることを指定する。そうすることによって、(Context Adaptive Binary Arithmetic(CABAC)符号化の場合、または「有限の」共通可変長符号化スキーム("max-limited" universal variable length coding scheme)を用いる場合)シグナリングされることになる情報の予想統計が変わるため、エントロピー符号化プロセスが変わる。一部の実施形態では、xの値(すなわち範囲)は、シーケンス全体について事前に決められるかまたは、PPS、SPSもしくはスライスヘッダのような高位シンタックスレベルでシグナリングされる。実施形態によっては、xを直接指定するか、あるいは、xが2の累乗に当たる場合には値log2(x)を指定することによって、これを達成する。一部の実施形態は、大きさすなわちabs(x)とxの符号とを分離することによってxを指定する。CABACでは、abs(x)の値は、二値化処理の中で必要なcMaxパラメータに対応する。
【0059】
b.テーブル内に追加の彩度QPオフセットを指定する
オーバヘッドやビット使用をさらに削減するため、一部の実施形態は、個々の成分の見込まれるすべてのオフセット値、あるいは、両方の成分の組み合わせ値を、高位レベルシンタックスにおいて、例えばシーケンスパラメータセット(SPS)やピクチャパラメータセット(PPS)の中に、あるいは現行のスライスヘッダの中に指定する。実施形態によっては、高位レベルのヘッダ(SPS/PPS/スライスヘッダ)は、多様な見込まれるオフセット値をテーブル形式にリストし、そのテーブル内の各エントリには指標が割り当てられる。次いで、符号化ユニット/量子化グループレベルにおいて、一部の実施形態は、所望の量子化オフセット値の指標だけを指定する。そのようなオフセットは、PPSもしくはスライスヘッダで指定されるオフセット値に非依存であってもよいし、逆に、PPSもしくはスライスヘッダで指定されるオフセット値に追加されてもよい。ビットストリームサイズを削減するため、一部の実施形態は、テーブル内のエントリの数を、最大値までに制限する。
【0060】
図8は、高位レベルヘッダで符号化された見込まれる彩度QPオフセット値のテーブル890を含む階層的動画符号化構造800を示す図である。動画符号化構造の低位レベルの彩度QGは、次いで、指標を用いて、見込まれる彩度QPオフセット値の1つをテーブル890から選択して、彩度QP値を計算する。動画符号化構造800は、動画符号化構造100に類似している。動画符号化構造800は、複数のピクチャ801乃至803を含んでいる。それらのうちでピクチャ802は、複数のスライス811乃至812を含んでいる。スライス811は、複数の彩度QG821乃至823を含んでいる。ピクチャ802は、ピクチャ802によって包含されるすべての彩度QGに適用可能な一組の彩度QPオフセット指定を含む、ピクチャパラメータセット(PPS)831を有する。また、
図1ならびに数式(1)および(2)を参照しながら上述したとおり、一部の実施形態は、スライスレベルの彩度QPオフセット(図示せず)を指定し、そして、彩度QP値の適合は、動画符号化階層の複数のレベルからの彩度QPオフセットパラメータに基づいて行なわれることを指定する。
図1の彩度QG121乃至123がそれら自体の彩度QPオフセット値の集合を指定するのとは異なり、彩度QG821乃至823はそれぞれ、一組の彩度QPオフセット値をテーブル890から選択する。
【0061】
テーブル890は、複数のエントリを含むアレイである。各エントリは、ピクチャの中のいずれかの量子化グループによって選択されうる一組の彩度QPオフセットを格納している。この例では、テーブル890は、エントリ891乃至895を含んでおり、それらはそれぞれ、彩度QPオフセット集合A、B、C、D、Eに対応する。一部の実施形態では、それぞれのエントリは、いかなる数の量子化グループによって選択されてもよいし、まったく選択されなくてもよい。
図8の例では、QG822およびQG823はいずれも、QPオフセット集合A(891)を選択し、QG821は、彩度QPオフセット集合C(893)を選択する。一部の実施形態では、符号化器は、ビットレートを最小化するため、テーブル内にどの彩度QPオフセット集合を含めるのか、そして、いくつの彩度QPオフセット集合を含めるのかということを決定する。
【0062】
テーブル890から彩度QPオフセット値の集合が識別されれば、彩度量子化パラメータの計算は、
図1のそれと同様である。
図8の例では、(彩度QG821に重なり合っている4つの輝度QGからの)輝度QP値851が彩度QG821に適用可能であり、(同じ輝度QGからの)輝度QP値852が彩度QG822に適用可能であり、(彩度QG823に重なり合っている2つの輝度QGからの)輝度QP値853がQG823に適用可能である。輝度QP値851と、(ピクチャ802および/またはスライス811についての)彩度QPオフセット831と、(QG821についてのテーブルのエントリ893から検索された)彩度QPオフセットCとを加えると、QG821についての彩度QP値861が得られる。輝度QP値852と、彩度QPオフセット831と、(テーブルのエントリ891から検索された)彩度QPオフセットAとを加えると、QG822についての彩度QP値862が得られる。輝度QP値853と、彩度QPオフセット831と、(テーブルのエントリ891から検索された)彩度QPオフセットAとを加えると、QG823についての彩度QP値863が得られる。
【0063】
一部の実施形態では、彩度QPオフセットのテーブルが、符号化された動画ピクチャのヘッダエリア内で符号化される。
図9は、テーブル890を符号化する例示的なピクチャヘッダまたはPPS900を示す図である。ピクチャヘッダ900は、追加の彩度QPオフセットを収容するために、H.265標準から修正された疑似コードによって記述されている。
【0064】
ピクチャヘッダ900のための疑似コードを、黒い行911乃至917で示しており、これらは、彩度QPオフセット用の量子化グループを定義するためだけでなく、テーブル890を符号化するためにも追加される。具体的には、行911の中にあるパラメータ「additional_chroma_qp_offset」が、ピクチャ802について追加の彩度QPオフセット指定が予定されていることを復号器に知らせ、行913の中にあるパラメータ「chroma_qp_offset_max_depth」が、ピクチャ802の中のQGについてのレベル(従って、サイズまたは階層的深度)を定義する。疑似コードの行914乃至916は、次いで、テーブル890の各エントリ(891乃至895)についての彩度QPオフセット値を定義する。図示するとおり、テーブルの各エントリには、第1の成分についての彩度QPオフセット値(「chroma_cmp0_qp_offset[k]」)が、そして、第2の成分についての彩度QPオフセット値(「chroma_cmp1_qp_offset[k]」)が、割り当てられる。
【0065】
彩度QPオフセットテーブルの各エントリについての2つの彩度成分は相関関係にある可能性が高いのだから、一部の実施形態では、一方の彩度成分の彩度QPオフセット値を用いて、他方の彩度成分の彩度QPオフセット値を予測する。言い換えると、テーブル内のk番目のエントリについて、chroma_cmp0_qp_offset[k]が第1の彩度成分のオフセット値を表し、chroma_cmp1_qp_offset[k]が第2の彩度成分のオフセット値を表すとすれば、k番目のエントリの第2の彩度成分についての彩度QPオフセットは、以下のように計算される。
chroma_cmp1_qp_offset[k]=chroma_cmp0_qp_offset[k]
+delta_chroma_cmp1_qp_offset[k] (7)
【0066】
つまり、完全なオフセットパラメータ、すなわちchroma_cmp1_qp_offset[k]を送信する代わりに、一部の実施形態では、差分パラメータ、すなわちdelta_chroma_cmp1_qp_offset[k]を送信して、第2の彩度QPオフセットであるchroma_cmp1_qp_offset[k]についてのオフセットを計算する。
図10は、数式(7)に従って(行1015および1016での)彩度QPオフセットテーブル890の各エントリ(891乃至895)をchroma_cmp0_qp_offset[k]およびdelta_chroma_cmp1_qp_offset[k]として符号化するピクチャヘッダ1000を示す図である。
【0067】
ビット使用を削減するために彩度QPオフセットテーブルを予測的に符号化する方法は、他にもありうる。例えば、一部の実施形態では、彩度QPオフセットテーブルのエントリは、1つを除くすべてのエントリが他のエントリから予測されるように、互いに予測的に符号化される。一例として、テーブル内の第1のエントリの後に続くエントリをそれぞれ、テーブル内の前のエントリから予測される差分値として符号化することが挙げられる。一部の実施形態では、第1のエントリは、明示的なQPである。一部の実施形態では、第1のエントリ自体がオフセットであり、従ってそれ自体が差分でもある。
【0068】
図11は、ピクチャヘッダ内のテーブルからの彩度QPオフセット値を用いる量子化グループの中にありうる例示的な符号化ツリーユニット1100を示す図である。符号化ツリーユニット1100は、追加の彩度QPオフセットを収容するために、H.265疑似コードから修正された疑似コードによって記述されている。符号化ツリーユニット1100は、スライス811の量子化グループ821の中にある。スライス811は、ピクチャ802の中にあり、そのヘッダまたはPPSは、テーブル890を含んでいる。符号化ツリーユニット1100についての疑似コードは、
図4の符号化ツリーユニット400についての疑似コードと同一であるが、なぜなら、一部の実施形態では、明示的に彩度QPオフセット値を内蔵する量子化グループ内の符号化ツリーユニットと、テーブルからの一組の彩度QPオフセット値を用いる量子化グループ内の符号化ツリーユニットとの間には、差がないからである。
【0069】
符号化ツリーユニット1100についての疑似コードを、黒い行1111乃至1113で示しているが、これらは、符号化ツリーユニットがQGの一部であるかどうかを判定する目的で追加されたものである。具体的には、行1111で、パラメータ「additional_chroma_qp_offset」を用いて、追加の彩度情報が許容されているかどうかが表示される。パラメータ「chroma_qp_offset_max_depth」が、変数「log2CbSize」と比較されて、符号化ツリーユニット1100が彩度量子化グループ内にあるのかどうかが判定される。また、一部の実施形態については、これが、彩度量子化グループの開始点を初期化する。
【0070】
図12は、指標を用いて彩度QPオフセット値のテーブルの中のエントリを選択する量子化グループを示す図である。上記で論じたとおり、量子化グループ821は、符号化ツリーユニット1100を含んでおり、これが次には、変換ユニット1200を含んでいる。
図12では、変換ユニット1200は、追加の彩度QPオフセットを収容するために、H.265疑似コードから修正された疑似コードによって記述されている。
【0071】
変換ユニット1200についての疑似コードを、黒い行1211乃至1214で示しているが、これらは、追加の彩度QPオフセットを指定する目的で追加されたものである。具体的には、行1211で、パラメータ「additional_chroma_qp_offset」を用いて、追加の彩度情報が許容されているかどうかが表示される。変数「IsCrCuQpOffsetCoded」を用いて,変換ユニット1200において彩度QPオフセット情報を指定(または受信)することが必要なのかどうかが表示される。QG821についての彩度QPオフセットがすでに符号化されている場合、彩度QPオフセット値をもう一度指定する必要はない。QG821がすでに一組の彩度QPオフセット値を符号化しているのではない場合(すなわち、変数「IsCrCuQpOffsetCoded」が0である場合)、行1212の変換ユニット1200が、テーブル890からエントリを選択するための指標「cu_chroma_qp_offset_table_index」を指定する。この例では、指標の値は、テーブル890のエントリC(893)に格納されている彩度QPオフセット値を選択するように設定される。
【0072】
一部の実施形態について、
図13は、見込まれる彩度QPオフセット値のテーブルを用いて追加の彩度QPオフセット指定を実装する動画ビットストリームから彩度QPオフセット値を判定するプロセス1300を概念的に示す図である。一部の実施形態では、プロセス1300は、表示用またはその他の目的で動画ビットストリームを復号する時にこのプロセスを用いて彩度成分の逆量子化を行う動画復号器によって行われる。一部の実施形態では、プロセス1300は、復号器が動画ビットストリームを受信した時に始まり、一部の実施形態では、特定の動画ピクチャの復号を開始する。
【0073】
1305で、プロセス1300は、特定の動画ピクチャのピクチャヘッダまたはPPSの中のパラメータを処理する。一部の実施形態では、ピクチャヘッダは、動画ピクチャについて追加の彩度QPオフセットが許容されているかどうかを判定するためのフラグを含んでいる。また、ピクチャヘッダは、追加の彩度QPオフセットについての量子化グループが定義されることになる動画階層のレイヤを識別するためのパラメータを含んでいる。
【0074】
次に、プロセスは(1310で)、高位レベルの彩度QPオフセット値を識別する。一部の実施形態では、この高位レベルの彩度QPオフセット値は、ピクチャヘッダの中に(またはPPSの一部として)符号化されたピクチャレベルのオフセットである。一部の実施形態では、この高位レベルの彩度QPオフセット値は、スライスヘッダの中に符号化されたスライスレベルのオフセットである。一部の実施形態では、ピクチャレベルとスライスレベルとをどちらも含めて、複数の高位レベルの彩度QPオフセット値を識別する。
【0075】
プロセスは次いで(1320で)、この特定の動画ピクチャまたはスライスについて追加の彩度QPオフセットが許容されているかまたは利用可能であるかどうかを判定する。追加の彩度QPオフセットが利用可能でない場合、プロセスは1350へ進む。追加の彩度QPオフセットが利用可能である場合、プロセスは1325へ進み、ビットストリームから彩度QPオフセットテーブルのエントリを受信する。
【0076】
次に、プロセスは(1330で)、量子化グループの開始点に達したかどうかを判定する。一部の実施形態では、プロセスは、量子化グループとして識別されていた動画階層のレベルに位置しているのかどうかを調べる。プロセスが量子化グループの開始点に位置していない(例えば、すでにQGの内部に位置している)場合、プロセスは1350へ進む。プロセスが量子化グループの開始点に位置している場合、プロセスは1335へ進む。
【0077】
1335でプロセスは、符号化すべき残余の彩度係数があるかどうかを判定する。一部の実施形態では、残余の彩度係数がない場合には、オフセット(またはそれらの関連指標)は、まったくシグナリングされない。シグナリングは、彩度ブロックについての最初の非ゼロ変換係数に遭遇した時に開始され、その時点から彩度量子化グループの終了まで、彩度QPオフセットはアクティブになる。彩度QPオフセットは、彩度ブロックの最初の非ゼロ変換係数に遭遇するまで0である(従って、彩度係数を持たない領域は、彩度QPオフセットシグナリングを有しないであろう)。符号化すべき残余の彩度係数がある場合、プロセスは1340へ進む。そうでなければ、プロセスは1350へ進む。
【0078】
1340では、プロセスは、量子化グループについての彩度QPオフセット値の集合を格納しているとして、彩度QPオフセットテーブル内のエントリの1つを選択する。一部の実施形態では、この動作は、ビットストリームから指標を受信することと、受信した指標を用いて彩度QPオフセットテーブルからエントリを選択することとを伴う。テーブル内の彩度QPオフセット値を予測的に符号化するような一部の実施形態では、このプロセスは、予測または差分値から(両方の彩度成分の)彩度QPオフセット値を復元することを含んでいる。
【0079】
次いでプロセスは(1350で)、量子化グループについての輝度QP値を識別する。上述したように、一部の実施形態では、彩度QP値についての量子化グループと同じ量子化グループについて、輝度QP値が定義される。一部の実施形態では、輝度QPについての量子化グループと彩度QPについての量子化グループとは、無関係に定義される。
【0080】
次に、プロセスは(1360で)、彩度QP値を計算する。一部の実施形態では、識別された輝度QP値から、および、識別されたそれぞれの彩度QPオフセットから、彩度QP値が計算される。一部の実施形態では、これは、上記の数式(1)乃至(6)に示したように(スライス/ピクチャレベルおよびQGレベルから)すべての識別された彩度QPオフセットを輝度QP値に加えることによって、達成される。
【0081】
次いでプロセスは(1370で)、(高位レベルの彩度QPオフセットがピクチャ全体に関する場合)ピクチャの終了点に達したかどうか、あるいは、(高位レベルの彩度QPオフセットがスライスに関する場合)スライスの終了点に達したかどうかを判定する。そうであれば、プロセス1300は終了する。そうでなければ、プロセス1300は、1330に戻って、次の量子化グループを処理する。
【0082】
図5、
図6および
図12では、一組の彩度QPオフセット値を指定するために量子化グループが用いることができる複数の多様な方法を導入した。一部の実施形態では、異なるピクチャもしくはスライスにおける量子化グループが、異なる方法を用いて彩度QPオフセット値を指定してもよい。実施形態によっては、符号化器は、柔軟性を高めて符号化のオーバヘッドを削減するために、現行のピクチャもしくはスライスについて必要だと自分が考える、最良の方法を選択する。
【0083】
一部の実施形態について、
図14は、追加の彩度QPオフセット値を指定する方法についての選択肢を含むピクチャヘッダ1400についての疑似コードを示す図である。ピクチャヘッダ1400は、フラグ「additional_chroma_qp_offset」を(行1411で)、そしてフラグ「chroma_qp_offset_max_depth」を(行1413で)含んでいるという点で、ピクチャヘッダ900に類似している。また、ピクチャヘッダ1400は、彩度QPオフセットテーブル890のエントリを(行1415乃至1417に)含んでいる。しかし、ピクチャヘッダ900とは異なり、ピクチャヘッダ1400は、「chroma_qp_offset_method」を(行1414で)設定することによって、方法も指定する。
【0084】
図15は、3つの異なる方法のいずれかを用いて量子化グループについての彩度QPオフセット値を指定することができる変換ユニット1500についての疑似コードの実装を示す図である。方法フラグ「chroma_qp_offset_method」が(行1512で)0に設定されている場合、変換ユニット1500は、指標「cu_chroma_qp_offset_table_index」を用いてテーブル890からエントリを選択し、
図12の場合のようにQG821の彩度QPオフセット値を計算する。方法フラグが(行1514で)1に設定されている場合、変換ユニット1500は、
図5の場合のように(大きさと符号フラグとをいずれも用いて)2つの彩度成分についての2つの独立した彩度QPオフセット値を符号化する。方法フラグが(行1522で)2に設定されている場合、変換ユニット1500は、
図6の場合のように、両方の彩度成分について1つの彩度QPオフセット値だけを符号化する。
【0085】
II.追加の彩度QPオフセットの割当て
別の実施形態においては、符号化器は、別の方法を用いて追加の彩度QPオフセット値を識別して割り当てる。一部の実施形態では、符号化器が、量子化のための最適なQP値を識別することを目的として(例えば、品質とビットレートとを最適にバランスさせるように)、動画シーケンス内の画像を分析する。一部の実施形態は、彩度QP値の共通集合によって最適に符号化されうる量子化グループを識別することを目的として、画像内のさまざまな領域を分析する。
【0086】
一部の実施形態では、事前分析ステップが行われ、ここでは符号化器が、領域レベルの分析(例えばN=M=4の場合にNxMブロック毎に、またはオブジェクト分割に基づく分析)を行って、その領域内の各色成分について、強さ(例えば、輝度の平均値または明度、および色の飽和度)、色相、分散/アクティビティ/テクスチャの特性、ノイズ特性、動作特性(例えば動きベクトルおよび/または予測歪曲値)を抽出する。
【0087】
異なるタイプの動画コンテンツが、同一の動画ストリーム内で、あるいは同一の動画画像内で、合成されることがあるので、一部の実施形態では、異なる動画コンテンツタイプの画像の中の異なる領域を識別する。実施形態によっては、異なるタイプの動画コンテンツを持つ異なる領域は、異なる彩度QPオフセット値が割り当てられるかまたは、異なる量子化グループに割り当てられる。一部の実施形態は、グラフィックスコンテンツを実際の動画コンテンツと区別する。一部の実施形態は、当初4:4:4フォーマットで符号化された4:4:4動画コンテンツを、4:2:0フォーマットからアップサンプルされた4:4:4動画コンテンツと区別する。一部の実施形態は、当初は別のビット深度であった可能性がある動画コンテンツを見分ける。一部の実施形態では、色成分全体にわたるそれらの関係およびレート制御情報に加えて、動画コンテンツのこれらの特性を用いて、すべての色成分間の量子化レベルまたは量子化の関係を判定する。
【0088】
図16は、画像1600の例示的な分割および分類を示す図である。画像は、符号化ツリーユニットに分割されており、各符号化ツリーユニットは、符号化ユニットに細分化されている。画像1600の各種の符号化ユニットは、4つの異なる彩度QPオフセットグループに分割されている。一部の実施形態では、4つの異なる彩度QPオフセットグループが、PPS内でシグナリングされ、符号化器は、量子化グループレベルでシグナリングされることになる適切なグループを選択することができる。一部の実施形態では、彩度QPオフセットは、符号化の時点で各量子化グループ内に明示的にシグナリングされる。
【0089】
彩度QPオフセット値の選択は、輝度成分および彩度成分間の相対的な視覚的複雑性またはテクスチャによって判定される。画像1600の量子化グループには、それらのテクスチャのレベルに従って、異なるカテゴリ1611乃至1614が割り当てられる。例えば、すべての色成分全体で単調に見えるエリアは第1のカテゴリ1611に属し、高テクスチャの色成分と単調な輝度のエリアは第2のカテゴリ1612に属し、単調な色情報と高テクスチャの輝度のエリアは第3のカテゴリ1613に属し、3つの成分すべてにわたって高テクスチャのエリアは第4のカテゴリ1614に属する。一部の実施形態では、符号化器は、動きおよび強さに基づいて各カテゴリについて追加の下位カテゴリを作成してもよい。一部の実施形態では、2つの彩度成分自体の差を考慮に入れて、追加のカテゴリ化が行われる。
【0090】
次いで、これらのカテゴリ化を用いて、異なるカテゴリについて異なる彩度QPオフセット集合を指定することができるだろう。例えば、一部の実施形態では、第1のカテゴリ1611(すべて単調)にはゼロまたは負のQPオフセットが割り当てられる。このシナリオでは、負の彩度QPオフセットによって、これらの領域における彩度品質の割当ての向上が可能になるのだが、それは、彩度品質の向上は、すべての色成分の特性によって一層はっきりしうるからである。第2のカテゴリ1612(単調な輝度と高テクスチャの色情報)については、より大きな、正の、QPオフセットが用いられることがあるだろう。この場合、より大きな彩度QPによって、輝度成分を圧倒しないようにする、彩度成分のより良い制御が可能になり、他方、彩度情報からの若干のテクスチャマスキングは、依然として用いられて、主観的な良好な品質を保証することができるだろう。第3のカテゴリ1613(高テクスチャの輝度だが単調な彩度)については、一部の実施形態は、より大きい負の彩度QPオフセットを用いて、少し良好な色品質を保証するのに役立つようにする。その他の一部の実施形態は、より大きい正の彩度QPオフセットを用いて、輝度テクスチャマスキングの効果を向上させる。第4のカテゴリ1614(3つの成分すべてにわたって高テクスチャ)については、一部の実施形態は、ゼロまたは正の彩度QPオフセットを用いて、輝度テクスチャマスキングの効果を向上させ、そして、彩度の主観的な品質の重要でない向上のためにビットを浪費しないようにする。留意すべきことだが、量子化グループに割り当てられる的確な彩度QPオフセット値は、その量子化グループについての対応する輝度QP値に依存する。主観的品質や客観的品質、あるいは他の符号化器におけるビットレート決定メカニズム次第で、別の決定が行われることもありうるだろう。
【0091】
一部の実施形態では、限定された数の彩度QPオフセットが許可または所望されている場合(領域およびそれらの所望のQPオフセット集合の判定は別として、それらの指定によって必要になると考えられるビットオーバヘッドの増加が見込まれるので)、各オフセット集合の発生だけでなくその知覚される主観的または客観的品質の影響に基づいて追加決定が行われる。
【0092】
最も重要なオフセット集合だけがこのときシグナリングされるのだから、一部の実施形態では、次いで、これらの基準を用いて、ビットストリーム内でシグナリングされると見込まれる彩度QPオフセット集合の数を「削減(prune)」する。「削減(prune)」というカテゴリに分類される領域には、所望の値に十分近いオフセット集合を依然として割り当てることもできる。何らかの主観的または客観的重み付けプロセスを考えれば、これは、行われうる妥協案であり、それによって、指定された彩度QPオフセットは、グループ化された個々の領域タイプすべてについて「最適には満たない」が、ビットレートの制限を考えれば、ベストな全体的/統合性能がもたらされる可能性が高い。
【0093】
事前分析が不可能なリアルタイムの用途については、一部の実施形態は、QPオフセットの「事前固定(プリフィックス)決定」を用いる。一部の実施形態では、決定は、すでに符号化された以前のピクチャからのデータの分析に基づいて行なわれる。彩度QPオフセットがすべての量子化グループについて明示的にシグナリングされるような一部の実施形態では、決定は、その選択された輝度量子化パラメータならびにその各種の空間−時間特性および色特性だけでなく、過去のブロックからの符号化情報(すなわち、ビットレートや輝度と彩度との間の関係はどうだったのか、あるいは、以前に符号化された他の同様のブロックまたは隣接するブロックの導入された歪みはどうだったのか)にも基づいて、すべてのアクティブに符号化されるブロックについてオンザフライで、または動的に、行われる。一部の実施形態では、輝度量子化パラメータは、同じタイプのビットレートおよびコンテンツ特性の関係および条件を所与として、彩度QPオフセットと一緒に導出される。
【0094】
一部の実施形態はさらに、その隣接するピクチャを調べることによって、現行のピクチャの彩度QPオフセットの選択を改善させる。具体的には、一部の実施形態は、これらの隣接するピクチャは、どのようにして符号化されたか、あるいは符号化されることになるのかだけでなく、これらの隣接するピクチャはどのようにして現行のピクチャおよびその領域に時間的に関係しているのかについても調べる。例えば、現行のピクチャが「キー」となるピクチャとして(例えば、イントラまたは「周期的」リフレッシュピクチャとして)符号化されることになる場合、一部の実施形態は、現行のピクチャの彩度品質を向上させるために、追加の彩度QPオフセットを符号化するであろう。逆に、現行のピクチャが、使い捨てのピクチャかまたは符号化階層においてそれほど重要でないピクチャである場合、一部の実施形態は、より高いビットレートをもたらすようなやり方で追加の彩度QPオフセットを割り当てることは控える(あるいは、追加の彩度QPオフセットをまったく使わない)であろう。他のタイプのピクチャについては、一部の実施形態は、より穏やかな彩度QPオフセットの変更を用いて、ビットレートと品質との間のよりよい妥協案を達成する。
【0095】
一部の実施形態では、例えば解像度、品質、ビット深度等といった、異なるスケーラビリティのレイヤについて、異なる彩度QPオフセットパラメータが指定される。一部の実施形態は、追加の彩度QPオフセットを、異なる彩度QPオフセットが異なるビューに割り当てられる3D/マルチビューアプリケーションに適用する。例えば、オーバヘッドを削減して、そのようなシステムの主観的品質を最大化するために、彩度QPオフセットを割り当てて予測するために、ステレオマスキングが考慮されてもよいだろう。
【0096】
一部の実施形態については、
図17は、画像のさまざまな領域を分析して、それに従って彩度QPオフセットを割り当てるためのプロセス1700を概念的に示す図である。プロセスは、一部の実施形態では、動画符号化器によって行われる。
【0097】
プロセスは、動画ピクチャを(1710で)受信した時に始まる。この動画ピクチャは、圧縮されていない動画ストリームの中の生の画像であってもよいし、圧縮された動画ビットストリームからの復号されたピクチャであってもよい。次いでプロセスは(1720で)、領域内の符号化ユニット同士が彩度QPオフセット値の共通集合を共有できるようにさせる共通の特性を共有する、ピクチャ内の領域を識別する。例えば、一部の実施形態は、当初4:2:0フォーマットで符号化された領域を、ビットレートを削減するためにより高位のQP値が(従って正の彩度QPオフセットが)用いられうる領域として識別する。逆に、一部の実施形態は、当初4:4:4フォーマットで符号化された領域を、品質を維持するためにより低位のQP値が(従ってより低いまたは負のQPオフセット値が)必要な領域として識別する。
【0098】
プロセスは次いで(1730で)、各領域の空間−時間特性を分析する。一部の実施形態では、この分析には、領域のテクスチャ/分散/アクティビティ、フォーマット(4:4:4または4:2:0等)、ノイズ、動き、ビット深度、あるいは、輝度と彩度との関係あるいは2つの彩度成分間の関係に影響を及ぼしうるその他の特性の分析が含まれる。
【0099】
次にプロセスは(1740で)、領域の分析に基づいて彩度QPオフセット値を割り当てる。一部の実施形態では、プロセスは、最初に、1730で行われた分析に基づいて領域についての適切な彩度QP値を識別し、次いで、選択された輝度QP値を識別された彩度QP値から引き算して、所望の総合的彩度QPオフセット値を求める。また、プロセス1740は、一部の実施形態では、総合的彩度QPオフセット値を、動画符号化階層のさまざまなレベルでの彩度QPオフセット値(例えば、ピクチャ、スライスおよび量子化グループ)に分解する。一部の実施形態は、総合的彩度QPオフセット値から高位レベルシンタックス要素についての彩度QPオフセット値を引き算することによって、量子化グループについての彩度QPオフセット値を識別する。一部の実施形態では、この動作は、下記の
図18を参照しながら記述するように、レート制御器によって行われる。
【0100】
次いでプロセスは(1750で)、領域内の量子化グループについて識別された彩度QPオフセット値を、彩度QPオフセットテーブルの中に投入する(populate)。また、プロセス1700は、上記のセクションI.bで論じたように、量子化グループ内の対応する指標値を符号化する。彩度QPオフセット値を明示的に指定する一部の実施形態では、プロセス1700は、上記のセクションI.aで論じたように、量子化グループ自体の中で彩度QPオフセット値を符号化する。
【0101】
次いでプロセスは(1760で)、依然として分析されていない領域がピクチャ内にまだあるかどうかを判定する。そうであれば、プロセスは1720に戻る。そうでない場合、プロセス1700は終了する。
【0102】
III.動画システム
図18は、本発明の一部の実施形態についての一般的な動画符号化器1800(例えばHEVC符号化器)を示す図である。符号化器1800は、動画ソース1805から動画ストリームを受信して、記憶および/または送信されることになる、圧縮され符号化されたビットストリーム1895を生成する。
【0103】
動画符号化器は、変換モジュール1810と、量子化モジュール1815と、エントロピー符号化器1820と、逆量子化モジュール1825と、逆変換モジュール1830と、デブロックフィルタ1840と、サンプル適応オフセット(SAO)フィルタ1845と、フレームバッファ1850と、レート制御モジュール1835と、予測モジュール1890とを含んでいる。予測モジュール1890は、動き予測モジュール1860と、動き補償モジュール1865と、イントラ予測モジュール1870と、モード決定モジュール1880とを含んでいる。また、動画符号化器1800は、一部の実施形態では動画ディスプレイ1855を含んでいる。
【0104】
量子化モジュール1815は、変換モジュール1810からの変換係数(例えばDCT)に対して、量子化パラメータを用いて量子化を行うモジュールである。一部の実施形態では、変換モジュール1810は(例えば、HEVCによってサポートされる変換−バイパスモードの下で)完全にバイパスされ、量子化モジュール1815が画像値や画像予測エラー値を変換せずに受信するようにされてもよい。量子化モジュール1815は、各色成分についての異なる領域/ブロックについて、異なるQP値を適用する。また、量子化モジュール1815によって用いられるQP値は、輝度QP値および彩度QPオフセットとしてビットストリーム1895の中へ符号化される。一部の実施形態では、量子化モジュール1815によって用いられているQP値は、レート制御モジュール1835によって判定されて供給される。
【0105】
レート制御モジュール1835は、量子化モジュール1815(および逆量子化モジュール1825)によって用いられるQP値を制御することによって、符号化された動画ビットストリームのビットレートを制御する。一部の実施形態では、レート制御モジュール1835は、異なる量子化グループに対しては、異なるQP値を量子化モジュール1815に供給する。量子化に最も適した(輝度および彩度についての)QP値(例えば、所与の動画シーケンスについて品質とビットレートとの最適なバランス)を識別することを目的として、一部の実施形態のレート制御モジュール1835は、個々の輝度量子化グループについての輝度QP値と、個々の彩度量子化グループについての一組の彩度QPオフセット値とに到達するために、上記のセクションIIで述べた分析のうち少なくとも一部を行う。また、一部の実施形態では、レート制御器1835は、領域を識別し、(輝度および彩度)量子化グループを割り当てるために、分析を用いる。
【0106】
一部の実施形態では、レート制御器1835は、彩度QPオフセット値の集合を分解して、動画符号化階層のさまざまなレベルにおける彩度QPオフセット値の集合にする。実施形態によっては、彩度QPオフセット値の集合の少なくとも一部は、上記の数式(1)乃至(7)で示すように2つの彩度成分間の予測値にさらに分解される。一部の実施形態では、総合的彩度QPオフセット値から高位レベルのQPオフセット値を引き算することによって、低位レベルのQPオフセット値が識別される。例えば、一部の実施形態では、量子化グループレベルの彩度QPオフセットが以下のように計算される。
QPoffset_quant_group[i]=QPchroma[i]-QPluma
-QPoffset_pps[i]-QPoffset_slice[i] (8)
【0107】
次いで、彩度QPオフセット値のこれらの集合がエントロピー符号化器1820に提供されて、ビットストリーム1895へと符号化されることになる。一部の実施形態では、レート制御器1835は、見込まれる量子化グループレベルのオフセットのテーブルをコンパイルして、コンパイルされたテーブルをエントロピー符号化器1820に提供する。
【0108】
エントロピー符号化器モジュール1820は、量子化された変換係数やパラメータやその他の情報に対してエントロピー符号化(例えばCABAC)を行って、それらをビットストリーム1895へとパッケージ化するモジュールである。一部の実施形態では、エントロピー符号化モジュール1820は、彩度QPオフセット値をレート制御器モジュール1835から受信して、それらをビットストリームへとエントロピー符号化する。一部の実施形態では、エントロピー符号化器1820は、上記のセクションI.bで述べたように、彩度QPオフセット値をテーブルとしてピクチャのPPSエリアへと符号化する。一部の実施形態では、エントロピー符号化器は、上記のセクションI.aで述べたように、彩度QPオフセット値を個別の量子化グループへと符号化する。
【0109】
デブロックモジュール1840は、動画コーデックシステムの視覚的品質および予測性能を、符号化ブロック間で形成される鋭いエッジを滑らかにすることによって向上させるループフィルタモジュールである。一部の実施形態では、デブロックモジュール1840は、すべての適用可能な彩度QPオフセットから計算された総合的彩度QP値を用いて(すなわち、量子化グループおよびピクチャ/スライスの彩度QPオフセットを含めることによって)、そのデブロック動作を行う。その他の一部の実施形態では、デブロックモジュール1840は、一部の指定された彩度QPオフセットだけを考慮するか、またはPPSまたはスライスヘッダからの彩度QPオフセットだけを考慮する。実施形態によっては、シグナルである彩度QPオフセット値に基づいてデブロックプロセスを制御する。例えば、一部の実施形態は、彩度QPオフセット値を補正するために、デブロックパラメータを調整する。また、デブロックは、ループ外で、後工程として行われてもよい。一部の実施形態では、計算された総合的彩度QP値または一部の彩度QPオフセットが、SAO(例えばSAOフィルタ1845)、適応ループフィルタ(ALF)、またはノイズ付加のような、他のタイプのループ内またはループ外の後工程によって用いられる。
【0110】
図19は、本発明の一部の実施形態についての一般的な動画復号器1900(例えばHEVC復号器)を示す図である。復号器1900は、ビットストリーム1905を受信し、それを復号してディスプレイモジュール1965によって表示する。復号器1900は、エントロピー復号器1910と、逆量子化モジュール1920と、逆変換モジュール1930と、イントラ予測モジュール1950と、インター予測モジュール1980と、デブロックモジュール1960と、SAOモジュール1970と、フレームバッファ1975とを含んでいる。
【0111】
エントロピー復号器モジュール1910は、入力ビットストリームに対してエントロピー復号を行って、変換係数および復号器1900の中の他のモジュールについてのパラメータを抽出するモジュールである。具体的には、入力ビットストリーム1905の中に格納されている彩度量子化情報が、エントロピー復号器1910によって抽出され、逆量子化モジュール1920へと送られる。一部の実施形態では、彩度量子化情報には、PPS、スライスヘッダ内のテーブルからかまたは量子化グループ自体から抽出される、追加の彩度QPオフセット値が含まれる。
【0112】
復号器1900のデブロックモジュール1960は、符号化器1800のデブロックモジュール1840と同様の機能を行う。具体的には、デブロックモジュール1960も、適用可能な彩度QPオフセット全部から計算された最終の彩度QP値を用いて(すなわち、量子化グループおよびピクチャ/スライスの彩度QPオフセットを含めることによって)、デブロック動作を行う。他の一部の実施形態では、デブロックモジュール1960は、指定された彩度QPオフセットの一部だけを考慮するか、あるいは、PPSまたはスライスヘッダからの彩度QPオフセットだけを考慮する。一部の実施形態では、計算された総合的彩度QP値または一部の彩度QPオフセットが、SAO(すなわちSAOフィルタ1970)、ALF、またはノイズ付加のような、他のタイプのループ内またはループ外の後工程によって用いられる。
【0113】
IV.電子システム
上述の特徴および用途の多くは、コンピュータ可読記憶媒体(コンピュータ可読媒体とも呼ばれる)に記録される一組の命令として指定されるソフトウェアプロセスとして実装される。これらの命令が1つ以上のコンピュータまたは処理ユニット(例えば、1つ以上のプロセッサ、プロセッサのコア、または他の処理ユニット)によって実行されると、それらは処理ユニットに、命令の中に指示された動作を行わせる。コンピュータ可読媒体の例として、CD−ROM、フラッシュドライブ、ランダムアクセスメモリ(RAM)チップ、ハードドライブ、消去可能プログラム可能読み出し専用メモリ(EPROM)、電気的消去可能プログラム可能読み出し専用メモリ(EEPROM)等が挙げられるが、それらに限定されない。コンピュータ可読媒体には、搬送波や無線または有線接続を通過する電気信号は含まれない。
【0114】
本明細書では、「ソフトウェア」という用語は、読み出し専用メモリの中に常駐するファームウェアや、プロセッサによる処理のためにメモリに読み込むことが可能な、磁気記憶装置の中に記憶されるアプリケーションを含むことが意図されている。また、一部の実施形態では、複数のソフトウェア発明を、別個のソフトウェア発明のままでありながら、より大きなプログラムのサブパーツとして実装することが可能である。また、一部の実施形態では、複数のソフトウェア発明を、個々のプログラムとして実装することも可能である。最終的に、本明細書で述べたソフトウェア発明を共に実装する個々のプログラムのいずれかの組み合わせは、本発明の範囲内にある。一部の実施形態では、ソフトウェアプログラムは、1つ以上の電子システム上で動作するようにインストールされた場合、ソフトウェアプログラムの動作を実行する1つ以上の特定の機械実装を定義する。
【0115】
図20は、本発明の一部の実施形態が実装される電子システム2000を概念的に示す図である。電子システム2000は、コンピュータ(例えば、デスクトップコンピュータ、パーソナルコンピュータ、タブレットコンピュータ等)、電話、PDA、またはいずれかの他の種類の電子デバイスであってもよい。そのような電子システムは、さまざまなタイプのコンピュータ可読媒体や、さまざまな他のタイプのコンピュータ可読媒体用のインタフェースを含んでいる。電子システム2000は、バス2005、処理ユニット2010、グラフィックス処理ユニット(GPU)2015、システムメモリ2020、ネットワーク2025、読み出し専用メモリ2030、永久記憶デバイス2035、入力デバイス2040、出力デバイス2045を含んでいる。
【0116】
バス2005は、電子システム2000の多数の内部デバイスを通信で接続するシステムバス、ペリフェラルバス、チップセットバスのすべてを集合的に表している。例えば、バス2005は、処理ユニット2010を、読み出し専用メモリ2030と、GPU2015と、システムメモリ2020と、永久記憶デバイス2035とに通信で接続する。
【0117】
これらの各種のメモリユニットから、処理ユニット2010は、本発明のプロセスを実行することを目的として、実行すべき命令と、処理すべきデータとを検索する。処理ユニットは、単一のプロセッサであってもよいし、別の実施形態ではマルチコアプロセッサであってもよい。一部の命令は、GPU2015に渡され、GPU2015によって実行される。GPU2015は、各種の計算をオフロードする(offload)ことや、処理ユニット2010によって提供される画像処理を補完することができる。
【0118】
読み出し専用メモリ(ROM)2030は、電子システムの処理ユニット2010および他のモジュールが必要とする静的データや命令を記憶する。他方、永久記憶デバイス2035は、読み書き可能メモリデバイスである。このデバイスは、電子システム2000がオフである場合でも命令およびデータを記憶する、不揮発性のメモリユニットである。本発明の一部の実施形態では、永久記憶デバイス2035として、(磁気ディスクまたは光ディスクおよびその対応するディスクドライブのような)大容量記憶装置を用いる。
【0119】
他の実施形態では、永久記憶デバイスとして、(フロッピィディスク、フラッシュメモリデバイス等およびその対応するディスクドライブのような)取り外し可能記憶デバイスを用いる。永久記憶デバイス2035と同様、システムメモリ2020は、読み書き可能メモリデバイスである。しかし、永久記憶デバイス2035とは異なり、システムメモリ2020は、ランダムアクセスメモリのような、揮発性の読み書き可能メモリである。システムメモリ2020は、プロセッサがランタイム時に必要とする一部の命令とデータとを記憶する。一部の実施形態では、本発明のプロセスは、システムメモリ2020と、永久記憶デバイス2035と、および/または、読み出し専用メモリ2030との中に記憶される。例えば、さまざまなメモリユニットが、一部の実施形態によるマルチメディアクリップを処理するための命令を含んでいる。これらのさまざまなメモリユニットから、処理ユニット2010は、一部の実施形態のプロセスを実行することを目的として、実行すべき命令と処理すべきデータとを検索する。
【0120】
また、バス2005は、入力デバイス2040および出力デバイス2045に接続している。入力デバイス2040によって、ユーザは、情報を伝達することができ、電子システムへのコマンドを選択することができる。入力デバイス2040には、英数字キーボードと、ポインタデバイス(「カーソル制御デバイス」とも呼ばれる)と、カメラ(例えばウェブカメラ)と、マイクロフォンまたは音声コマンド等を受信するための同様のデバイスとが含まれる。出力デバイス2045は、電子システムによって生成された画像を表示したり、その他の方法でデータを出力したりする。出力デバイス2045には、プリンタや表示デバイス、例えばブラウン管(CRT)または液晶ディスプレイ(LCD)だけでなく、スピーカまたは同様の音声出力デバイスも含まれる。一部の実施形態は、入力デバイスとしても出力デバイスとしても機能するタッチスクリーンのようなデバイスを含んでいる。
【0121】
最後に、
図20に示すように、バス2005は、電子システム2000を、ネットワークアダプタ(図示せず)を介してネットワーク2025に接続する。このようにして、このコンピュータは、(例えば、ローカルエリアネットワーク(「LAN」)やワイドエリアネットワーク(「WAN」)やイントラネットのような)コンピュータのネットワークの一部であることもあれば、例えばインターネットのような、ネットワークのネットワークの一部であることもある。電子システム2000のうちのいずれかの構成部品あるいはすべての構成部品が、本発明に関連して用いられてもよい。
【0122】
一部の実施形態は、例えば、機械可読媒体またはコンピュータ可読媒体(あるいは、コンピュータ可読記憶メディア、機械可読メディア、または機械可読記憶メディアとも呼ばれる)の中にコンピュータプログラム命令を記憶するマイクロプロセッサ、記憶装置およびメモリのような、電子的構成部品を含んでいる。そのようなコンピュータ可読媒体の一部の例として、RAM、ROM,読み出し専用コンパクトディスク(CD−ROM)、追記型コンパクトディスク(CD−R)、書換可能コンパクトディスク(CD−RW)、読み出し専用デジタル多用途ディスク(例えば、DVD−ROM、二層式DVD−ROM)、各種の追記型/書換可能DVD(例えばDVD−RAM、DVD−RW、DVD+RW等)、フラッシュメモリ(例えばSDカード、ミニSDカード、マイクロSDカード等)、磁気および/またはソリッドステート・ハード・ドライブ、読み出し専用および追記型Blu−Ray(登録商標)ディスク、ウルトラ・デンシティ・オプティカル・ディスク、いずれかの他の光または磁気媒体、フロッピィディスク等がある。コンピュータ可読媒体は、少なくとも1つの処理ユニットによって実行可能であって各種の動作を行うための命令の集合を含むコンピュータプログラムを記憶してもよい。コンピュータプログラムまたはコンピュータコードの例として、コンパイラによって生成されるもののようなマシンコードや、コンピュータ、電子部品、インタプリタを用いたマイクロプロセッサによって実行される上位レベルコードを含むファイル等がある。
【0123】
上記の議論は、ソフトウェアを実行するマイクロプロセッサまたはマルチコアプロセッサに主に言及しているが、一部の実施形態は、1つ以上の集積回路、例えば特定用途向け集積回路(ASIC)またはフィールド・プログラマブル・ゲート・アレイ(FPGA)によって行われる。一部の実施形態では、そのような集積回路は、回路自体に記憶された命令を実行する。加えて、一部の実施形態は、プログラム可能論理デバイス(PLD)、ROMまたはRAMデバイスの中に記憶されたソフトウェアを実行する。
【0124】
本明細書および本願のいずれかの請求項では、「コンピュータ」、「サーバ」、「プロセッサ」、「メモリ」という用語はすべて、電子デバイスまたは他の技術的デバイスのことを言う。これらの用語は、人間もしくは人間のグループを除外する。本明細書において、表示または表示手段という用語は、電子デバイス上に表示することを意味する。本明細書および本願のいずれかの請求項では、「コンピュータ可読媒体」「コンピュータ可読メディア」および「機械可読媒体」という用語は、コンピュータによって読み取られうる形式で情報を記憶する、有形の物理的対象に完全に限定される。これらの用語は、いずれかの無線信号、有線ダウンロード信号、およびいずれかの他の一過性の信号を除外する。
【0125】
本発明について、多数の特定の詳細を参照しながら記述してきたが、当業者は認識するであろうが、本発明は、本発明の趣旨から逸脱することなく、他の特定の形態において実施されうる。加えて、(
図7、
図13、
図17を含めて)複数の図面が、プロセスを概念的に示している。これらのプロセスの特定の各動作は、図示されて記述されている順序どおりに行われないことがある。特定の各動作は、連続した一続きの動作として行われないことがあり、また、異なる実施形態では、異なる特定の動作が行われることがある。さらに、プロセスが、複数のサブプロセスを用いて実装されたり、より大きなマクロプロセスの一部として実装されたりしてもよいだろう。従って、当業者であれば、本発明は、前述の例示的な詳細に限定されるのではなく、添付の請求項によって定義されることになるということを理解するであろう。